Khi mt bi ton thc t c a ra, ta cn phi tm hiu cn k cc yu cu do bi ton t ra v thc hin gii quyt theo cc bc sau: Bc 1: nh hng gii quyt. Bc 2: La chn phng n thit k phn cng. Bc 3: Lp lu thut ton cho thit k phn mm. Bc 4: Th hin lu thut ton bng cc lnh c th.
Cc bc 1 v 2 c trnh by trong cc ti liu hng dn thit k cc mch th nghim, y ch ch trng vo gii quyt cc bc 3 v 4. Trong giai on thit k phn mm, bc 3 khng ch l bc tin phong m cn l bc c ngha quyt nh i vi s thnh cng v cht lng ca sn phm. Bc 4 ch l bc hon thin cui cng ca vic gii quyt mt bi ton. I. Cch xy dng mt lu thut ton: Trc ht ni v lu thut ton, nh cp n trong phn cc kin thc cn bn trong K thut Vi x l, lu thut ton c vai tr c bit quan trng trong thit k phn mm. V c bn, mt lu thut ton c th c xy dng bng cc biu tng sau y: 1. Biu tng 1:
y l biu tng dng ch s bt u hay kt thc mt nhim v hay mt chng trnh. Biu tng ny ch c mt u vo hoc mt u ra. 2. Biu tng 2:
y l biu tng dng din t s thc hin mt thao tc no . Biu tng ny c mt u vo 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 dng din t s la chn mt trong hai phng n ng hoc sai i vi iu kin hay tnh hung c nu ra trong . Biu tng ny ch c mt u vo nhng li c hai u ra. Lu l phi c bit tun th s lng cc u vo ra i vi mi loi biu tng. lm r hn cch xy dng mt lu c th, MicroStudy s a ra mt bi ton mu n gin trn c s phn mch phn cng th nghim v lu mu gii quyt bi ton . Bi ton t ra: nhp nhy 8 LED n ni vi cng P1 theo chu k 1 giy sng v 1 giy tt. Nh vy sau khi phn tch yu cu do bi ton t ra, lu thut ton phi c xy dng nh sau:
Hoc nu khng quan tm n trng thi bt u ca s nhp nhy (tc l khng cn bit sng trc hay tt trc), ta c th c c lu n gin hn:
Begin Sng 8 LED Tr 1 giy Tt 8 LED Tr 1 giy Begin o trng thi ca 8 LED Tr 1 giy How to programming a microprocessor-based system
Written by Kien NX, MicroStudy Group
Vi lu thut ton 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 trnh chnh bt u t a ch ny trnh khng ln vng cc vct ngt main: mov p1,#0 ;cho sng 8 n LED ni vi P1 lcall delay1s ;tr 1 giy mov p1,#0ffh ;tt 8 n LED ni vi P1 lcall delay1s ;tr 1 giy sjmp main ;quay tr li tip tc nh th
delay1s: ; y l chng trnh con to tr 1 giy 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 thc chng trnh
Vi lu thut ton th hai, chng trnh 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 thi, 0 thnh 1, 1 thnh 0) mov p1,a ;a ra tr li P1 thc hin o trng thi cc n LED lcall delay1s sjmp main
Trong hai chng trnh trn c s dng chng trnh con delay1s. Chng trnh con ny s dng cc lnh NOP tiu th thi gian cht khong 1s vi thch anh 12MHz. C 3 vng lp to ra 10(ca vng ngoi cng)*100(ca vng gia)*100(ca vng trong cng)*10s(do 8 lnh NOP v mt lnh djnz gy ra) = 1,000,000s = 1 giy. Lu thut ton cho chng trnh 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. Bi tp thc hnh: Vit lu thut ton gii quyt cc bi ton sau: Sng ln lt cc LED ni vi cng P1 (theo th t P1.0 u tin, P1.7 sau cng ri li quay v P1.0). Ti mt thi im ch c mt LED sng v thi gian sng ca cc LED u l 1 giy. Kim tra v p ng li s kin phm bm cng P3.2. Nu phm bm th bt sng c 8 LED ni vi cng P1. Nh phm ra th tt tt c 8 LED. Hin th s 123 cc LED 7 thanh. Hin th s m tng dn bng cc LED 7 thanh (m t 000 n 999 ri li v 000, mi giy tng s m mt ln). Xc nh phm bm trong s 16 phm ca ma trn phm v hin th s th t ca phm c bm ln cc LED 7 thanh (t 1 n 16, khng c phm bm th hin s 0).