Programming Manual Elektor Proton Robot - ELEKTOR.se
Programming Manual Elektor Proton Robot - ELEKTOR.se
Programming Manual Elektor Proton Robot - ELEKTOR.se
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