K thut vi x lý cn bn và vi điu khin 8051
Written by Kieennx, MicroStudy group
Bài tp 1: Cho sáng ln lt tng LED, mi LED sáng 1 giây.
iâ
y
Tt LED 1, sán
g
LED 2
T
r
1
g
iâ
y
Tt LED 2, sán
g
LED 3
Tt LED 7, sán
g
LED 8
T
r
1
g
iâ
y
K thut vi x lý cn bn và vi điu khin 8051
Written by Kieennx, MicroStudy group
lcall tre_1s
;…
mov p1,#01111111b
lcall tre_1s
;…nh trên….
end
Lu ý là trong các đon chng trình trên, ngn xp đc khi to vi giá tr ban đu ca
thanh ghi con tr ngn xp SP là 5fh, tc là các đa ch hay d liu ct vào ng
n xp s bt
đu t ô nh 60h tr đi. Vic khi to ngn xp là mt thao tác không th thiu khi trong
chng trình có s dng lnh gi chng trình con hoc các ngt.
K thut vi x lý cn bn và vi điu khin 8051
Written by Kieennx, MicroStudy group
Bài tp 2: kim tra phím bm ni vi P3.2, khi phím đc bm thì sáng c 8 LED, khi không
bm phím thì tt c 8 LED.
Nu không s dng ngt, ta có th vit chng trình gn ging vi chng trình trên, ch
khác là ph
i thêm thao tác đi nh phím ra trc khi quay tr li quét kim tra đin áp ti
chân P3.2. Nu không có thao tác này, chân P3.2 xung mc 0 s b gây ra nhiu ln đo
trng thái LED bi vì chân P3.2 s đc quét liên tc, thy còn mc 0 là li đo trng thái,
cho đn khi nh phím ra thì các LED s cùng sáng hoc cùng tt, tùy thuc vào vic ln đo
trng thái nào đc thc hin cui cùng. Nh vy s không đúng vi mong mu
n là ch đo
mt ln khi bm mt ln.
…
main:
jb P3.2,$ ;nhy ti ch ch cho đn khi nào P3.2 = 0 (tc là ch
cho đn khi có phím bm
Begin
t P3.2 là cn
g
vào
Sán
g
c 8 LED
Tt c 8 LED
Có
p
hím bm?
K thut vi x lý cn bn và vi điu khin 8051
Written by Kieennx, MicroStudy group
phim_bam:
mov a,P1 ;đc giá tr hin thi ca cng P1
cpl a ;đo trng thái đc đc đi
tng ng. Trong trng hp này (trng hp ngt ngoài s 0) thì đa ch vector ngt là 03h
trong b nh chng trình.
Chng trình gii quyt bài toán trên s nh sau:
…
org 00h
ljmp main
org 03h
ljmp ngat_0
org 40h
main:
mov SP,#5fh ;khi to ngn xp vì có dùng ngt
setb it0 ;đt ngt ch đ ngt theo sn cho ngt ngoài 0, nu mun
ngt theo mc thì không c
n có lnh này vì khi 8051 reset
xong, t đng mc đnh là ngt theo mc (IT0 = 0)
setb ex0 ;cho phép ngt ngoài 0 cp riêng
setb ea ;cho phép ngt cp chung
;khác vi chng trình trc, bây gi s dng ngt nên CPU không cn phi thm dò
mc đin áp ca chân P3.2 mà s có thi gian làm các vic khác, khi có s kin phím
bm xy ra, cu trúc ngt s t phát hin và thông báo cho CPU đ x lý và đáp ng
main_loop:
;…có th làm gì tùy thích đây…
sjmp loop
K thut vi x lý cn bn và vi điu khin 8051
Written by Kieennx, MicroStudy group
ngat_0:
mov a,P1
cpl a
mov P1,a