![Page 1: C HAPTER 2 PIC 16F887 M ICROCONTROLLER Eng. Hazem W. Marar](https://reader030.vdocuments.net/reader030/viewer/2022032701/56649c7d5503460f949324d4/html5/thumbnails/1.jpg)
CHAPTER 2PIC 16F887 MICROCONTROLLEREng. Hazem W. Marar
![Page 2: C HAPTER 2 PIC 16F887 M ICROCONTROLLER Eng. Hazem W. Marar](https://reader030.vdocuments.net/reader030/viewer/2022032701/56649c7d5503460f949324d4/html5/thumbnails/2.jpg)
PIC 16F887
![Page 3: C HAPTER 2 PIC 16F887 M ICROCONTROLLER Eng. Hazem W. Marar](https://reader030.vdocuments.net/reader030/viewer/2022032701/56649c7d5503460f949324d4/html5/thumbnails/3.jpg)
PORTS
![Page 4: C HAPTER 2 PIC 16F887 M ICROCONTROLLER Eng. Hazem W. Marar](https://reader030.vdocuments.net/reader030/viewer/2022032701/56649c7d5503460f949324d4/html5/thumbnails/4.jpg)
ANALOG PINS
![Page 5: C HAPTER 2 PIC 16F887 M ICROCONTROLLER Eng. Hazem W. Marar](https://reader030.vdocuments.net/reader030/viewer/2022032701/56649c7d5503460f949324d4/html5/thumbnails/5.jpg)
IN MIKROC
![Page 6: C HAPTER 2 PIC 16F887 M ICROCONTROLLER Eng. Hazem W. Marar](https://reader030.vdocuments.net/reader030/viewer/2022032701/56649c7d5503460f949324d4/html5/thumbnails/6.jpg)
ANSEL AND ANSELH
![Page 7: C HAPTER 2 PIC 16F887 M ICROCONTROLLER Eng. Hazem W. Marar](https://reader030.vdocuments.net/reader030/viewer/2022032701/56649c7d5503460f949324d4/html5/thumbnails/7.jpg)
TURN LED ON
void main(){TRISB = 0 ; // set PORTB as OUTPUTPORTB = 0xff; // turn all LEDs ON}
![Page 8: C HAPTER 2 PIC 16F887 M ICROCONTROLLER Eng. Hazem W. Marar](https://reader030.vdocuments.net/reader030/viewer/2022032701/56649c7d5503460f949324d4/html5/thumbnails/8.jpg)
WRITE A CODE TO TOGGLE AN LED
![Page 9: C HAPTER 2 PIC 16F887 M ICROCONTROLLER Eng. Hazem W. Marar](https://reader030.vdocuments.net/reader030/viewer/2022032701/56649c7d5503460f949324d4/html5/thumbnails/9.jpg)
DELAYS 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}}
![Page 10: C HAPTER 2 PIC 16F887 M ICROCONTROLLER Eng. Hazem W. Marar](https://reader030.vdocuments.net/reader030/viewer/2022032701/56649c7d5503460f949324d4/html5/thumbnails/10.jpg)
USE AN INPUT SIGNAL (PUSH BUTTON) TO CONTROL AN LED
![Page 11: C HAPTER 2 PIC 16F887 M ICROCONTROLLER Eng. Hazem W. Marar](https://reader030.vdocuments.net/reader030/viewer/2022032701/56649c7d5503460f949324d4/html5/thumbnails/11.jpg)
INPUT SIGNAL void main( )
{TRISB = 0x01 ; // set 1st bit of PORTB as INPUT
While(1) // forever{
if(PORTB.F0 ==1){
PORTB.F1 = 1;}
if(PORTB.F0 ==0){
PORTB.F1 = 0;}
}}
![Page 12: C HAPTER 2 PIC 16F887 M ICROCONTROLLER Eng. Hazem W. Marar](https://reader030.vdocuments.net/reader030/viewer/2022032701/56649c7d5503460f949324d4/html5/thumbnails/12.jpg)
USE AN INPUT SIGNAL (PUSH BUTTON) TO TOGGLE AN LED
![Page 13: C HAPTER 2 PIC 16F887 M ICROCONTROLLER Eng. Hazem W. Marar](https://reader030.vdocuments.net/reader030/viewer/2022032701/56649c7d5503460f949324d4/html5/thumbnails/13.jpg)
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;
} } }
![Page 14: C HAPTER 2 PIC 16F887 M ICROCONTROLLER Eng. Hazem W. Marar](https://reader030.vdocuments.net/reader030/viewer/2022032701/56649c7d5503460f949324d4/html5/thumbnails/14.jpg)
BOUNCING EFFECT
unsigned short current;
unsigned short debounce ( )
{ current = PORTB.F0; if( LastButton != current) { delay_ms(5); current = PORTB.F0;} return current;}
![Page 15: C HAPTER 2 PIC 16F887 M ICROCONTROLLER Eng. Hazem W. Marar](https://reader030.vdocuments.net/reader030/viewer/2022032701/56649c7d5503460f949324d4/html5/thumbnails/15.jpg)
USE PUSH BUTTONS TO CHANGE FLASHING DELAYS
![Page 16: C HAPTER 2 PIC 16F887 M ICROCONTROLLER Eng. Hazem W. Marar](https://reader030.vdocuments.net/reader030/viewer/2022032701/56649c7d5503460f949324d4/html5/thumbnails/16.jpg)
USE A SINGLE PUSH BUTTON TO CHANGE FLASHING DELAYS
![Page 17: C HAPTER 2 PIC 16F887 M ICROCONTROLLER Eng. Hazem W. Marar](https://reader030.vdocuments.net/reader030/viewer/2022032701/56649c7d5503460f949324d4/html5/thumbnails/17.jpg)
MANAGING INDIVIDUAL BITS
![Page 18: C HAPTER 2 PIC 16F887 M ICROCONTROLLER Eng. Hazem W. Marar](https://reader030.vdocuments.net/reader030/viewer/2022032701/56649c7d5503460f949324d4/html5/thumbnails/18.jpg)
USE AN INPUT SIGNAL (PUSH BUTTON) TO CONTROL A LED MATRIX
![Page 19: C HAPTER 2 PIC 16F887 M ICROCONTROLLER Eng. Hazem W. Marar](https://reader030.vdocuments.net/reader030/viewer/2022032701/56649c7d5503460f949324d4/html5/thumbnails/19.jpg)
USE PUSH BUTTONS TO CONTROL MULTIPLE LED MATRICES
![Page 20: C HAPTER 2 PIC 16F887 M ICROCONTROLLER Eng. Hazem W. Marar](https://reader030.vdocuments.net/reader030/viewer/2022032701/56649c7d5503460f949324d4/html5/thumbnails/20.jpg)
LAB EXERCISEChapter 2