05.08.2014 Views

Programming Manual Elektor Proton Robot - ELEKTOR.se

Programming Manual Elektor Proton Robot - ELEKTOR.se

Programming Manual Elektor Proton Robot - ELEKTOR.se

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Two push buttons (red and black) on the body<br />

Pushing the buttons will have effect on the Led’s and the buzzer<br />

PIC16F887<br />

ATMEGA32<br />

Demoprogram Flowcode PIC V4<br />

Demoprogram Flowcode AVR V4<br />

PROTDEM_FCPIC_SWI.fcf<br />

PROTDEM_FCAVR_SWI.fcf_avr<br />

Demoprogram Hitech C lite for PIC<br />

Demoprogram WinAVR C for AVR<br />

#include <br />

#include <br />

#include "PIC_PROTON_LIB.h"<br />

#define _XTAL_FREQ 19660800<br />

__CONFIG(0x2ff2); // <strong>se</strong>t HS Xtal etc<br />

__CONFIG(0x3fff);<br />

void main()<br />

{<br />

// init AD & Option reg<br />

ANSEL = 0;<br />

ANSELH = 0;<br />

OPTION = 0xC0;<br />

// end of init<br />

__delay_ms(250);<br />

__delay_ms(250); //wait for stable power supply<br />

TRISB |=0b00110000; //B4-B5 input - SWITCHES<br />

TRISD = 0x00; // PORTD = OUTPUT = leds<br />

TRISA &= ~0x10; //PIN A4 =OUT= LS<br />

}<br />

while (1)<br />

{<br />

if (PORTB & 0b00010000) //red switch<br />

{<br />

PORTD = 0x0F;<br />

PORTA |= 0x10; //pin A4 High<br />

__delay_ms(1);<br />

PORTA &= ~0x10; //pin A4 Low<br />

__delay_ms(1);<br />

}<br />

el<strong>se</strong> if (PORTB & 0b00100000) //black switch<br />

{<br />

PORTD = 0xF0;<br />

PORTA |= 0x10; //pin A4 High<br />

__delay_us(500);<br />

PORTA &= ~0x10; //pin A4 Low<br />

__delay_us(500);<br />

}<br />

el<strong>se</strong> PORTD = 0x00;<br />

}<br />

#define F_CPU 19660800UL<br />

#include <br />

#include "AVR_PROTON_LIB.h"<br />

int main ( void )<br />

{<br />

_delay_ms(250);<br />

_delay_ms(250); //wait for stable power supply<br />

DDRD &=~0b00001100; //D2 and D3 input - SWITCHES<br />

DDRB = 0xFF; // PORTB = OUTPUT = leds<br />

DDRD |= 0x80; //PIN D7 = output<br />

}<br />

while (1)<br />

{<br />

if (PIND & 0b00000100) //red switch<br />

{<br />

PORTB = 0x0F;<br />

PORTD |= 0x80; //pin D7 High<br />

_delay_ms(1);<br />

PORTD &= ~0x80; //pin D7 Low<br />

_delay_ms(1);<br />

}<br />

el<strong>se</strong> if (PIND & 0b00001000) //black switch<br />

{<br />

PORTB = 0xF0;<br />

PORTD |= 0x80; //pin D7 High<br />

_delay_us(500);<br />

PORTD &= ~0x80; //pin D7 Low<br />

_delay_us(500);<br />

}<br />

el<strong>se</strong> PORTB = 0x00;<br />

}<br />

Bart Huyskens <strong>Manual</strong> <strong>Elektor</strong> <strong>Proton</strong> V1.0 3 April 2011 40

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!