Tải bản đầy đủ (.pdf) (6 trang)

Tài liệu Học cách lập trình 8051 qua một số bài toán đơn giản pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (203.06 KB, 6 trang )

How to programming a microprocessor-based system

Written by Kien NX, MicroStudy Group
TÀI LIU HNG DN LP TRÌNH CHO H VI X LÝ <phn I>

Khi mt bài toán thc t đc đa ra, ta cn phi tìm hiu cn k các yêu
cu do bài toán đt ra và thc hin gii quyt theo các bc sau:
− Bc 1: nh hng gii quyt.
− Bc 2: La chn phng án thit k phn cng.
− Bc 3: Lp lu đ thut toán cho thit k ph
n mm.
− Bc 4: Th hin lu đ thut toán bng các lnh c th.

Các bc 1 và 2 đã đc trình bày trong các tài liu hng dn thit k các
mch thí nghim,  đây ch chú trng vào gii quyt các bc 3 và 4. Trong giai
đon thit k phn mm, bc 3 không ch là bc tiên phong mà còn là bc
có ý ngha quyt đnh đi vi s thành công và cht lng c
a sn phm. Bc
4 ch là bc hoàn thin cui cùng ca vic gii quyt mt bài toán.
I. Cách xây dng mt lu đ thut toán:
Trc ht nói v lu đ thut toán, nh đã đ cp đn trong phn các kin
thc cn bn trong K thut Vi x lý, lu đ thut toán có vai trò đc bit quan
trng trong thit k phn mm. V
 c bn, mt lu đ thut toán có th đc
xây dng bng các biu tng sau đây:
1. Biu tng 1:



ây là biu tng dùng đ ch s bt đu hay kt thúc mt nhim v hay mt
chng trình. Biu tng này ch có mt đu vào hoc mt đu ra.


2. Biu tng 2:




ây là biu tng dùng đ din đt s thc hin mt thao tác nào đó. Biu
tng này có mt đu vào và mt đu ra.
3. Biu tng 3:


How to programming a microprocessor-based system

Written by Kien NX, MicroStudy Group
ây là biu tng dùng đ din đt s la chn mt trong hai phng án đúng
hoc sai đi vi điu kin hay tình hung đc nêu ra trong đó. Biu tng này
ch có mt đu vào nhng li có hai đu ra.
Lu ý là phi đc bit tuân th s lng các đu vào ra đi vi mi loi biu
tng.
 làm rõ hn cách xây dng mt lu đ
c th, MicroStudy s đa ra mt bài
toán mu đn gin trên c s phn mch phn cng thí nghim và lu đ mu
đ gii quyt bài toán đó.
Bài toán đt ra: nhp nháy 8 LED đn ni vi cng P1 theo chu k 1 giây sáng
và 1 giây tt.
Nh vy sau khi phân tích yêu cu do bài toán đt ra, lu đ thut toán phi
đc xây dng nh sau:


















Hoc n
u không quan tâm đn trng thái bt đu ca s nhp nháy (tc là không
cn bit sáng trc hay tt trc), ta có th có đc lu đ đn gin hn:












Begin
Sáng 8 LED

Tr 1 giây
Tt 8 LED
Tr 1 giây
Begin
o trng thái ca
8 LED
Tr 1 giây
How to programming a microprocessor-based system

Written by Kien NX, MicroStudy Group

Vi lu đ thut toán th nht ta có th thc hin bc 4 nh sau:
#include <sfr51.inc>
org 00h ;đa ch reset ca vi điu khin h 8051
ljmp main

org 40h ;đt chng trình chính bt đu t đa ch này
đ tránh không đè lên vùng các véct ngt
main:
mov p1,#0 ;cho sáng 8 đèn LED ni vi P1
lcall delay1s ;tr 1 giây
mov p1,#0ffh ;tt 8 đèn LED ni vi P1
lcall delay1s ;tr
 1 giây
sjmp main ;quay tr li tip tc nh th

delay1s: ; đây là chng trình con to 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 ;kt thúc chng trình

Vi lu đ thut toán th hai, chng trình có th đc vit 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 ;ly giá tr hin thi ca cng P1
cpl a ;đo nó đi (lt trng thái, 0 thành 1, 1 thành 0)
mov p1,a ;đa ra tr li P1 đ thc hin đo trng 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 chng trình trên có s dng chng trình con “delay1s”. Chng
trình con này s dng các l
nh NOP đ tiêu th thi gian cht khong 1µs vi
thch anh 12MHz. Có 3 vòng lp đ to ra 10(ca vòng ngoài cùng)*100(ca
vòng gia)*100(ca vòng trong cùng)*10µs(do 8 lnh NOP và mt lnh djnz

gây ra) = 1,000,000µs = 1 giây. Lu đ thut toán cho chng trình con
“delay1s” nh sau:









How to programming a microprocessor-based system

Written by Kien NX, MicroStudy Group












































End
bin đm 1 = 10
bin đm 2 = 100

bin đm 3 = 100
Tr 10
µ
s
bin đm 3 = 0?
bin đm 3 - 1
bin đm 2 = 0?
bin đm 2 - 1
bin đm 1 = 0?
bin đm 1 - 1
Begin
s
s
s
How to programming a microprocessor-based system

Written by Kien NX, MicroStudy Group
II. Bài tp thc hành:
Vit lu đ thut toán gii quyt các bài toán sau:
− Sáng ln lt các LED ni vi cng P1 (theo th t P1.0 đu tiên, P1.7
sau cùng ri li quay v P1.0). Ti mt thi đim ch có mt LED sáng và
thi gian sáng ca các LED đu là 1 giây.
− Kim tra và đáp ng li s kin phím bm  cng P3.2. Nu phím bm thì
bt sáng c 8 LED ni vi c
ng P1. Nh phím ra thì tt tt c 8 LED.
− Hin th s 123  các LED 7 thanh.
− Hin th s đm tng dn bng các LED 7 thanh (đm t 000 đn 999 ri
li v 000, mi giây tng s đm mt ln).
− Xác đnh phím bm trong s 16 phím ca ma trn phím và hin th s th
t ca phím đc bm lên các LED 7 thanh (t 1 đn 16, không có phím

bm thì hi
n s 0).

×