C HAPTER 2 PIC 16F887 M ICROCONTROLLER Eng. Hazem W. Marar
P IC 16F887
P ORTS
A NALOG P INS
I N M IKRO C
A NSEL AND A NSELH
T URN LED ON void main() { TRISB = 0 ; // set PORTB as OUTPUT PORTB = 0xff; // turn all LEDs ON }
W RITE A CODE TO TOGGLE AN LED
D ELAYS void main( ) { TRISB = 0 ; // set PORTB as OUTPUT While(1) // forever { PORTB = 0xff ; // turn all LEDs ON Delay_ms(500) ; // wait 500 ms PORTB = 0 ; // turn all LEDs OFF Delay_ms(500) ; // wait 500 ms } }
U SE AN INPUT SIGNAL ( PUSH BUTTON ) TO CONTROL AN LED
I NPUT SIGNAL void main( ) { TRISB = 0x01 ; // set 1 st bit of PORTB as INPUT While(1) // forever { if(PORTB.F0 ==1) { PORTB.F1 = 1;} if(PORTB.F0 ==0) { PORTB.F1 = 0;}}
U SE AN INPUT SIGNAL ( PUSH BUTTON ) TO TOGGLE AN LED
TOGGLE unsigned short LastButton =0; void main(){ TRISC = 0x01 ; PORTC=0x00; while(1) { if(PORTC.F0 ==1 && LastButton ==0) { PORTC.F1=~PORTC.F1; LastButton=1;} else { LastButton = PORTC.F0; } } }
B OUNCING EFFECT unsigned short current; unsigned short debounce ( ) { current = PORTB.F0; if( LastButton != current) { delay_ms(5); current = PORTB.F0;} return current; }
U SE PUSH BUTTONS TO CHANGE FLASHING DELAYS
U SE A SINGLE PUSH BUTTON TO CHANGE FLASHING DELAYS
M ANAGING I NDIVIDUAL B ITS
U SE AN INPUT SIGNAL ( PUSH BUTTON ) TO CONTROL A LED MATRIX
U SE PUSH BUTTONS TO CONTROL MULTIPLE LED MATRICES
L AB EXERCISE Chapter 2