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

6 900 9
Tài liệu đã được kiểm tra trùng lặp
Học cách lập trình 8051 qua một số bài tập đơn giản

Đang tải... (xem toàn văn)

Thông tin tài liệu

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). . 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à. 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

Ngày đăng: 05/11/2013, 19:15

Tài liệu cùng người dùng

Tài liệu liên quan