Professional Documents
Culture Documents
Tut 1
Tut 1
Ti liu: Trang:
TUT01.03 1/14
Tutorial 01.03
Gi n: Ni dung: on Hip, Don Minh ng, picvietnam@googlegroups.com BI 1: PIC16F877A T D TI KH MICROSOFT WORD Tm tt: Tutorial post ln lung PIC16F877A T D TI KH thuc chuyn mc C BN V VI IU KHIN V PIC. Bi u tin bao gm ni dung sau: ng dng n gin nht dnh cho vi iu khin PIC16F877A, l xut d liu ra mt port no ca vi iu khin. Cc bc tin hnh bao gm: _ Bc 1: Xy dng mch test. _ Bc 2: Xy dng chng trnh. _ Bc 3: Nhn xt v kt lun. Mt s c im v cc port iu khin ca vi iu khin PIC16F877A. Chng trnh v s nguyn l mch test i km.
1.
1.1.
Trc tin ta cng xy dng mch test cho ng dng ny. Ngoi tr vi iu khin PIC16F877A, cc thnh phn cn li trong mch u rt thng dng v d dng tm thy trn th trng, do hy thi cng mch test ny ta c th xem xt cc hiu ng c th ca vi iu khin mt cch trc quan v nghim tc, v sau bi ny, cc bn s thy rng ta khng th ngi mt ch c sch hay ti liu m c th lng trc c ht nhng hiu ng m vi iu khin to ra, thm ch l cc hiu ng t ng dng n gin nht ny. Do y l bi u tin, cho nn cc bc tin hnh s rt nghim tc v thn trng. No, bt u!
Ti liu: Trang:
TUT01.03 2/14
1
2 3 4 5 6 7
RB7/PGD RB6/PGC RA0/AN0 RB5 RA1/AN1 RB4 RA2/AN2/VREF-/CVREF RB3/PGM RA3/AN3/VREF+ RB2 RA4/TOCKI/C1OUT RB1 RA5/AN4/SS/C2OUT RBO/INT
MCLR/VPP
40 39 38 37 36 35 34 33
32 31
8 9 10
11 12
VDD GND
PIC16F877A
13 14
RD7/PSP7 RD6/PSP6 RD5/PSP5 RD4/PSP4 RC7/RX/DT RC6/TX/CK RC5/SDO RC4/SDI/SDA RD3/PSP3 RD2/PSP2
30 29 28 27
OSC1/CLKIN OSC2/CLKOUT
15 16 17 18
19 20
26 25 24 23
22 21
By gi ta hy cp ngun cho vi iu khin hat ng, v cu hi t ra l cp ngun nh th no? Tt nhin, ngun cung cp s l ngun 5V, vn y l, vi iu khin PIC16F877A c n hai chn cp ngun VCC v hai chn GND. Cc bn c cm thy bi ri v thc mc l ti sao li c n 4 chn cp ngun nh vy khng? V sau y l cu tr li, ta phi cp ngun vo tt c cc chn ngun trn, nh vy th vi iu khin mi hot ng c. V mch nguyn l sau khi cp ngun nh sau:
Ti liu: Trang:
TUT01.03 3/14
MCLR/VPP
2 3 4 5 6 7
8 9 10
HI
RB7/PGD RB6/PGC RB5 RA0/AN0 RB4 RA1/AN1 RA2/AN2/VREF-/CVREF RB3/PGM RB2 RA3/AN3/VREF+ RB1 RA4/TOCKI/C1OUT RBO/INT RA5/AN4/SS/C2OUT VDD GND
RD7/PSP7 RD6/PSP6 RD5/PSP5 RD4/PSP4 RC7/RX/DT RC6/TX/CK RC5/SDO RC4/SDI/SDA RD3/PSP3 RD2/PSP2
40 39 38 37 36 35 34 33
HI
32 31
30 29 28 27
26 25 24 23
22 21
11 12
VDD GND
PIC16F877A
13 14
15 16 17 18
OSC1/CLKIN OSC2/CLKOUT
RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCK/SCL RD0/PSP0 RD1/PSP1
19 20
Tip theo, ngoi ngun cung cp, ta cn phi cung cp xung hot ng cho vi iu khin. PIC16F877A v cc vi iu khin ni chung cho php nhiu cch cung cp xung hot ng khc nhau. y ta s dng thch anh lm ngun xung, v cng vic ca ta l gn thch anh vo hai chn 13 v 14 ca vi iu khin. Tuy nhin cc bn cng bit rng, cc xung dao ng do thch anh to ra cng khng thc s n nh mt cch tuyt i, v cch khc phc l gn thm cc t lc vo thch anh. Nh vy, cn phi gn cc t nh th no v gi tr bao nhiu? Cu tr li nm trong ci datasheet. Cc bn lt ci datasheet PIC16F87xA do Microchip cung cp ra. Trang 145, hnh 4.1 hng dn cch gn cc t C1, C2 vo thch anh, v trang 146, bng 14-2 hng dn cch chn gi tr cho t. y la dng thch anh 4 MHz nn t C1 v C2 s c gi tr 15 pF. Mt im ng ch na l cht lng thch anh ti th trng Vit Nam khng thc s tt, cho nn tng s n nh, ta s dng t 30 pF. Xong! V sau y l mch nguyn l sau khi gn thm thch anh:
Ti liu: Trang:
TUT01.03 4/14
1
2 3 4 5 6 7
RB7/PGD RB6/PGC RA0/AN0 RB5 RA1/AN1 RB4 RA2/AN2/VREF-/CVREF RB3/PGM RA3/AN3/VREF+ RB2 RA4/TOCKI/C1OUT RB1 RA5/AN4/SS/C2OUT RBO/INT
MCLR/VPP
40 39 38 37 36 35 34 33
HI
8 9 10
HI
VDD GND
32 31
C1
11 12
PIC16F877A
0
30 pF
C2
13 14
RD7/PSP7 RD6/PSP6 RD5/PSP5 RD4/PSP4 RC7/RX/DT RC6/TX/CK RC5/SDO RC4/SDI/SDA RD3/PSP3 RD2/PSP2
30 29 28 27
OSC1/CLKIN OSC2/CLKOUT
4 MHz
0
30 pF
15 16 17 18
19 20
26 25 24 23
22 21
By gi l mch reset cho vi iu khin s dng ch reset t chn MCLR ca vi iu khin (chn s 1). Ta bit vi iu khin s c reset khi chn MCLR chuyn t mc logic 1 xung mc logic 0 v ta s dng mt cng tc c kh thc hin vic chuyn i , nh vy ta mi c th tc ng cho vi iu khin reset bng tay. Li mt cu hi na, phi thit k mch nh th no thc hin c cng vic ? D thi, ta c th thit k nh hnh 1.4. Bnh thng cng tc h, chn MCLR ca vi iu khin mang mc logic 1 (v c ni vi ngun qua in tr hn dng R1). in tr R1 phi c gi tr nh hn 40K bo m in p cung cp cho vi iu khin. Khi n cng tc, chn MCLR c ni vi GND nn mang mc logic 0, khi vi iu khin s c reset.
Ti liu: Trang:
TUT01.03 5/14
VDD GND
RD7/PSP7 RD6/PSP6 RD5/PSP5 RD4/PSP4 RC7/RX/DT RC6/TX/CK RC5/SDO RC4/SDI/SDA RD3/PSP3 RD2/PSP2
HI
C1
11 12
VDD GND
PIC16F877A
30 29 28 27
26 25 24 23
22 21
0
30 pF
13 14
15 16 17 18
OSC1/CLKIN OSC2/CLKOUT
RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCK/SCL RD0/PSP0 RD1/PSP1
C2
4 MHz
0
30 pF
19 20
Hnh 1.4 PIC16F877A sau khi tip tc thm vo mch seset. n y xem nh ta hon thnh nhng thnh phn c bn nht cho mt mch test dnh cho vi iu khin PIC16F877A. Ta tip tc pht trin cc thnh phn tip theo test cc port ca vi iu khin. PORTB ca vi iu khin s c test u tin. Mc ch ca mch test l kim tra xem cc gi tr ta xut ra port bng chng trnh c ng hay khng, v pht hin c cc gi tr mt cch trc quan, ta s dng 8 LED gn vo 8 chn trong PORTB ca vi iu khin. Khi ta xut gi tr mang mc logic 1 ra mt chn no trong PORTB ca vi iu khin, LED tng ng gn vi chn s sng ln (do lc ny in p chn ca vi iu khin l 5V) v ngc li, nu gi tr xut ra mang mc logic 0 th LED s khng sng (do lc ny in p chn ca vi iu khin l 0V). Tuy nhin, ta cn ch n mt im quan trng na, l LED sng bnh thng, in p t vo hai u ca LED vo khong 1,8V n 2,2V, trong khi in p ti chn I/O ca vi iu khin khi ta xut ra mc logic 1 s
HI
HI
R1
MCLR/VPP
SW1
2 3 4 5 6 7
8 9 10
RB7/PGD RB6/PGC RB5 RA0/AN0 RB4 RA1/AN1 RA2/AN2/VREF-/CVREF RB3/PGM RB2 RA3/AN3/VREF+ RB1 RA4/TOCKI/C1OUT RBO/INT RA5/AN4/SS/C2OUT
40 39 38 37 36 35 34 33
32 31
Ti liu: Trang:
TUT01.03 6/14
l 5V. Do cn mc thm in tr hn dng cho LED (c th dng in tr c gi tr 0.33 K). Da vo cc im phn tch trn ta c th xy dng c mch nguyn l hon chnh cho ng dng test PORTB nh sau:
HI
R2
R1
1
40 39 38 37 36 35 34 33
HI
D1
MCLR/VPP
SW1
2 3 4 5 6 7
RB7/PGD RB6/PGC RA0/AN0 RB5 RA1/AN1 RB4 RA2/AN2/VREF-/CVREF RB3/PGM RA3/AN3/VREF+ RB2 RA4/TOCKI/C1OUT RB1 RA5/AN4/SS/C2OUT RBO/INT VDD GND
R3
D2
R4
D3
R5
32 31
D4
8 9 10
HI
C1
11 12
PIC16F877A
0
30 pF
C2
13 14
RD7/PSP7 RD6/PSP6 RD5/PSP5 RD4/PSP4 RC7/RX/DT RC6/TX/CK RC5/SDO RC4/SDI/SDA RD3/PSP3 RD2/PSP2
30 29 28 27
R6
D5
OSC1/CLKIN OSC2/CLKOUT
R7
26 25 24 23
D6
4 MHz
0
30 pF
15 16 17 18
19 20
R8
D7
22 21
R9
D8
Hnh 1.5 Mch nguyn l hon chnh cho ng dng test PORTB. Nh vy n y ta hon tt vic thit k phn cng cho ng dng. Trong phn tip theo ta tip tc bn n vic vit chng trnh cho ng dng trn.
1.2.
Trc tin, vit c chng trnh, ta cn tm hiu mt s c im v cu trc ca vi iu khin PIC16F877A v c php ca mt s lnh s dng trong chng trnh.
Ti liu: Trang:
TUT01.03 7/14
Cc c im ny s l c s cho vic hnh thnh chng trnh xut d liu ra PORTB ca vi iu khin PIC16F877A.
Ti liu: Trang:
TUT01.03 8/14
(tham s bit mang gi tr t 0 n 7). Chc nng: lnh ny dng a bit c s th t cha trong tham s bit ca thanh ghi cha trong tham s thanhghi ln mc logic 1. V d: BSF PORTB,7
(bit 7 ca thanh ghi PORTB sau lnh ny s mang mc logic 1). Lnh BCF C php: BCF thanhghi,bit
(tham s bit mang gi tr t 0 n 7) Chc nng: lnh ny dng a bit c s th t cha trong tham s bit ca thanh ghi cha trong tham s thanhghi v mc logic 0. V d: BCF PORTB,7
(bit 7 ca thanh ghi PORTB sau lnh ny s mang mc logic 0). Lnh MOVLW C php: MOVLW hangso
(tham s hangso mang gi tr t 0 n 255) Chc nng: a gi tr ca tham s hangso vo thanh ghi W. Ta c mt s nh dng v tham s hangso nh sau: nh ng s hex: thm k t 0x vo trc tham s hangso. V d: MOVLW 0x5F
(a gi tr hex 5F vo thanh ghi W). nh dang s thp phn: thm k t d vo trc tham s hangso. V d: MOVLW d15
(a gi tr thp phn 15 vo thanh ghi W). nh dng s nh phn: thm k t b trc tham s hangso V d: MOVLW b10101010
Ti liu: Trang:
TUT01.03 9/14
Tc dng: a gi tr cha trong thanh ghi W vo thanh ghi c ch nh bi tham s thanhghi. V d: MOVWF PORTB
(a gi tr cha trong thanh ghi W vo thanh ghi PORTB). Lnh CLRF C php: CLRF thanhghi
(nhy ti label next). Ta thy rng trong tp lnh ca vi iu khin PIC, khng c lnh no cho php a trc tip mt gi tr no vo mt thanh ghi m phi thng qua thanh ghi trung gian l thanh ghi W. V d, ta mun a gi tr b00000000 vo thanh ghi TRISB (thao tc ny c ngha l thit lp tt c cc chn ca PORTB l chn xut d liu), ta c th dng hai lnh nh sau: MOVLW MOVWF b00000000 TRISB
Tng t ta c th dng cp lnh trn a mt gi tr 8 bit bt k vo mt thanh ghi bt k trong b nh d liu. Tuy nhin y l mt trng hp c bit. Vic a vo thanh ghi TRISB gi tr b00000000 cng ng ngha vi vic xa thanh ghi TRISB, do ta c th thay th hai lnh trn bng mt lnh duy nht: CLRF TRISB
Ti liu: Trang:
TUT01.03 10/14
n y ta c c cc thng tin cn thit cho vic vit chng trnh iu khin. Chng trnh c th c trnh by phn tip theo.
;------------------------------------------------------------------------------------------; ; ; Chng trnh 1.1 PORTBTEST.ASM Chng trinh dng test PORTB ca vi iu khin PIC16F877A
;------------------------------------------------------------------------------------------------processor 16f877a ; khai bo vi iu khin s dng chng ; trnh ny include <p16f877a.inc> ; header file nh km
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_ON & _CPD_OFF ; khai bo configuration bit ;------------------------------------------------------------------------------------------------; Chng trnh bt u ti y
;------------------------------------------------------------------------------------------------ORG GOTO start BCF BSF STATUS,RP1 STATUS,RP0 ; chn BANK 1 0x000 start ; a ch bt u chng trnh
CLRF
TRISB
BCF
STATUS,RP0
; chn BANK 0
Ti liu: Trang:
TUT01.03 11/14
b10001111 PORTB
loop
1.3.
Mt s nhn nh
Nh vy ta hon tt mt ng dng dnh cho PORTB ca vi iu khin PIC16F877A. By gi hy kim tra kt qu thc hin ca chng trnh bng cch s dng mch test ta va thit k. Theo tnh ton trn l thuyt, do ta xut ra PORTB gi tr b10001111 nn cc LED gn vo cc chn RB7, RB3, RB2, RB1, RB0 s sng, cn cc LED gn vo cc chn RB6, RB5, RB4 s tt. Cn kt qu do vi iu khn PIC to ra th sao? y, cc LED c khoanh trn l cc LED m vi iu khin PIC16F877A lm cho sng ln:
Ti liu: Trang:
TUT01.03 12/14
Ta thy c mt im bt hp l y. l LED gn vo chn RB3 ca vi iu khin li khng sng. L do ti sao? l do chn RB3 ca PIC16F877A cn c thm mt chc nng l chn np chng trnh cho vi iu khin ch np LVP (Low Voltage Programming). Khi ch np ny c kch hot, chn RB3 ca vi iu khin s khng c hot ng nh chn I/O bnh thng, cho nn mc d ta c xut d liu ra chn RB3 th vi iu khin vn khng th hin tc ng ra chn RB3. Vy lm sao khc phc? Rt n gin, ta ch cn tt ch np LVP bng cch khai bo ... &_LVP_OFF .... khi khai bo cc Configuration bits phn khai bo vi iu khin. n y hn cc bn hiu ti sao ta phi thi cng mch test v kim tra kt qu thc thi chng trnh ca vi iu khin mt cch trc quan, cho d chng trnh ng dng c n gin nh th no i na, c nh vy ta mi tm hiu su hn c cc kha cnh, cc vn ca vi iu khin, ng thi san bng khong cch gia l thuyt v thc t. By gi ta th khng xa ht thanh ghi TRISB m a vo thanh ghi TRISB mt gi tr khc, chng hn nh gi tr b10000000. Cc bn bit phi lm th no ri ch? Chn BANK 1 ca b nh d liu v s dng cp lnh: MOVLW MOVWF b10000000 TRISB
Kt qu thc thi chng trnh l LED gn vo chn RB7 ca PORTB khng sng. L do nh sau, ta va khi to chn RB7 ca PORTB l chn nhp d liu (bit 7 ca thanh ghi TRISB mang gi tr logic 1), cho nn mc d ta c xut d liu ra chn RB7 (gi tr xut ra vn l b10001111) th chn vn khng xut c d liu ra bn ngoi, nhim v ca chn RB7 lc ny ch l nhp d liu t bn ngoi. Nh vy ti mt thi im, mt chn I/O ca vi iu khin ch c th thc hin mt trong hai nhim v xut d liu (Output) hoc nhn d liu (Input) ty theo chc nng m ta khi to (a d kiu thch hp vo thanh ghi TRISB). Tng t ta c th xut ra PORTB mt gi tr khc bng cch thay i gi tr a vo thanh ghi PORTB. Cc port cn li ca vi iu khin PIC16F877A cng nh cc vi iu khin PIC khc u c cu trc tng t, tc l c thanh ghi TRISx iu khin chc nng (Input hay Output) v thanh ghi PORTx cha d liu ca port . Da vo c im ny ta c th vit chng trnh iu khin cc port cn li ca PIC16F877A xut d liu ra bn ngoi theo cu trc nh chng trnh 1.1. y l thao tc nn thc hin kim tra li cc c tnh ca tng port trong vi iu khin PIC16F877A, ng thi gip cc bn lm quen vi cu trc chng trnh cng nh cch vit chng trnh dng cho vi iu khin PIC.
Ti liu: Trang:
TUT01.03 13/14
Sau y l mt vi c im v cc port ca vi iu khin PIC16F877A m cc bn nn ch : Chn RA4 ca PORTA l chn c cc thu h, cho nn khi test PORTA, ta cn gn thm in tr ko ln cho chn ny m bo kt qu hin th ra LED. PORTA v PORTE mc nh khi khi ng l cc chn I/O ca tn hiu analog, cho nn trc khi mun s dng cc chn ny nh cc chn I/O bnh thng ta cn tin hnh thm mt bc khi to na. Tuy nhin trong bi u tin ta ch xut d liu ra LED nn cha cn quan tm n bc khi to ny (kt qu hin th vn khng c g khc bit so vi tnh ton trn l thuyt), ta s bn k n cc bc khi to v c tnh analog ca cc chn trong PORTA v PORTE trong cc bi sau. Cc chn trong PORTB, PORTC, PORTD cng c cc chc nng khc ngoi chc nng I/O, tuy nhin khi khi ng cc chn ny c mc nh l cc chn I/O bnh thng nn trong qu trnh test port ta khng cn tr ngi g na.
y l bi u tin n gin nht nhng hn cc bn cng nhn thy rng c rt nhiu thng tin cn c x l n ni n chn mt cch thc t v vi s nghim tc cn thit. Vic thc hin thnh cng ng dng n gin nhng cng rt quan trng ny c th xem l mt bc ngoc trong qu trnh bn lm quen vi vi iu khin PIC16F877A ni ring v h vi iu khin PIC ni chung. Bn cnh cc bn cng nn lm quen dn vi cch ghi ch chng trnh, cng vic ny c v tha thi nhng tc dng m n mang li l rt tch cc. Th nht, ta c th dn nh hng cho mnh mt cu trc chng trnh vit cho vi iu khin PIC. Th hai, bn c th bit c mnh va ra lnh cho vi iu khin PIC thc hin cng vic g vi lnh mnh va vit ra. Th ba, ngi khc khi dc chng trnh ca bn cng cm thy thn thin v d hiu hn. ng dng ny phi c thc hin thnh cng trc khi ta xy dng cc ng dng khc phc tp hn. y cng l mc ch xy dng ca lot bi PIC16F877A t d ti kh, ta s bt u t ng dng n gin nht ny, v ly n lm c s xy dng cc ng dng ngy cng phc tp hn. Hy vng cc bn c th bit c thm mt s thng tin no v vi iu khin PIC16F877A sau bi u tin ny.
Ht bi 1!
Ti liu: Trang:
TUT01.03 14/14