ºÝºÝߣ
Submit Search
Tutorial 877 a_tudedenkho
?
0 likes
?
300 views
nhan10cdt1
Follow
c¨¢c b¨¤i t?p c? b?n t? d? ??n kh¨® c?a pic16f877A
Read less
Read more
1 of 14
Download now
Download to read offline
More Related Content
Tutorial 877 a_tudedenkho
1.
Ng??i b¨¢o c¨¢o:
Nguy?n Trung Ch¨ªnh T¨¤i li?u: TUT01.03 Ng¨¤y: 7/12/2005 Trang: 1/14 Tutorial 01.03 G?i ??n: ?o¨¤n Hi?p, Do?n Minh ??ng, picvietnam@googlegroups.com N?i dung: B?I 1: PIC16F877A T? D? T?I KH? MICROSOFT WORD T¨®m t?t: Tutorial post l¨ºn lu?ng ¡°PIC16F877A T? D? T?I KH?¡± thu?c chuy¨ºn m?c ¡°C? B?N V? VI ?I?U KHI?N V? PIC¡±. B¨¤i ??u ti¨ºn bao g?m n?i dung sau: ?ng d?ng ??n gi?n nh?t d¨¤nh cho vi ?i?u khi?n PIC16F877A, ?¨® l¨¤ xu?t d? li?u ra m?t port n¨¤o ?¨® c?a vi ?i?u khi?n. C¨¢c b??c ti?n h¨¤nh bao g?m: _ B??c 1: X?y d?ng m?ch test. _ B??c 2: X?y d?ng ch??ng tr¨¬nh. _ B??c 3: Nh?n x¨¦t v¨¤ k?t lu?n. M?t s? ??c ?i?m v? c¨¢c port ?i?u khi?n c?a vi ?i?u khi?n PIC16F877A. Ch??ng tr¨¬nh v¨¤ s? ?? nguy¨ºn l¨ª m?ch test ?i k¨¨m. 1. ?i?u khi?n c¨¢c port I/O ??y l¨¤ m?t trong nh?ng ?ng d?ng ??n gi?n nh?t gi¨²p ta l¨¤m quen v?i vi ?i?u khi?n. Trong ?ng d?ng n¨¤y ta s? xu?t m?t gi¨¢ tr? n¨¤o ?¨® ra m?t PORT c?a vi ?i?u khi?n, ch?ng h?n nh? PORTB. Gi¨¢ tr? ??a ra PORTB s? ???c ki?m tra b?ng c¨¢ch g?n c¨¢c LED v¨¤o c¨¢c ch?n I/O c?a PORT ?¨®. 1.1. X?y d?ng m?ch test cho ?ng d?ng Tr??c ti¨ºn ta c¨´ng x?y d?ng m?ch test cho ?ng d?ng n¨¤y. Ngo?i tr? vi ?i?u khi?n PIC16F877A, c¨¢c th¨¤nh ph?n c¨°n l?i trong m?ch ??u r?t th?ng d?ng v¨¤ d? d¨¤ng t¨¬m th?y tr¨ºn th? tr??ng, do ?¨® h?y thi c?ng m?ch test n¨¤y ?? ta c¨® th? xem x¨¦t c¨¢c hi?u ?ng c? th? c?a vi ?i?u khi?n m?t c¨¢ch tr?c quan v¨¤ nghi¨ºm t¨²c, v¨¬ sau b¨¤i n¨¤y, c¨¢c b?n s? th?y r?ng ta kh?ng th? ng?i m?t ch? ??c s¨¢ch hay t¨¤i li?u m¨¤ c¨® th? l??ng tr??c ???c h?t nh?ng hi?u ?ng m¨¤ vi ?i?u khi?n t?o ra, th?m ch¨ª l¨¤ c¨¢c hi?u ?ng t? ?ng d?ng ??n gi?n nh?t n¨¤y. Do ??y l¨¤ b¨¤i ??u ti¨ºn, cho n¨ºn c¨¢c b??c ti?n h¨¤nh s? r?t nghi¨ºm t¨²c v¨¤ th?n tr?ng. N¨¤o, b?t ??u!
2.
Ng??i b¨¢o c¨¢o:
Nguy?n Trung Ch¨ªnh T¨¤i li?u: TUT01.03 Ng¨¤y: 7/12/2005 Trang: 2/14 Ta c¨® vi ?i?u khi?n PIC16F877A v?i s? ?? ch?n nh? sau: PIC16F877A 8 9 10 12 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 1 13 2 3 4 5 6 7 33 34 35 36 37 38 39 40 11 32 RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7 GND OSC2/CLKOUT RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCK/SCL RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RC4/SDI/SDA RC5/SDO RC6/TX/CK RC7/RX/DT RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7 GND MCLR/VPP OSC1/CLKIN RA0/AN0 RA1/AN1 RA2/AN2/VREF-/CVREF RA3/AN3/VREF+ RA4/TOCKI/C1OUT RA5/AN4/SS/C2OUT RBO/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD VDD VDD H¨¬nh 1.1 Vi ?i?u khi?n PIC16F877A. B?y gi? ta h?y c?p ngu?n cho vi ?i?u khi?n h?at ??ng, v¨¤ c?u h?i ??t ra l¨¤ c?p ngu?n nh? th? n¨¤o? T?t nhi¨ºn, ngu?n cung c?p s? l¨¤ ngu?n 5V, v?n ?? ? ??y l¨¤, vi ?i?u khi?n PIC16F877A c¨® ??n hai ch?n c?p ngu?n VCC v¨¤ hai ch?n GND. C¨¢c b?n c¨® c?m th?y b?i r?i v¨¤ th?c m?c l¨¤ t?i sao l?i c¨® ??n 4 ch?n c?p ngu?n nh? v?y kh?ng? V¨¤ sau ??y l¨¤ c?u tr? l?i, ta ph?i c?p ngu?n v¨¤o t?t c? c¨¢c ch?n ngu?n tr¨ºn, nh? v?y th¨¬ vi ?i?u khi?n m?i ho?t ??ng ???c. V¨¤ m?ch nguy¨ºn l¨ª sau khi c?p ngu?n nh? sau:
3.
Ng??i b¨¢o c¨¢o:
Nguy?n Trung Ch¨ªnh T¨¤i li?u: TUT01.03 Ng¨¤y: 7/12/2005 Trang: 3/14 HI PIC16F877A 8 9 10 12 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 1 13 2 3 4 5 6 7 33 34 35 36 37 38 39 40 11 32 RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7 GND OSC2/CLKOUT RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCK/SCL RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RC4/SDI/SDA RC5/SDO RC6/TX/CK RC7/RX/DT RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7 GND MCLR/VPP OSC1/CLKIN RA0/AN0 RA1/AN1 RA2/AN2/VREF-/CVREF RA3/AN3/VREF+ RA4/TOCKI/C1OUT RA5/AN4/SS/C2OUT RBO/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD VDD VDD 0 0 HI H¨¬nh 1.2 Vi ?i?u khi?n PIC16F877A sau khi c?p ngu?n. Ti?p theo, ngo¨¤i ngu?n cung c?p, ta c?n ph?i cung c?p xung ho?t ??ng cho vi ?i?u khi?n. PIC16F877A v¨¤ c¨¢c vi ?i?u khi?n n¨®i chung cho ph¨¦p nhi?u c¨¢ch cung c?p xung ho?t ??ng kh¨¢c nhau. ? ??y ta s? d¨´ng th?ch anh l¨¤m ngu?n xung, v¨¤ c?ng vi?c c?a ta l¨¤ g?n th?ch anh v¨¤o hai ch?n 13 v¨¤ 14 c?a vi ?i?u khi?n. Tuy nhi¨ºn c¨¢c b?n c?ng bi?t r?ng, c¨¢c xung dao ??ng do th?ch anh t?o ra c?ng kh?ng th?c s? ?n ??nh m?t c¨¢ch tuy?t ??i, v¨¤ c¨¢ch kh?c ph?c l¨¤ g?n th¨ºm c¨¢c t? l?c v¨¤o th?ch anh. Nh? v?y, c?n ph?i g?n c¨¢c t? nh? th? n¨¤o v¨¤ gi¨¢ tr? bao nhi¨ºu? C?u tr? l?i n?m trong c¨¢i datasheet. C¨¢c b?n l?t c¨¢i datasheet PIC16F87xA do Microchip cung c?p ra. Trang 145, h¨¬nh 4.1 h??ng d?n c¨¢ch g?n c¨¢c t? C1, C2 v¨¤o th?ch anh, v¨¤ trang 146, b?ng 14-2 h??ng d?n c¨¢ch ch?n gi¨¢ tr? cho t?. ? ??y la d¨´ng th?ch anh 4 MHz n¨ºn t? C1 v¨¤ C2 s? c¨® gi¨¢ tr? 15 pF. M?t ?i?m ?¨¢ng ch¨² ? n?a l¨¤ ch?t l??ng th?ch anh t?i th? tr??ng Vi?t Nam kh?ng th?c s? t?t, cho n¨ºn ?? t?ng s? ?n ??nh, ta s? d¨´ng t? 30 pF. Xong! V¨¤ sau ??y l¨¤ m?ch nguy¨ºn l¨ª sau khi g?n th¨ºm th?ch anh:
4.
Ng??i b¨¢o c¨¢o:
Nguy?n Trung Ch¨ªnh T¨¤i li?u: TUT01.03 Ng¨¤y: 7/12/2005 Trang: 4/14 HI PIC16F877A 8 9 10 12 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 1 13 2 3 4 5 6 7 33 34 35 36 37 38 39 40 11 32 RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7 GND OSC2/CLKOUT RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCK/SCL RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RC4/SDI/SDA RC5/SDO RC6/TX/CK RC7/RX/DT RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7 GND MCLR/VPP OSC1/CLKIN RA0/AN0 RA1/AN1 RA2/AN2/VREF-/CVREF RA3/AN3/VREF+ RA4/TOCKI/C1OUT RA5/AN4/SS/C2OUT RBO/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD VDD VDD C1 30 pF 0 4 MHz 0 HI 0 C2 30 pF H¨¬nh 1.3 PIC16F877A sau khi c?p ngu?n v¨¤ th¨ºm th?ch anh. B?y gi? l¨¤ m?ch reset cho vi ?i?u khi?n s? d?ng ch? ?? reset t? ch?n MCLR c?a vi ?i?u khi?n (ch?n s? 1). Ta ?? bi?t vi ?i?u khi?n s? ???c reset khi ch?n MCLR chuy?n t? m?c logic 1 xu?ng m?c logic 0 v¨¤ ta s? d?ng m?t c?ng t?c c? kh¨ª ?? th?c hi?n vi¨ºc chuy?n ??i ?¨®, nh? v?y ta m?i c¨® th? t¨¢c ??ng cho vi ?i?u khi?n reset b?ng tay. L?i m?t c?u h?i n?a, ph?i thi?t k? m?ch nh? th? n¨¤o ?? th?c hi?n ???c c?ng vi?c ?¨®? D? th?i, ta c¨® th? thi?t k? nh? h¨¬nh 1.4. B¨¬nh th??ng c?ng t?c h?, ch?n MCLR c?a vi ?i?u khi?n mang m?c logic 1 (v¨¬ ???c n?i v?i ngu?n qua ?i?n tr? h?n d¨°ng R1). ?i?n tr? R1 ph?i c¨® gi¨¢ tr? nh? h?n 40K ?? b?o ??m ?i?n ¨¢p cung c?p cho vi ?i?u khi?n. Khi ?n c?ng t?c, ch?n MCLR ???c n?i v?i GND n¨ºn mang m?c logic 0, khi ?¨® vi ?i?u khi?n s? ???c reset.
5.
Ng??i b¨¢o c¨¢o:
Nguy?n Trung Ch¨ªnh T¨¤i li?u: TUT01.03 Ng¨¤y: 7/12/2005 Trang: 5/14 4 MHz HI R1 0 HI SW1 12 0 0 0 HI PIC16F877A 8 9 10 12 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 1 13 2 3 4 5 6 7 33 34 35 36 37 38 39 40 11 32 RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7 GND OSC2/CLKOUT RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCK/SCL RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RC4/SDI/SDA RC5/SDO RC6/TX/CK RC7/RX/DT RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7 GND MCLR/VPP OSC1/CLKIN RA0/AN0 RA1/AN1 RA2/AN2/VREF-/CVREF RA3/AN3/VREF+ RA4/TOCKI/C1OUT RA5/AN4/SS/C2OUT RBO/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD VDD VDD C1 30 pF C2 30 pF H¨¬nh 1.4 PIC16F877A sau khi ti?p t?c th¨ºm v¨¤o m?ch seset. ??n ??y xem nh? ta ?? ho¨¤n th¨¤nh nh?ng th¨¤nh ph?n c? b?n nh?t cho m?t m?ch test d¨¤nh cho vi ?i?u khi?n PIC16F877A. Ta ti?p t?c ph¨¢t tri?n c¨¢c th¨¤nh ph?n ti?p theo ?? test c¨¢c port c?a vi ?i?u khi?n. PORTB c?a vi ?i?u khi?n s? ???c test ??u ti¨ºn. M?c ?¨ªch c?a m?ch test l¨¤ ki?m tra xem c¨¢c gi¨¢ tr? ta xu?t ra port b?ng ch??ng tr¨¬nh c¨® ?¨²ng hay kh?ng, v¨¤ ?? ph¨¢t hi?n ???c c¨¢c gi¨¢ tr? ?¨® m?t c¨¢ch tr?c quan, ta s? d?ng 8 LED g?n v¨¤o 8 ch?n trong PORTB c?a vi ?i?u khi?n. Khi ta xu?t gi¨¢ tr? mang m?c logic 1 ra m?t ch?n n¨¤o ?¨® trong PORTB c?a vi ?i?u khi?n, LED t??ng ?ng g?n v?i ch?n ?¨® s? s¨¢ng l¨ºn (do l¨²c n¨¤y ?i?n ¨¢p ? ch?n c?a vi ?i?u khi?n l¨¤ 5V) v¨¤ ng??c l?i, n?u gi¨¢ tr? xu?t ra mang m?c logic 0 th¨¬ LED s? kh?ng s¨¢ng (do l¨²c n¨¤y ?i?n ¨¢p ? ch?n c?a vi ?i?u khi?n l¨¤ 0V). Tuy nhi¨ºn, ta c?n ch¨² ? ??n m?t ?i?m quan tr?ng n?a, ?¨® l¨¤ ?? LED s¨¢ng b¨¬nh th??ng, ?i?n ¨¢p ??t v¨¤o hai ??u c?a LED v¨¤o kho?ng 1,8V ??n 2,2V, trong khi ?i?n ¨¢p t?i ch?n I/O c?a vi ?i?u khi?n khi ta xu?t ra m?c logic 1 s?
6.
Ng??i b¨¢o c¨¢o:
Nguy?n Trung Ch¨ªnh T¨¤i li?u: TUT01.03 Ng¨¤y: 7/12/2005 Trang: 6/14 l¨¤ 5V. Do ?¨® c?n m?c th¨ºm ?i?n tr? h?n d¨°ng cho LED (c¨® th? d¨´ng ?i?n tr? c¨® gi¨¢ tr? 0.33 K). D?a v¨¤o c¨¢c ?i?m ?? ph?n t¨ªch ? tr¨ºn ta c¨® th? x?y d?ng ???c m?ch nguy¨ºn l¨ª ho¨¤n ch?nh cho ?ng d?ng test PORTB nh? sau: R5 D2 4 MHz HI R6 D7 D5 D4 0 R2 R1 0 R9 D3 HI SW1 12 0 R7 D8 0 D1 0 R3 HI R4 PIC16F877A 8 9 10 12 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 1 13 2 3 4 5 6 7 33 34 35 36 37 38 39 40 11 32 RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7 GND OSC2/CLKOUT RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCK/SCL RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RC4/SDI/SDA RC5/SDO RC6/TX/CK RC7/RX/DT RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7 GND MCLR/VPP OSC1/CLKIN RA0/AN0 RA1/AN1 RA2/AN2/VREF-/CVREF RA3/AN3/VREF+ RA4/TOCKI/C1OUT RA5/AN4/SS/C2OUT RBO/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD VDD VDD R8 C1 30 pF D6 C2 30 pF H¨¬nh 1.5 M?ch nguy¨ºn l¨ª ho¨¤n ch?nh cho ?ng d?ng test PORTB. Nh? v?y ??n ??y ta ?? ho¨¤n t?t vi?c thi?t k? ph?n c?ng cho ?ng d?ng. Trong ph?n ti?p theo ta ti?p t?c b¨¤n ??n vi?c vi?t ch??ng tr¨¬nh cho ?ng d?ng tr¨ºn. 1.2. X?y d?ng ch??ng tr¨¬nh xu?t d? li?u ra PORTB vi ?i?u khi?n PIC16F877A Tr??c ti¨ºn, ?? vi?t ???c ch??ng tr¨¬nh, ta c?n t¨¬m hi?u m?t s? ??c ?i?m v? c?u tr¨²c c?a vi ?i?u khi?n PIC16F877A v¨¤ c¨² ph¨¢p c?a m?t s? l?nh s? d?ng trong ch??ng tr¨¬nh.
7.
Ng??i b¨¢o c¨¢o:
Nguy?n Trung Ch¨ªnh T¨¤i li?u: TUT01.03 Ng¨¤y: 7/12/2005 Trang: 7/14 1.2.1 M?t s? ??c ?i?m v? c?u tr¨²c PORTB vi ?i?u khi?n PIC16F877A. Ta c?n ch¨² ? ??n c¨¢c ?i?m sau: - PORTB c?a vi ?i?u khi?n PIC16F877A c?ng nh? c¨¢c port ?i?u khi?n kh¨¢c ??u cho ph¨¦p truy?n nh?n d? li?u theo hai h??ng, c¨® ngh?a l¨¤ ta ???c ph¨¦p ??c v¨¤ xu?t d? li?u ra port ?i?u khi?n. H??ng truy?n nh?n ???c thi?t l?p b?ng c¨¢ch ??a gi¨¢ tr? th¨ªch h?p v¨¤o thanh ghi TRISB. M?i bit trong thanh ghi ?i?u khi?n h??ng xu?t/nh?p cho m?t ch?n c?a port (bit 7 c?a thanh ghi TRISB ?i?u khi?n ch?n RB7, bit 6 c?a thanh ghi TRISB ?i?u khi?n ch?n RB6, ... ). N?u m?t bit trong thanh ghi TRISB mang m?c logic 0 th¨¬ vi ?i?u khi?n s? hi?u r?ng ch?n ?i?u khi?n b?i bit ?¨® l¨¤ ch?n xu?t d? li?u v¨¤ ng??c l?i, n?u m?t bit trong thanh ghi TRISB mang m?c logic 1 th¨¬ vi ?i?u khi?n s? hi?u r?ng ch?n ?i?u khi?n b?i bit ?¨® l¨¤ ch?n nh?p d? li?u. V¨ª d?, ta mu?n thi?t l?p ch?n RB3, RB2, RB1, RB0 c?a PORTB l¨¤ nh?p, ch?n PB7, RB6, RB5, RB4 c?a PORTB l¨¤ xu?t, khi ?¨® gi¨¢ tr? t??ng ?ng ??a v¨¤o thanh ghi TRISB s? l¨¤ ¡®00001111¡¯. - D? li?u nh?p v¨¤o hay xu?t ra PORTB s? ???c ch?a trong thanh ghi PORTB. V¨ª d?, gi? s? nh? t?t c? c¨¢c ch?n c?a PORTB ??u l¨¤ ch?n xu?t d? li?u, khi ?¨® mu?n ??a t?t c? c¨¢c ch?n c?a PORTB l¨ºn m?c logic 1, ta ch? vi?c ??a v¨¤o thanh ghi PORTB gi¨¢ tr? ¡®11111111¡¯. N?u t?t c? c¨¢c ch?n trong PORTB ??u l¨¤ ch?n nh?p d? li?u, mu?n bi?t ???c tr?ng th¨¢i m?c logic c?a t?ng ch?n ta ch? vi?c ??c gi¨¢ tr? c?a thanh ghi PORTB. - Trong c?u tr¨²c b? nh? d? li?u c?a PIC16F877A, thanh ghi PORTB n?m ? BANK 0, c¨°n thanh ghi TRISB n?m ? BANK 1. Ta ?? bi?t mu?n truy xu?t gi¨¢ tr? c?a m?t thanh ghi n¨¤o ?¨® trong b? nh? d? li?u c?a vi ?i?u khi?n PIC, tr??c ti¨ºn c?n ch?n BANK d? li?u ch?a thanh ghi ?¨®, v¨¤ vi?c ch?n BANK d? li?u ???c ?i?u khi?n b?i hai bit RP1:RP0 c?a thanh ghi STATUS. C? th? nh? sau: RP1:RP0 = 00 ch?n BANK 0. RP1:RP0 = 01 ch?n BANK 1. RP1:RP0 = 10 ch?n BANK 2. RP1:RP0 = 11 ch?n BANK 3. C¨¢c ??c ?i?m n¨¤y s? l¨¤ c? s? cho vi?c h¨¬nh th¨¤nh ch??ng tr¨¬nh xu?t d? li?u ra PORTB c?a vi ?i?u khi?n PIC16F877A.
8.
Ng??i b¨¢o c¨¢o:
Nguy?n Trung Ch¨ªnh T¨¤i li?u: TUT01.03 Ng¨¤y: 7/12/2005 Trang: 8/14 1.2.2 C¨¢c l?nh s? d?ng cho ch??ng tr¨¬nh Ph?n n¨¤y s? ?¨¨ c?p ??n c¨¢c l?nh s? d?ng trong ch??ng tr¨¬nh xu?t d? li?u ra PORTB c?a vi ?i?u khi?n PIC16F877A. Ta c?n s? d?ng c¨¢c l?nh sau: - L?nh BSF C¨² ph¨¢p: BSF thanhghi,bit (tham s? ¡°bit¡± mang gi¨¢ tr? t? 0 ??n 7). Ch?c n?ng: l?nh n¨¤y d¨´ng ?? ??a bit c¨® s? th? t? ch?a trong tham s? ¡°bit¡± c?a thanh ghi ch?a trong tham s? ¡°thanhghi¡± l¨ºn m?c logic 1. V¨ª d?: BSF PORTB,7 (bit 7 c?a thanh ghi PORTB sau l?nh n¨¤y s? mang m?c logic 1). - L?nh BCF C¨² ph¨¢p: BCF thanhghi,bit (tham s? bit mang gi¨¢ tr? t? 0 ??n 7) Ch?c n?ng: l?nh n¨¤y d¨´ng ?? ??a bit c¨® s? th? t? ch?a trong tham s? ¡°bit¡± c?a thanh ghi ch?a trong tham s? ¡°thanhghi¡± v? m?c logic 0. V¨ª d?: BCF PORTB,7 (bit 7 c?a thanh ghi PORTB sau l?nh n¨¤y s? mang m?c logic 0). - L?nh MOVLW C¨² ph¨¢p: MOVLW hangso (tham s? ¡°hangso¡± mang gi¨¢ tr? t? 0 ??n 255) Ch?c n?ng: ??a gi¨¢ tr? c?a tham s? ¡°hangso¡± v¨¤o thanh ghi W. Ta c¨® m?t s? ??nh d?ng v? tham s? ¡°hangso¡± nh? sau: ??nh ??ng s? hex: th¨ºm k¨ª t? ¡°0x¡± v¨¤o tr??c tham s? ¡°hangso¡±. V¨ª d?: MOVLW 0x5F (??a gi¨¢ tr? hex 5F v¨¤o thanh ghi W). ??nh dang s? th?p ph?n: th¨ºm k¨ª t? ¡°d¡± v¨¤o tr??c tham s? ¡°hangso¡±. V¨ª d?: MOVLW d¡¯15¡¯ (??a gi¨¢ tr? th?p ph?n 15 v¨¤o thanh ghi W). ??nh d?ng s? nh? ph?n: th¨ºm k¨ª t? ¡°b¡± tr??c tham s? ¡°hangso¡± V¨ª d?: MOVLW b¡¯10101010¡¯ (??a gi¨¢ tr? nh? ph?n 10101010 v¨¤o thanh ghi W).
9.
Ng??i b¨¢o c¨¢o:
Nguy?n Trung Ch¨ªnh T¨¤i li?u: TUT01.03 Ng¨¤y: 7/12/2005 Trang: 9/14 - L?nh MOVWF C¨² ph¨¢p: MOVWF thanhghi T¨¢c d?ng: ??a gi¨¢ tr? ch?a trong thanh ghi W v¨¤o thanh ghi ???c ch? ??nh b?i tham s? ¡°thanhghi¡±. V¨ª d?: MOVWF PORTB (??a gi¨¢ tr? ch?a trong thanh ghi W v¨¤o thanh ghi PORTB). - L?nh CLRF C¨² ph¨¢p: CLRF thanhghi T¨¢c dung: x¨®a thanh ghi ???c ch? ??nh b?i tham s? ¡°thanhghi¡±. V¨ª d?: CLRF PORTB (x¨®a thanh ghi PORTB). - L?nh GOTO C¨² ph¨¢p: GOTO label T¨¢c d?ng: nh?y t?i label ???c ch? ??nh b?i tham s? ¡°label¡±. V¨ª d?: GOTO next (nh?y t?i label ¡°next¡±). Ta th?y r?ng trong t?p l?nh c?a vi ?i?u khi?n PIC, kh?ng c¨® l?nh n¨¤o cho ph¨¦p ??a tr?c ti?p m?t gi¨¢ tr? n¨¤o ?¨® v¨¤o m?t thanh ghi m¨¤ ph?i th?ng qua thanh ghi trung gian l¨¤ thanh ghi W. V¨ª d?, ta mu?n ??a gi¨¢ tr? b¡¯00000000¡¯ v¨¤o thanh ghi TRISB (thao t¨¢c n¨¤y c¨® ngh?a l¨¤ thi?t l?p t?t c? c¨¢c ch?n c?a PORTB l¨¤ ch?n xu?t d? li?u), ta c¨® th? d¨´ng hai l?nh nh? sau: MOVLW b¡¯00000000¡¯ MOVWF TRISB T??ng t? ta c¨® th? d¨´ng ¡°c?p l?nh¡± tr¨ºn ?? ??a m?t gi¨¢ tr? 8 bit b?t k¨¬ v¨¤o m?t thanh ghi b?t k¨¬ trong b? nh? d? li?u. Tuy nhi¨ºn ??y l¨¤ m?t tr??ng h?p ??c bi?t. Vi?c ??a v¨¤o thanh ghi TRISB gi¨¢ tr? b¡¯00000000¡¯ c?ng ??ng ngh?a v?i vi?c x¨®a thanh ghi TRISB, do ?¨® ta c¨® th? thay th? hai l?nh tr¨ºn b?ng m?t l?nh duy nh?t: CLRF TRISB
10.
Ng??i b¨¢o c¨¢o:
Nguy?n Trung Ch¨ªnh T¨¤i li?u: TUT01.03 Ng¨¤y: 7/12/2005 Trang: 10/14 ??n ??y ta ?? c¨® ???c c¨¢c th?ng tin c?n thi?t cho vi?c vi?t ch??ng tr¨¬nh ?i?u khi?n. Ch??ng tr¨¬nh c? th? ???c tr¨¬nh b¨¤y ? ph?n ti?p theo. 1.2.3 Ch??ng tr¨¬nh test PORTB vi ?i?u khi?n PIC16F877A. ;------------------------------------------------------------------------------------------- ; Ghi ch¨² v? ch??ng tr¨¬nh ;------------------------------------------------------------------------------------------- ; Ch??ng tr¨¬nh 1.1 ; PORTBTEST.ASM ; Ch??ng trinh d¨´ng ?? test PORTB c?a vi ?i?u khi?n PIC16F877A ;-------------------------------------------------------------------------------------------------- ; Ph?n khai b¨¢o vi ?i?u khi?n ;------------------------------------------------------------------------------------------------- processor 16f877a ; khai b¨¢o vi ?i?u khi?n s? d?ng ch??ng ; tr¨¬nh n¨¤y include <p16f877a.inc> ; header file ?¨ªnh k¨¨m __CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_ON & _CPD_OFF ; khai b¨¢o ¡°configuration bit¡± ;------------------------------------------------------------------------------------------------- ; Ch??ng tr¨¬nh b?t ??u t?i ??y ;------------------------------------------------------------------------------------------------- ORG 0x000 ; ??a ch? b?t ??u ch??ng tr¨¬nh GOTO start start BCF STATUS,RP1 BSF STATUS,RP0 ; ch?n BANK 1 CLRF TRISB ; kh?i t?o PORTB ; PORTB l¨¤ c?ng xu?t d? li?u BCF STATUS,RP0 ; ch?n BANK 0
11.
Ng??i b¨¢o c¨¢o:
Nguy?n Trung Ch¨ªnh T¨¤i li?u: TUT01.03 Ng¨¤y: 7/12/2005 Trang: 11/14 MOVLW b¡¯10001111¡¯ ; gi¨¢ tr? c?n xu?t ra PORTB MOVWF PORTB ; PORTB <- 8Fh loop GOTO loop ; v¨°ng l?p v? h?n ?? d?ng ch??ng tr¨¬nh END ; k?t th¨²c ch??ng tr¨¬nh 1.3. M?t s? nh?n ??nh Nh? v?y ta ?? ho¨¤n t?t m?t ?ng d?ng d¨¤nh cho PORTB c?a vi ?i?u khi?n PIC16F877A. B?y gi? h?y ki?m tra k?t qu? th?c hi?n c?a ch??ng tr¨¬nh b?ng c¨¢ch s? d?ng m?ch test ta v?a thi?t k?. Theo t¨ªnh to¨¢n tr¨ºn l¨ª thuy?t, do ta xu?t ra PORTB gi¨¢ tr? b¡¯10001111¡¯ n¨ºn c¨¢c LED g?n v¨¤o c¨¢c ch?n RB7, RB3, RB2, RB1, RB0 s? s¨¢ng, c¨°n c¨¢c LED g?n v¨¤o c¨¢c ch?n RB6, RB5, RB4 s? t?t. C¨°n k?t qu? do vi ?i?u kh??n PIC t?o ra th¨¬ sao? ??y, c¨¢c LED ???c khoanh tr¨°n l¨¤ c¨¢c LED m¨¤ vi ?i?u khi?n PIC16F877A l¨¤m cho s¨¢ng l¨ºn: H¨¬nh 1.6 K?t qu? th? thi ch??ng tr¨¬nh 1.1 c?a PIC16F877A.
12.
Ng??i b¨¢o c¨¢o:
Nguy?n Trung Ch¨ªnh T¨¤i li?u: TUT01.03 Ng¨¤y: 7/12/2005 Trang: 12/14 Ta th?y c¨® m?t ?i?m b?t h?p l¨ª ? ??y. ?¨® l¨¤ LED g?n v¨¤o ch?n RB3 c?a vi ?i?u khi?n l?i kh?ng s¨¢ng. L¨ª do t?i sao? ?¨® l¨¤ do ch?n RB3 c?a PIC16F877A c¨°n c¨® th¨ºm m?t ch?c n?ng l¨¤ ch?n n?p ch??ng tr¨¬nh cho vi ?i?u khi?n ? ch? ?? n?p LVP (Low Voltage Programming). Khi ch? ?? n?p n¨¤y ???c k¨ªch ho?t, ch?n RB3 c?a vi ?i?u khi?n s? kh?ng ???c ho?t ??ng nh? ch?n I/O b¨¬nh th??ng, cho n¨ºn m?c d¨´ ta c¨® xu?t d? li?u ra ch?n RB3 th¨¬ vi ?i?u khi?n v?n kh?ng th? hi?n t¨¢c ??ng ?¨® ra ch?n RB3. V?y l¨¤m sao ?? kh?c ph?c? R?t ??n gi?n, ta ch? c?n t?t ch? ?? n?p LVP b?ng c¨¢ch khai b¨¢o ... &_LVP_OFF .... khi khai b¨¢o c¨¢c ¡°Configuration bits¡± ? ph?n khai b¨¢o vi ?i?u khi?n. ??n ??y h?n c¨¢c b?n ?? hi?u t?i sao ta ph?i thi c?ng m?ch test v¨¤ ki?m tra k?t qu? th?c thi ch??ng tr¨¬nh c?a vi ?i?u khi?n m?t c¨¢ch tr?c quan, cho d¨´ ch??ng tr¨¬nh ?ng d?ng c¨® ??n gi?n nh? th? n¨¤o ?i n?a, c¨® nh? v?y ta m?i t¨¬m hi?u s?u h?n ???c c¨¢c kh¨ªa c?nh, c¨¢c v?n ?? c?a vi ?i?u khi?n, ??ng th?i san b?ng kho?ng c¨¢ch gi?a l¨ª thuy?t v¨¤ th?c t?. B?y gi? ta th? kh?ng x¨®a h?t thanh ghi TRISB m¨¤ ??a v¨¤o thanh ghi TRISB m?t gi¨¢ tr? kh¨¢c, ch?ng h?n nh? gi¨¢ tr? b¡¯10000000¡¯. C¨¢c b?n ?? bi?t ph?i l¨¤m th? n¨¤o r?i ch?? Ch?n BANK 1 c?a b? nh? d? li?u v¨¤ s? d?ng ¡°c?p l?nh¡±: MOVLW b¡¯10000000¡¯ MOVWF TRISB K?t qu? th?c thi ch??ng tr¨¬nh l¨¤ LED g?n v¨¤o ch?n RB7 c?a PORTB kh?ng s¨¢ng. L¨ª do nh? sau, ta v?a kh?i t?o ch?n RB7 c?a PORTB l¨¤ ch?n nh?p d? li?u (bit 7 c?a thanh ghi TRISB mang gi¨¢ tr? logic 1), cho n¨ºn m?c d¨´ ta c¨® xu?t d? li?u ra ch?n RB7 (gi¨¢ tr? xu?t ra v?n l¨¤ b¡¯10001111¡¯) th¨¬ ch?n ?¨® v?n kh?ng xu?t ???c d? li?u ra b¨ºn ngo¨¤i, nhi?m v? c?a ch?n RB7 l¨²c n¨¤y ch? l¨¤ nh?p d? li?u t? b¨ºn ngo¨¤i. Nh? v?y t?i m?t th?i ?i?m, m?t ch?n I/O c?a vi ?i?u khi?n ch? c¨® th? th?c hi¨ºn m?t trong hai nhi?m v? xu?t d? li?u (Output) ho?c nh?n d? li?u (Input) t¨´y theo ch?c n?ng m¨¤ ta kh?i t?o (??a d? ki?u th¨ªch h?p v¨¤o thanh ghi TRISB). T??ng t? ta c¨® th? xu?t ra PORTB m?t gi¨¢ tr? kh¨¢c b?ng c¨¢ch thay ??i gi¨¢ tr? ??a v¨¤o thanh ghi PORTB. C¨¢c port c¨°n l?i c?a vi ?i?u khi?n PIC16F877A c?ng nh? c¨¢c vi ?i?u khi?n PIC kh¨¢c ??u c¨® c?u tr¨²c t??ng t?, t?c l¨¤ c¨® thanh ghi TRISx ?? ?i?u khi?n ch?c n?ng (Input hay Output) v¨¤ thanh ghi PORTx ch?a d? li?u c?a port ?¨®. D?a v¨¤o ??c ?i?m n¨¤y ta c¨® th? vi?t ch??ng tr¨¬nh ?i?u khi?n c¨¢c port c¨°n l?i c?a PIC16F877A xu?t d? li?u ra b¨ºn ngo¨¤i theo c?u tr¨²c nh? ch??ng tr¨¬nh 1.1. ??y l¨¤ thao t¨¢c n¨ºn th?c hi?n ?? ki?m tra l?i c¨¢c ??c t¨ªnh c?a t?ng port trong vi ?i?u khi?n PIC16F877A, ??ng th?i gi¨²p c¨¢c b?n l¨¤m quen v?i c?u tr¨²c ch??ng tr¨¬nh c?ng nh? c¨¢ch vi?t ch??ng tr¨¬nh d¨´ng cho vi ?i?u khi?n PIC.
13.
Ng??i b¨¢o c¨¢o:
Nguy?n Trung Ch¨ªnh T¨¤i li?u: TUT01.03 Ng¨¤y: 7/12/2005 Trang: 13/14 Sau ??y l¨¤ m?t v¨¤i ??c ?i?m v? c¨¢c port c?a vi ?i?u khi?n PIC16F877A m¨¤ c¨¢c b?n n¨ºn ch¨² ?: - Ch?n RA4 c?a PORTA l¨¤ ch?n c¨® c?c thu ?? h?, cho n¨ºn khi test PORTA, ta c?n g?n th¨ºm ?i?n tr? k¨¦o l¨ºn cho ch?n n¨¤y ?? ??m b?o k?t qu? hi?n th? ra LED. - PORTA v¨¤ PORTE m?c ??nh khi kh?i ??ng l¨¤ c¨¢c ch?n I/O c?a t¨ªn hi?u analog, cho n¨ºn tr??c khi mu?n s? d?ng c¨¢c ch?n n¨¤y nh? c¨¢c ch?n I/O b¨¬nh th??ng ta c?n ti?n h¨¤nh th¨ºm m?t b??c kh?i t?o n?a. Tuy nhi¨ºn trong b¨¤i ??u ti¨ºn ta ch? xu?t d? li?u ra LED n¨ºn ch?a c?n quan t?m ??n b??c kh?i t?o n¨¤y (k?t qu? hi?n th? v?n kh?ng c¨® g¨¬ kh¨¢c bi?t so v?i t¨ªnh to¨¢n tr¨ºn l¨ª thuy?t), ta s? b¨¤n k? ??n c¨¢c b??c kh?i t?o v¨¤ ??c t¨ªnh analog c?a c¨¢c ch?n trong PORTA v¨¤ PORTE trong c¨¢c b¨¤i sau. - C¨¢c ch?n trong PORTB, PORTC, PORTD c?ng c¨® c¨¢c ch?c n?ng kh¨¢c ngo¨¤i ch?c n?ng I/O, tuy nhi¨ºn khi kh?i ??ng c¨¢c ch?n n¨¤y ???c m?c ??nh l¨¤ c¨¢c ch?n I/O b¨¬nh th??ng n¨ºn trong qu¨¢ tr¨¬nh test port ta kh?ng c¨°n tr? ng?i g¨¬ n?a. ??y l¨¤ b¨¤i ??u ti¨ºn ??n gi?n nh?t nh?ng h?n c¨¢c b?n c?ng ?? nh?n th?y r?ng c¨® r?t nhi¨ºu th?ng tin c?n ???c x? l¨ª ??n n?i ??n ch?n m?t c¨¢ch th?c t? v¨¤ v?i s? nghi¨ºm t¨²c c?n thi?t. Vi?c th?c hi?n th¨¤nh c?ng ?ng d?ng ??n gi?n nh?ng c?ng r?t quan tr?ng n¨¤y c¨® th? xem l¨¤ m?t ¡°b??c ngo?c¡± trong qu¨¢ tr¨¬nh b?n l¨¤m quen v?i vi ?i?u khi?n PIC16F877A n¨®i ri¨ºng v¨¤ h? vi ?i?u khi?n PIC n¨®i chung. B¨ºn c?nh ?¨® c¨¢c b?n c?ng n¨ºn l¨¤m quen d?n v?i c¨¢ch ghi ch¨² ch??ng tr¨¬nh, c?ng vi?c n¨¤y c¨® v? th?a th?i nh?ng t¨¢c d?ng m¨¤ n¨® mang l?i l¨¤ r?t t¨ªch c?c. Th? nh?t, ta c¨® th? d?n ??nh h??ng cho m¨¬nh m?t c?u tr¨²c ch??ng tr¨¬nh vi?t cho vi ?i?u khi?n PIC. Th? hai, b?n c¨® th? bi?t ???c m¨¬nh v?a ra l?nh cho vi ?i?u khi?n PIC th?c hi?n c?ng vi?c g¨¬ v?i l?nh m¨¬nh v?a vi?t ra. Th? ba, ng??i kh¨¢c khi d?c ch??ng tr¨¬nh c?a b?n c?ng c?m th?y th?n thi?n v¨¤ d? hi?u h?n. ?ng d?ng n¨¤y ph?i ???c th?c hi?n th¨¤nh c?ng tr??c khi ta x?y d?ng c¨¢c ?ng d?ng kh¨¢c ph?c t?p h?n. ??y c?ng l¨¤ m?c ?¨ªch x?y d?ng c?a lo?t b¨¤i ¡°PIC16F877A t? d? t?i kh¨®¡±, ta s? b?t ??u t? ?ng d?ng ??n gi?n nh?t n¨¤y, v¨¤ l?y n¨® l¨¤m c? s? ?? x?y d?ng c¨¢c ?ng d?ng ng¨¤y c¨¤ng ph?c t?p h?n. Hy v?ng c¨¢c b?n c¨® th? bi?t ???c th¨ºm m?t s? th?ng tin n¨¤o ?¨® v? vi ?i?u khi?n PIC16F877A sau b¨¤i ??u ti¨ºn n¨¤y. H?t b¨¤i 1!
14.
Ng??i b¨¢o c¨¢o:
Nguy?n Trung Ch¨ªnh T¨¤i li?u: TUT01.03 Ng¨¤y: 7/12/2005 Trang: 14/14
Download