Các bài thực hành về vi điều khiển
Sau khi tìm hiểu kiến thức về vi điều khiển thì bạn se có thể bắt đầu thực hiện Các bài thực hành đối với vi điều khiển để giúp bạn hiểu rõ hơn về những gì bạn đã học. Để điều khiển motor khí nén chúng ta thường sử dụng van tiết lưu để điều chỉnh lưu lượng khí qua motor. Điều khiển motor theo một hướng nhất định, hướng dòng chảy sẽ làm thay đổi vận.
z
Các bài thực hành về vi điều khiển
Chöông 9
CAÙC BAØI THÖÏC HAØNH
159
MOÄT SOÁ QUI ÑÒNH
VAØ CAÙC LOÃI THÖÔØNG GAËP
Moät soá qui ñònh veà keát noái:
Treân heä thoáng I coù 4 port 0, 1, 2, 3 vaø caùc port coù ghi treân heä thoáng.
Port 0, 1,3 vôùi caùc bit thöù 0 [LSB] ñeán bit thöù 7 [MSB] theo thöù töï töø treân xuoáng.
Rieâng port 2 thì ngöôïc laïi töø döôùi leân. Treân boä thí nghieäm ñaõ coù teân cho töøng ngoõ ra.
Khi keát noái chuù yù phaûi theo thöù töï bit 0 cuûa port vôùi bit 0 cuûa ñoái töôïng ñieàu khieån.
Khi bit thöù 0 ñuùng thì caùc bit coøn laïi seõ ñuùng.
Taát caû caùc chöông trình trong heä thoáng naøy ñeàu ñöôïc kieåm tra raát kyõ vaø vieát ñuùng theo
thöù töï keát noái treân.
Neáu 1 yeâu caàu naøo ñoù khoâng ñuùng thì haõy xem laïi phaàn keát noái vaø chöông trình.
Chuù yù: khi vieát chöông trình thöôøng xaûy ra caùc loãi nhö sau:
Soá khoâng “0” thöôøng ñöôïc ñaùnh nhaàm baèng chöõ o.
-
Sau leänh end thì khoâng coù haøng hay moät kyù töï naøo neáu khoâng thì khi bieân dòch chöông
-
trình seõ thoâng baùo coù loãi. Loãi naøy coù theå boû qua.
Caùc nhaûn trong chöông trình phaûi ñaùnh ñuùng nhö trong saùch höôùng daãn.
-
Caùc chuù thích cho caùc leänh thì phaûi naèm sau daáu chaám phaåy “;”. Coù phaàn chuù thích hay
-
khoâng coù cuõng ñöôïc.
Giöõa leänh vaø thanh ghi phaûi coù khoaûng traéng, giöõ “org “ vaø ñòa chæ phaûi coù khoaûng
-
traéng.
Haõy duøng nuùt tab ñeå vieát chöông trình cho thaúng haøng ñeå deã xem vaø tìm loãi nhanh
-
choùng.
Neáu ñaùnh 1 chöông trình naøo ñoù trong taøi lieäu höôùng daãn maø chöông trình chaïy khoâng
-
ñuùng thì haõy xem kyõ laïi coù ñaùnh ñaày ñuû taát caùc leänh cuûa chöông trình hay chöa? Taát caû
caùc chöông trình trong taøi lieäu höôùng daãn ñaõ ñöôïc chaïy thöû vaø luoân luoân ñuùng.
Khi baïn töï vieát moät chöông trình thì seõ coù 1 soá tröôøng hôïp chöông trình khoâng naïp ñöôïc
-
coù theå do IC vi ñieàu khieån hoûng thì baïn coù theå naïp moät chöông trình naøo ñoù ñaõ chaïy toát,
neáu vaãn khoâng naïp ñöôïc thì IC chaéc chaén ñaõ hoûng. Coøn neáu naïp ñöôïc vaø chaïy toát thì loãi
naèm ôû chöông trình môùi vieát vaø nguyeân nhaân coù theå laø chöông trình bò xeáp choàng boä
nhôù.
Moät trong nhöõng lyù do laøm cho chöông trình nhöng khoâng chaïy laø do baïn vieát chöông
-
trình khoâng baét ñaàu taïi ñòa chæ 0000H,
Haõy ñoïc kyõ caùc yeâu caàu tröôùc khi thöïc haønh.
-
160
PHAÀN 1:
ÑIEÀU KHIEÅN LED ÑÔN
(MÖÙC 1 LED SAÙNG, MÖÙC 0 LED TAÉT)
161
S NGAØY :
THÖÏC HAØNH VI ÑIEÀU KHIEÅN
SOÁ TIEÁT :
BAØI SOÁ : 1-1
LÔÙP :
CHÖÔNG TRÌNH ÑIEÀU KHIEÅN LED CHOÙP TAÉT. MSSV :
I. Muïc ñích yeâu caàu:
Naém vöõng leänh ñieàu khieån xuaát döõ lieäu ra caùc port, bieát caùch vieát chöông trình con delay.
Laøm quen vôùi phaàn meàm soaïn thaûo chöông trình, caùch hieäu chænh loãi.
II. Trình töï thöïc hieän:
1. Giaûi thuaät:
BEGIN
Taét 8 led
Delay
Saùng 8 led
Delay
END
2. Keát noái maïch theo trình töï :
- Duøng bus daây (8 sôïi ) keát noái port 0 vôùi moät trong boán PINHD cuûa daõy 32 led.
3. Khôûi ñoäng phaàn meàm, taïo File môùi, bieân soaïn chöông trình sau:
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;chuong trinh dieu khien 8 led chop tat ket noi voi port 0
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
org 0000h ;khai bao dia chi bat dau cua chuong trinh
lb: mov p0,#00h ;nap 00 vao port0 de tat 8 led
lcall delay ;goi chuong trinh con delay
mov p0,#0ffh ;nap FF vao port0 de sang 8 led
lcall delay ;goi chuong trinh con delay
sjmp lb ;nhay den de lam lai tu dau
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;chuong trinh con delay
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
delay: mov r6,#0ffh ;nap hang so FFH vao thanh ghi r6
de: mov r7,#0ffh ;nap hang so FFH vao thanh ghi r7
djnz r7,$ ;giam r7 di 1 va nhay khi r7 khac 00
djnz r6,de ;giam r6 di 1 va nhay khi r6 khac 00
ret ;thoat khoi chuong trinh con
end
162
4. Löu chöông trình vaø bieân dòch chöông trình. Kieåm tra loãi vaø hieäu chænh roài bieân dòch laïi.
5. Naïp chöông trình vaøo vi ñieàu khieån.
6. Quan saùt keát quaû hieån thò cuûa chöông trình, neáu keát quaû hieån thò khoâng ñuùng yeâu caàu ñeà
baøi thì phaûi quay laïi chöông trình chænh söûa vaø laøm laïi.
III. Chöông trình maãu:
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;chuong trinh dieu khien port 16 led chop tat dung port0, 1
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
org 0000h
lb: mov p0,#00h ;tat port0
mov p1,#00h ;tat port1
lcall delay ;delay
mov p0,#0ffh ;sang 8 led
mov p1,#0ffh ;sang 8 led
lcall delay ;delay
sjmp lb ;lam lai tu dau
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;chuong trinh con delay
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
delay: mov r6,#0ffh
de: mov r7,#0ffh
djnz r7,$
djnz r6,de
ret
end
IV. Baøi taäp:
1. Haõy xem chöông trình maãu ñieàu khieån 16 led choùp taét duøng 2 port 0 vaø 1 vaø haõy vieát
chöông trình saùng taét 3 port 0, 1 vaø 3.
2. Haõy vieát chöông trình saùng taét 4 port: port0, port1, port2, port3.
163
NGAØY :
THÖÏC HAØNH VI ÑIEÀU KHIEÅN
SOÁ TIEÁT :
BAØI SOÁ : 1-2
LÔÙP :
CHÖÔNG TRÌNH ÑIEÀU KHIEÅN LED SAÙNG VAØ TAÉT DAÀN. MSSV :
s
I. Muïc ñích yeâu caàu:
Hieåu caùch söû duïng leänh xoay 8 bit, leänh nhaûy coù ñieàu kieän ñeå thöïc hieän chöông trình ñieàu
khieån led saùng daàn, taét daàn.
II. Trình töï thöïc hieän :
1. Giaûi thuaät: saùng daàn vaø taét heát saùng daàn vaø taét daàn
Begin Begin
Taét 8 led Taét 8 led
Dòch chuyeån döõ lieäu Dòch chuyeån döõ lieäu
11111111 laàn löôït ra 8 led 11111111 laàn löôït ra 8 led
Xoùa 8 led Dòch chuyeån döõ lieäu
00000000 laàn löôït ra 8 led
End End
2. Keát noái maïch theo trình töï :
- Duøng bus daây keát noái port 0 vôùi moät trong boán PINHD cuûa daõy 32 led.
3. Khôûi ñoäng phaàn meàm, taïo File môùi vaø bieân soaïn chöông trình sau:
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;chuong trinh dieu khien port 0 sang dan len va tat het - cach I
;ket noi port 0 den 8 led bang cap 8 soi
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
org 0000h
lb: mov p0,#00000000b ;tat port 0
lcall delay ;goi chuong trinh con delay
mov p0,#00000001b ;sang 1 led
lcall delay ;goi chuong trinh con delay
mov p0,#00000011b ;sang 2 led
lcall delay ;goi chuong trinh con delay
mov p0,#00000111b ;sang 3 led
lcall delay ;goi chuong trinh con delay
mov p0,#00001111b ;sang 4 led
lcall delay ;goi chuong trinh con delay
164
mov p0,#00011111b ;sang 5 led
lcall delay ;goi chuong trinh con delay
mov p0,#00111111b ;sang 6 led
lcall delay ;goi chuong trinh con delay
mov p0,#01111111b ;sang 7 led
lcall delay ;goi chuong trinh con delay
mov p0,#11111111b ;sang 8 led
lcall delay ;goi chuong trinh con delay
sjmp lb
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;chuong trinh con delay
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
delay: mov r6,#0ffh
de: mov r7,#0ffh
djnz r7,$
djnz r6,de
ret
end
Trong laäp trình coù nhieàu caùch vieát chöông trình töø ñôn giaûn deã hieåu nhöng daøi doøng ñeán
chöông trình phöùc taïp khoù hieåu nhöng ngaén goïn tuøy thuoäc vaøo ñoái töôïng nghieân cöùu vaø ñoái töôïng
hoïc. ÔÛ ñaây trình baøy luoân caû 2 caùch vieát.
Trong caùch vieát treân ta thaáy chöông trình deã hieåu nhöng khaù daøi. Haõy cho chaïy chöông trình
treân vaø xem caùch vieát thöù 2.
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;chuong trinh dieu khien port 0 sang dan len va tat het – cach II
;ket noi port 0 den 8 led bang cap 8 soi
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
org 0000h
lb: mov p0,#00h ;tat port 0
lb1: lcall delay ;goi chuong trinh con delay
setb c ;lam cho bit C = 1
mov a,p0 ;chuyen noi dung port0 vao thanh ghi A
rlc a ;xoay noi dung thanh ghi A sang trai
mov p0,a ;tra lai cho port0
jnc lb1 ;nhay ve de thuc hien tiep
sjmp lb ;quay lai tu dau
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;chuong trinh con delay
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
delay: mov r6,#0ffh
de : mov r7,#0ffh
djnz r7,$
djnz r6,de
ret
end
Giaûi thích : ñeå led saùng daàn leân ta phaûi dòch möùc 1 vaøo thanh ghi A, möùc 1 ñöôïc chöùa trong
bit Cy, leänh xoay thanh ghi A sang traùi seõ dòch möùc 1 töø C vaøo bit A0 cuûa thanh ghi A. Bit A7 seõ
dòch sang bit Cy.
165
Trong 8 laàn dòch ñaàu tieân thì sau khi dòch, bit Cy luoân baèng 0. Neân ta duøng leänh nhaûy coù
ñieàu kieän khi C = 0 thì nhaûy ñeå quay laïi tieáp tuïc thöïc hieän.
Cho ñeán laàn xoay thöù 9 thì C = 1 thì ñieàu kieän khoâng coøn thoõa maõn neân leänh nhaûy coù ñieàu
kieän thì leänh nhaûy “sjmp ” môùi ñöôïc thöïc hieän ñeå laøm laïi töø ñaàu.
4. Thöïc hieän caùc böôùc gioáng nhö caùc baøi tröôùc.
III. Caùc chöông trình maãu:
1. Chöông trình ñieàu khieån port 0 saùng daàn vaø taét daàn:
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;chuong trinh dieu khien port 0 sang dan len va tat dan
;ket noi port 0 den 8 led bang cap 8 soi
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
org 0000h
lb: mov p0,#00h ;tat port 0
lb1: lcall delay ;goi chuong trinh con delay
setb c ;lam cho bit C = 1
mov a,p0 ;chuyen noi dung port0 vao thanh ghi A
rlc a ;xoay noi dung thanh ghi A sang trai
mov p0,a ;tra lai cho port0
jnc lb1 ;nhay ve de thuc hien tiep khi c=0
lb2: lcall delay ;goi chuong trinh con delay
clr c ;lam cho bit C = 0
mov a,p0 ;chuyen noi dung port0 vao thanh ghi A
rlc a ;xoay noi dung thanh ghi A sang trai
mov p0,a ;tra lai cho port0
jc b2 ;nhay ve de thuc hien tiep khi c=1
sjmp lb ;quay ve lam lai tu dau
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;chuong trinh con delay
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
delay: mov r6,#0ffh
de: mov r7,#0ffh
djnz r7,$
djnz r6,de
ret
end
2. Chöông trình ñieàu khieån port 0 vaø port 1 saùng daàn vaø taét daàn:
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;chuong trinh dieu khien port 0, 1 sang dan len va tat dan
;ket noi port 0 den 8 led bang cap 8 soi tuong tu cho port1
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
org 0000h
lb: mov p0,#00h ;tat port 0
mov p1,#00h ;tat port 1
lb1: lcall delay ;goi chuong trinh con delay
setb c ;lam cho bit C = 1
mov a,p0 ;chuyen noi dung port0 vao thanh ghi A
rlc a ;xoay noi dung thanh ghi A sang trai
mov p0,a ;tra lai cho port0
mov a,p1 ;chuyen noi dung port1 vao thanh ghi A
rlc a ;xoay noi dung thanh ghi A sang trai
mov p1,a ;tra lai cho port1
166
jnc lb1 ;nhay ve de thuc hien tiep khi c=0
lb2: lcall delay ;goi chuong trinh con delay
clr c ;lam cho bit C = 0
mov a,p0 ;chuyen noi dung port0 vao thanh ghi A
rlc a ;xoay noi dung thanh ghi A sang trai
mov p0,a ;tra lai cho port0
mov a,p1 ;chuyen noi dung port1 vao thanh ghi A
rlc a ;xoay noi dung thanh ghi A sang trai
mov p1,a ;tra lai cho port1
jc lb2 ;nhay ve de thuc hien tiep khi c=1
sjmp lb ;quay ve lam lai tu dau
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;chuong trinh con delay
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
delay: mov r6,#0ffh
de: mov r7,#0ffh
djnz r7,$
djnz r6,de
ret
end
IV. Baøi taäp öùng duïng:
1. Duøng port 0 keát noái vôùi 8 led, haõy vieát chöông trình ñieàu khieån 1 led saùng vaø di chuyeån töø
traùi sang phaûi.
2. Haõy vieát chöông trình ñieàu khieån 4 port 0, 1, 2, 3 saùng daàn vaø taét daàn töø treân xuoáng vaø töø
döôùi leân.
3. Haõy vieát chöông trình ñieàu khieån 4 port 0, 1, 2, 3 saùng daàn vaø taét daàn töø ngoaøi vaøo trong
vaø töø trong ra ngoaøi.
167
NGAØY :
THÖÏC HAØNH VI ÑIEÀU KHIEÅN
SOÁ TIEÁT :
BAØI SOÁ : 1-3
LÔÙP :
CHÖÔNG TRÌNH ÑIEÀU KHIEÅN LED SAÙNG DOÀN MSSV :
I. Muïc ñích yeâu caàu:
Hieåu caùch söû duïng leänh xoay keát hôïp vôùi leänh logic ñeå thöïc hieän chöông trình ñieàu khieån led
saùng doàn.
II. Trình töï thöïc hieän:
1. Giaûi thuaät:
Begin
Taét 8 led
Möùc 1 dòch chuyeån töø
led 1ñeán led 8
Möùc 1 dòch chuyeån töø
led 1ñeán led 7
Möùc 1 dòch chuyeån töø
led 1ñeán led 2
Möùc 1 dòch chuyeån
vaøo led 1
End
2. Keát noái maïch theo trình töï :
- Duøng bus daây keát noái port 0 vôùi moät trong boán PINHD cuûa daõy 32 led.
3. Khôûi ñoäng phaàn meàm, taïo File môùi, vaø bieân soaïn chöông trình sau :
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;chuong trinh dieu khien port 0 sang don va tat het - cach I
;ket noi port 0 den 8 led bang cap 8 soi
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
org 0800h ;khai bao dia chi luu tru vung du lieu
ma: db 00000000b
db 00000001b
168
db 00000010b
db 00000100b
db 00001000b
db 00010000b
db 00100000b
db 01000000b
db 10000000b
;lan thu hai la 7 byte
db 10000001b
db 10000010b
db 10000100b
db 10001000b
db 10010000b
db 10100000b
db 11000000b
;lan thu 3 la 6 byte
db 11000001b
db 11000010b
db 11000100b
db 11001000b
db 11010000b
db 11100000b
;lan thu 4 la 5 byte
db 11100001b
db 11100010b
db 11100100b
db 11101000b
db 11110000b
;lan thu 5 la 4 byte
db 11110001b
db 11110010b
db 11110100b
db 11111000b
;lan thu 6 la 3 byte
db 11111001b
db 11111010b
db 11111100b
;lan thu 7 la 2 byte
db 11111101b
db 11111110b
;lan thu 8 la 1 byte
db 11111111b ;byte du lieu cuoi cung = FFH
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
org 0000h ;khai bao dia chi chtr chinh
lb: mov dptr,#0800h ;nap dia chi luu du lieu vao thghi dptr
lb1: clr a
movc a,@A+dptr ;lay du lieu tu bo nho dua vao A
mov p0,a ;goi ra port 0
lcall delay ;goi chtr con delay
inc dptr ;tang dptr len o nho ke
cjne a,#0ffh,lb1 ;ktra co phai la byte ket thuc hay chua
sjmp lb ;quay tro lam lai khi da het du lieu
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;chuong trinh con delay
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
delay: mov r6,#0ffh
de2 : mov r7,#0ffh
djnz r7,$
djnz r6,de
ret
end
169
Theo caùch vieát 1 ta haõy quan saùt döõ lieäu trong chöông trình ñaõ ñöôïc saép xeáp theo ñuùng trình töï
vaø chöông trình chæ thöïc hieän nhieäm vuï laø di chuyeån laàn löôïc caùc byte döõ lieäu coù trong boä nhôù ñem
gôûi vaøo A vaø sau ñoù gôûi ra port 0.
Leänh “ma: db döõ lieäu “ coù chöùc naêng naïp caùc byte döõ lieäu vaøo vuøng nhôù coù ñòa chæ 0800H.
Byte cuoái cuøng laø FFH laø byte baùo cho bieát heát d74 lieäu.
Döõ lieäu vieát döôùi daïng soá nhò phaân cho deã nhìn thaáy vaø coù theå vieát döôùi daïng soá hex – khi ñoù
chöông trình seõ ngaén hôn raát nhieàu. Phaàn khai baùo döõ lieäu döôùi daïng soá hex nhö sau:
org 0800h ;khai bao dia chi luu tru vung du lieu
ma: db 00H
DB 01H,02H,04H,08H,10H,20H,40H,80H ;
DB 81H,82H,84H,88H,90H,0A0H,0C0H
DB 0C1H,0C2H,0C4H,0C8H,0D0H,0E0H
DB 0E1H,0E2H,0E4H,0E8H,0F0H
DB 0F1H,0F2H,0F4H,0F8H
DB 0F9H,0FAH,0FCH
DB 0FDH,0FEH
DB 0FFH
Chöông trình gioáng nhö treân nhöng vieát theo caùch II:
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;chuong trinh dieu khien 8 led sang don dung port 0
;ket noi port 0 den 8 led bang 1 soi cap 8 soi
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;dinh nghia cac bien
x0 equ 10h
y0 equ 20h
dem equ 30h
tam equ 31h
led0 equ p0
led1 equ p1
led2 equ p2
led3 equ p3
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;bat dau chuong trinh chinh
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
org 0000h
mov led2,#0 ;tat cac led chua su dung
mov led3,#0
mov led1,#0
lb: mov led0,#0
lcall delay ;tat 16 led va delay
mov dem,#8 ;led 1 se di chuyen 8 vi tri
mov x0,#0
lb2: mov tam,dem
mov y0,#00000001b ;luu trng thai ban dau
lb1: mov a,y0
orl a,x0
mov led0,a
lcall delay
170
clr c ;xoa Cy de chi dich 1 led di
mov a,y0
rlc a
mov y0,a
djnz tam,lb1 ;giam ndung o nho (11h) 0 thi quay lai
mov x0,led0
djnz dem,lb2 ;giam bien dem de xu li lan ke
ljmp lb
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;chuong trinh con delay
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
delay: mov 7eh,#040h
del: mov 7fh,#0ffh
djnz 7fh,$
djnz 7eh,del
ret
end
Chöông trình khoâng khoù !, baïn haõy töï nghieân cöùu giaûi thuaät?
III. Caùc chöông trình maãu:
Chöông trình ñieàu khieån 16 led saùng doàn:
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;chuong trinh dieu khien 16 led sang don dung port 0, 1
;ket noi port 0 va port 1 den 16 led bang 2 soi cap 8 soi
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;dinh nghia cac bien
x0 equ 10h
x1 equ 11h
y0 equ 20h
y1 equ 21h
dem equ 30h
tam equ 31h
led0 equ p0
led1 equ p1
led2 equ p2
led3 equ p3
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;bat dau chuong trinh chinh
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
org 0000h
mov led2,#0 ;tat cac led chua su dung
mov led3,#0
lb: mov led1,#0
mov led0,#0
lcall delay ;tat 16 led va delay
mov dem,#16 ;led 1 se di chuyen 16 vi tri
mov x0,#0
mov x1,#0
171
lb2: mov tam,dem
mov y0,#00000001b ;luu trng thai ban dau
mov y1,#00000000b
lb1: mov a,y0
orl a,x0
mov led0,a
mov a,y1
orl a,x1
mov led1,a
lcall delay
clr c ;xoa Cy de chi dich 1 led di
mov a,y0
rlc a
mov y0,a
mov a,y1
rlc a
mov y1,a
djnz tam,lb1 ;giam ndung o nho (11h) 0 thi quay lai
mov x0,led0
mov x1,led1
djnz dem,lb2 ;giam bien dem de xu li lan ke
ljmp lb
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;chuong trinh con delay
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
delay: mov 7eh,#040h
del: mov 7fh,#0ffh
djnz 7fh,$
djnz 7eh,del
ret
end
IV. Baøi taäp öùng duïng:
1. Haõy vieát chöông trình ñieàu khieån 3 port: port0, port1, port2 saùng doàn.
2. Haõy vieát chöông trình ñieàu khieån 4 port: port0, port1, port2 vaø port3 saùng doàn.
3. Haõy vieát chöông trình saùng doàn 2 port 0 vaø 1 töø ngoaøi vaøo trong vaø töø trong ra ngoaøi.
4. Haõy vieát chöông trình saùng doàn 4 port 0, 1, 2 vaø 3 töø ngoaøi vaøo trong vaø töø trong ra
ngoaøi.
172
NGAØY :
THÖÏC HAØNH VI ÑIEÀU KHIEÅN
SOÁ TIEÁT :
BAØI SOÁ : 1-4
LÔÙP :
CHÖÔNG TRÌNH ÑIEÀU KHIEÅN MSSV :
ÑIEÅM SAÙNG DÒCH CHUYEÅN MAÁT DAÀN
I. Muïc ñích yeâu caàu:
Hieåu caùch söû duïng leänh xoay keát hôïp vôùi leänh logic ñeå thöïc hieän chöông trình ñieàu khieån led
laøm quen vôùi laäp trình.
II. Trình töï thöïc hieän:
Begin
1. Giaûi thuaät ñieàu khieån 8 led dòch chuyeån maát daàn:
8 led saùng - delay
X= 1111 1110
Y= 0000 0001
Ñeám = 8
Z=Y
Led = X or Z
Delay
Xoay Z sang phaûi vôùi C = 0
Z = 0000 0000
S
Ñ
Xoay X sang traùi vôùi C = 0
Xoay Y sang traùi 8 bit
Giaûm bieán ñeám
Ñeám = 0
S
Ñ
End
173
2. Keát noái maïch theo trình töï :
- Duøng bus daây keát noái port 0 vôùi moät trong boán PINHD cuûa daõy 32 led.
3. Khôûi ñoäng phaàn meàm, taïo File môùi vaø bieân soaïn chöông trình sau:
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;chuong trinh dieu khien 8 led sang het va diem sang dich chuyen tat dan
;su dung 1 port 0
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;dinh nghia cac nhan
x0 equ 11h
y0 equ 21h
z0 equ r0
led0 equ p0
led1 equ p1
led2 equ p2
led3 equ p3
dem equ 40h
org 0000h
mov led2,#0
mov led3,#0
mov led1,#0h
main: mov led0,#0ffh
lcall delay
mov dem,#8
mov x0,#11111110b
mov y0,#00000001b
m2: mov z0,y0
m1: lcall xoay_z
lcall x_or_z
lcall delay
cjne z0,#00,m1
lcall xoay_x
lcall xoay_y
djnz dem,m2
ljmp main
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;bat dau cac chuong trinh con
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xoay_z: clr c
mov a,z0
rrc a
mov z0,a
ret
x_or_z: mov a,x0
orl a,z0
mov led0,a
ret
174
xoay_x: clr c
mov a,x0
rlc a
mov x0,a
ret
xoay_y: clr c
mov a,y0
rlc a
mov y0,a
ret
delay: mov r6,#0ffh
de: mov r7,#0ffh
djnz r7,$
djnz r6,de
ret
end
III. Caùc chöông trình maãu:
Chöông trình maãu ñieàu khieån 16 led dòch chuyeån taét daàn
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;chuong trinh dieu khien 16 led sang het va diem sang dich chuyen tat dan
;su dung 2 port 0 va port 1
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;dinh nghia cac nhan
x1 equ 10h
x0 equ 11h
y1 equ 20h
y0 equ 21h
z1 equ r1
z0 equ r0
led0 equ p0
led1 equ p1
led2 equ p2
led3 equ p3
dem equ 40h
org 0000h
mov led2,#0
mov led3,#0
main: mov led1,#0ffh
mov led0,#0ffh
lcall delay
mov dem,#16
mov x1,#11111111b ;byte cao
mov x0,#11111110b ;byte thap
mov y1,#00000000b ;byte cao
175
mov y0,#00000001b ;byte thap
m2: mov z1,y1
mov z0,y0
m1: lcall xoay_z
lcall x_or_z
lcall delay
cjne z0,#00,m1
cjne z1,#00,m1
lcall xoay_x
lcall xoay_y
djnz dem,m2
ljmp main
xoay_z: clr c
mov a,z1
rrc a
mov z1,a
mov a,z0
rrc a
mov z0,a
ret
x_or_z: mov a,x0
orl a,z0
mov led0,a
mov a,x1
orl a,z1
mov led1,a
ret
xoay_x: clr c
mov a,x0
rlc a
mov x0,a
mov a,x1
rlc a
mov x1,a
ret
xoay_y: clr c
mov a,y0
rlc a
mov y0,a
mov a,y1
rlc a
mov y1,a
ret
delay: mov r6,#0ffh
de: mov r7,#0ffh
djnz r7,$
djnz r6,de
ret
176
end
IV. Baøi taäp:
1. Haõy vieát chöông trình ñieàu khieån 3 port: 0, 1, 2 gioáng nhö treân.
2. Haõy vieát chöông trình ñieàu khieån 4 port: 0, 1, 2, 3 gioáng nhö treân.
3. Haõy vieát chöông trình ñieàu khieån 4 port 0, 1, 2, 3 vôùi ñieåm saùng dòch chuyeån maát daàn töø
theo chieàu töø trong ra vaø töø ngoaøi vaøo.
177