How to programming a microprocessor-based system Written by Kien NX, MicroStudy Group TÀI LIU HNG DN LP TRÌNHCHO 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). . 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,. đ 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