How to programming a microprocessor-based system
Written by Kien NX, MicroStudy Group
TÀI LIU HNG DN LP TRÌNH CHO H VI X LÝ <phn I>
Khi mt bài toán thc t đc đa ra, ta cn phi tìm hiu cn k các yêu
cu do bài toán đt ra và thc hin gii quyt theo các bc sau:
− Bc 1: nh hng gii quyt.
− Bc 2: La chn phng án thit k phn cng.
− Bc 3: Lp lu đ thut toán cho thit k ph
n mm.
− Bc 4: Th hin lu đ thut toán bng các lnh c th.
Các bc 1 và 2 đã đc trình bày trong các tài liu hng dn thit k các
mch thí nghim, đây ch chú trng vào gii quyt các bc 3 và 4. Trong giai
đon thit k phn mm, bc 3 không ch là bc tiên phong mà còn là bc
có ý ngha quyt đnh đi vi s thành công và cht lng c
a sn phm. Bc
4 ch là bc hoàn thin cui cùng ca vic gii quyt mt bài toán.
I. Cách xây dng mt lu đ thut toán:
Trc ht nói v lu đ thut toán, nh đã đ cp đn trong phn các kin
thc cn bn trong K thut Vi x lý, lu đ thut toán có vai trò đc bit quan
trng trong thit k phn mm. V
c bn, mt lu đ thut toán có th đc
xây dng bng các biu tng sau đây:
1. Biu tng 1:
ây là biu tng dùng đ ch s bt đu hay kt thúc mt nhim v hay mt
chng trình. Biu tng này ch có mt đu vào hoc mt đu ra.
2. Biu tng 2:
ây là biu tng dùng đ din đt s thc hin mt thao tác nào đó. Biu
tng này có mt đu vào và mt đu ra.
3. Biu tng 3:
How to programming a microprocessor-based system
Written by Kien NX, MicroStudy Group
ây là biu tng dùng đ din đt s la chn mt trong hai phng án đúng
hoc sai đi vi điu kin hay tình hung đc nêu ra trong đó. Biu tng này
ch có mt đu vào nhng li có hai đu ra.
Lu ý là phi đc bit tuân th s lng các đu vào ra đi vi mi loi biu
tng.
làm rõ hn cách xây dng mt lu đ
c th, MicroStudy s đa ra mt bài
toán mu đn gin trên c s phn mch phn cng thí nghim và lu đ mu
đ gii quyt bài toán đó.
Bài toán đt ra: nhp nháy 8 LED đn ni vi cng P1 theo chu k 1 giây sáng
và 1 giây tt.
Nh vy sau khi phân tích yêu cu do bài toán đt ra, lu đ thut toán phi
đc xây dng nh sau:
Hoc n
u không quan tâm đn trng thái bt đu ca s nhp nháy (tc là không
cn bit sáng trc hay tt trc), ta có th có đc lu đ đn gin hn:
Begin
Sáng 8 LED
Tr 1 giây
Tt 8 LED
Tr 1 giây
Begin
o trng thái ca
8 LED
Tr 1 giây
How to programming a microprocessor-based system
Written by Kien NX, MicroStudy Group
Vi lu đ thut toán th nht ta có th thc hin bc 4 nh sau:
#include <sfr51.inc>
org 00h ;đa ch reset ca vi điu khin h 8051
ljmp main
org 40h ;đt chng trình chính bt đu t đa ch này
đ tránh không đè lên vùng các véct ngt
main:
mov p1,#0 ;cho sáng 8 đèn LED ni vi P1
lcall delay1s ;tr 1 giây
mov p1,#0ffh ;tt 8 đèn LED ni vi P1
lcall delay1s ;tr
1 giây
sjmp main ;quay tr li tip tc nh th
delay1s: ; đây là chng trình con to tr 1 giây
mov r1,#10
loop1:
mov r2,#100
loop2:
mov r3,#100
loop3:
nop
nop
nop
nop
nop
nop
nop
nop
djnz r3,loop3
djnz r2,loop2
djnz r1,loop1
ret
end ;kt thúc chng trình
Vi lu đ thut toán th hai, chng trình có th đc vit là:
#include <sfr51.inc>
org 00h
ljmp main
org 40h
main:
How to programming a microprocessor-based system
Written by Kien NX, MicroStudy Group
mov a,p1 ;ly giá tr hin thi ca cng P1
cpl a ;đo nó đi (lt trng thái, 0 thành 1, 1 thành 0)
mov p1,a ;đa ra tr li P1 đ thc hin đo trng thái
các đèn LED
lcall delay1s
sjmp main
delay1s:
mov r1,#10
loop1:
mov r2,#100
loop2:
mov r3,#100
loop3:
nop
nop
nop
nop
nop
nop
nop
nop
djnz r3,loop3
djnz r2,loop2
djnz r1,loop1
ret
end
Trong hai chng trình trên có s dng chng trình con “delay1s”. Chng
trình con này s dng các l
nh NOP đ tiêu th thi gian cht khong 1µs vi
thch anh 12MHz. Có 3 vòng lp đ to ra 10(ca vòng ngoài cùng)*100(ca
vòng gia)*100(ca vòng trong cùng)*10µs(do 8 lnh NOP và mt lnh djnz
gây ra) = 1,000,000µs = 1 giây. Lu đ thut toán cho chng trình con
“delay1s” nh sau:
How to programming a microprocessor-based system
Written by Kien NX, MicroStudy Group
End
bin đm 1 = 10
bin đm 2 = 100
bin đm 3 = 100
Tr 10
µ
s
bin đm 3 = 0?
bin đm 3 - 1
bin đm 2 = 0?
bin đm 2 - 1
bin đm 1 = 0?
bin đm 1 - 1
Begin
s
s
s
How to programming a microprocessor-based system
Written by Kien NX, MicroStudy Group
II. Bài tp thc hành:
Vit lu đ thut toán gii quyt các bài toán sau:
− Sáng ln lt các LED ni vi cng P1 (theo th t P1.0 đu tiên, P1.7
sau cùng ri li quay v P1.0). Ti mt thi đim ch có mt LED sáng và
thi gian sáng ca các LED đu là 1 giây.
− Kim tra và đáp ng li s kin phím bm cng P3.2. Nu phím bm thì
bt sáng c 8 LED ni vi c
ng P1. Nh phím ra thì tt tt c 8 LED.
− Hin th s 123 các LED 7 thanh.
− Hin th s đm tng dn bng các LED 7 thanh (đm t 000 đn 999 ri
li v 000, mi giây tng s đm mt ln).
− Xác đnh phím bm trong s 16 phím ca ma trn phím và hin th s th
t ca phím đc bm lên các LED 7 thanh (t 1 đn 16, không có phím
bm thì hi
n s 0).