intTypePromotion=1

Hướng dẫn bạn viết 10 chương trình ứng dụng cơ bản cho ic vi điều khiển

Chia sẻ: Bui T Son Son | Ngày: | Loại File: PDF | Số trang:33

0
116
lượt xem
46
download

Hướng dẫn bạn viết 10 chương trình ứng dụng cơ bản cho ic vi điều khiển

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bạn biết, kiến thức là luôn luôn cải biến và phát triển, do đó các bài viết của tôi ở đây cũng luôn theo tôn chỉ của RIXIN, nghĩa là nhật tân.Các bài viết luôn được người soạn đọc đi đọc lại và sửa lại và sửa lỗi, viết thêm vào các ý tưởng mới và các bài viết luôn được làm mới.Nó giống như một vườn cây được người trồng vườn cây chăm coi cẩn thận.

Chủ đề:
Lưu

Nội dung Text: Hướng dẫn bạn viết 10 chương trình ứng dụng cơ bản cho ic vi điều khiển

  1. Hư ng d n B n vi t 10 chương trình ng d ng cơ b n cho ic vi ñi u khi n AT89C51 L i nói ñ u B n bi t, ki n th c là luôn luôn c i bi n và phát tri n, do ñó các bài vi t c a tôi ñây cũng luôn theo tôn ch c a RIXIN, nghĩa là Nh t Tân (Ngày 日新,日新, 日新 m i, ngày m i, ngày ngày m i 日新,日新,日日新). Các bài vi t luôn ñư c ngư i so n ñ c ñi ñ c l i và s a l i, vi t thêm vào các ý tư ng m i và các bài vi t luôn ñư c làm tươi. Nó gi ng như m t vư n cây ñư c ngư i tr ng vư n chăm coi c n th n và khu vư n thì ñang ngày ngày sinh trư ng, các bài vi t s luôn m i, luôn khác và m i ngày ñ u ñư c b xung tu ch nh, và thêm m i. Mong B n thư ng xuyên quay l i ñ xem và góp ý. Ngư i so n: Vương Khánh Hưng. Trư c h t chúng ta hãy tìm hi u nguyên lý làm vi c c a ic vi ñi u khi n AT89C51 (B n xem hình). www. Beenvn.com - T Sách Online
  2. IC AT89C51 có 40 chân. Công d ng c a các chân như sau: * Chân 40 n i vào ñư ng ngu n 5V, chân 20 cho n i masse. * Chân 9 n i vào m ch reset v i ñi n tr 10K và t 10uF. Khi m ch v a ñư c c p ñi n, t n p và kéo chân 9 lên m c áp cao t o tác ñ ng reset. Sau m t lúc chân 9 tr l i m c áp th p. IC AT89C51 b t ñ u ho t ñ ng t tr ng thái kh i ñ u. * Chân 18, 19 m c th ch anh ñ nh t n. Như v y t n s xung nh p s là 1Mhz (hay 1us). Ngang th ch anh m c 2 t nh dùng ñ bù nhi t n t n (B n xem hình). www. Beenvn.com - T Sách Online
  3. * Chân 31 B n ph i cho treo lên m c áp cao, ñ xác ñ nh là m ch ch làm vi c v i b nh n i (Vì m ch không dùng thêm b nh ngoài). * B n chú ý, ic có 4 c ng, ñó là port 0 (p0), port 1 (p1), port 2 (p2) và port 3 (p3). M i c ng có 8 chân. M i ho t ñ ng c a ic vi ñi u khi n ñ u ñư c th c hi n trên các c ng này. Ghi nh n: B n th y ic AT89C51 ch c n m t ít linh ki n bên ngoài là ñã có th ch p hành các câu l nh ñã có trong b nh EEP-ROM, B n dùng các câu l nh này ñ xác ñ nh tr ng thái ñi n áp cao th p trên các c ng và dùng các m c áp cao th p này cho vi c ñi u khi n các d ng m ch ñi n, hay các thi t b . Bài 1: Vi t chương trình ñ Led trên chân s 1 (p1.0) luôn nh p nháy. www. Beenvn.com - T Sách Online
  4. ORG 0000h ; Kh i ñ u t thanh ghi có ñ a ch là 0000h START: CLR P1.0 ; ð t chân p1.0 xu ng m c áp th p, Led s sáng. LCALL DELAY ; Cho g i trình làm tr (có tên nhãn là delay). SETB P1.0 ; ð t chân p1.0 lên m c áp cao, Led s t t LCALL DELAY ; L i cho g i trình làm tr (có tên nhãn là delay). LJMP START ; Cho nh y v dòng l nh v i tên nhãn là start, công vi c s l p l i. DELAY: MOV R5,#20 ; N p tr 50 vào thanh nh r5. D1: MOV R6,#20 ; N p tr 20 vào thanh nh r6. D2: MOV R7,#248 ; N p tr 248 vào thanh nh r7. DJNZ R7,$ ; Cho gi m r7 theo bư c -1 cho ñ n 0. DJNZ R6,D2 ; Cho gi m r6 theo bư c -1, chưa b ng 0 thì nh y www. Beenvn.com - T Sách Online
  5. v D2. DJNZ R5,D1 ; Cho gi m r5 theo bư c -1, chưa b ng 0 thì nh y v D1. RET ; Quay l i dòng l nh sau l nh lcall. END ; d ng biên d ch. Phân tích cách vi t các câu l nh: B n th y kh i ñ u luôn dùng câu khai báo gi l nh: org 0000h Nghĩa là m i vi c s b t ñ u t thanh nh có ñ a ch là 0000h. ðây cũng là thanh mà chương trình s nh y ñ n m i khi B n nh n nút Reset. và k t thúc v i khai báo gi l nh: end Các câu l nh sau khai báo b i gi l nh "end" s không ñư c biên d ch. Nói rõ hơn v cách tính th i gian tr c a ño n chương trình con delay: Trong hình trên do dùng th ch anh 12MHz nên m t chu kỳ máy s là 1us. V y câu l nh: mov r6,#20 s th c hi n 2 l n. B n ph i cho nhân 2. T ñó cách tính như sau: MOV R6,#20 2l n 2 D1: MOV R7,#248 2l n 2 2+2×248=498 20× DJNZ R7,$ 2l n 2×248 (498 2×20=40 DJNZ R6,D1 2l n 10002 Qua các nhân th i gian tr c a ño n chương trình delay này là 10.002ms. N u B n mov vào r6=10 thì th i gian tr s là 5ms. www. Beenvn.com - T Sách Online
  6. N u B n mov vào r6=20 thì th i gian tr s là 10ms. Và ñ có th i gian tr là 200ms. B n dùng thêm thanh nh r5. Mov vào r5=20. Và như v y ño n chương trình tr delay 200ms như sau: DELAY: MOV R5,#20 ; chuy n vào thanh ghi r5 s th p phân 20. D1: MOV R6,#20 ; chuy n vào thanh ghi r6 s th p phân 20. D2: MOV R7,#248 ; chuy n vào thanh ghi r7 s th p phân 248. DJNZ R7,$ ; cho s trong r7 gi m theo bư c -1, ti ch và ch ñ n khi b ng 0. DJNZ R6,D2 ; cho s trong r6 gi m theo bư c -1, và nh y v D2 n u chưa b ng 0. DJNZ R5,D1 ; cho s trong r5 gi m theo bư c -1, và nh y v D1 n u chưa b ng 0. RET ; quay tr l i th c hi n dóng l nh sau l nh call. Bài 2: Vi t chương trình dùng Led trên chân 1 (p1.0) theo dõi khóa ñi n K1 trên chân 10 (p3.0). * K1 ñóng l i Led sáng. * K1 b ra Led t t. www. Beenvn.com - T Sách Online
  7. ORG 0000H ; Kh i ñ u t thanh ghi 0000h START: JB P3.0, LIG ; L nh nh y. N u chân p3.0 bit 1 thì nh y ñ n tên nhãn LIG, Led t t CLR P1.0 ; ð t p1.0 v bit 0, chân p1.0 m c áp th p. Led s sáng SJMP START ; Nh y v tên nhãn START. LIG: SETB P1.0 ; ð t p1.0 v bit 1, chân p1.0 m c áp cao, Led t t. SJMP START ; Nh y v tên nhãn START. END ; D ng biên d ch ñây. Phân tích cách vi t các câu l nh: ñây, B n dùng l nh nh y theo ñi u ki n bit, t c l nh jb (jump bit) hay jnb (jump no bit). JB P3.0, LIG L nh này có nghĩa là s nh y theo tr ng thái bit trên chân p3.0. www. Beenvn.com - T Sách Online
  8. N u xét chân p3.0 m c áp cao (nút nh n K1 h ) thì nh y ñ n tên nhãn LIG, và N u xét chân p3.0 m c áp th p (nút nh n K1 kín) thì th c hi n câu l nh k ti p bên dư i. B n nh , khi chân p3.0 m c áp cao thì Led t t và khi chân p3.0 m c áp th p thì Led s sáng. Bài 3: Vi t chương trình dùng 4 led trên các chân 1 (p0.0), 2 (p0.1), 3 (p0.2), 4 (p0.3) ñ cho bi t tr ng thái c a 4 khóa ñi n trên các chân 5 (p0.4), 6 (p0.5), 7(p0.6), 8 (p0.7). * Khi khóa ñi n ñóng l i Led tương ng sáng. * Khi khóa ñi n nhã ra, Led tương t ng t t. www. Beenvn.com - T Sách Online
  9. ORG 0000H ; Bt ñu t thanh ghi 0000h START: MOV A,P1 ; L y trang thái trên c ng port 1 n p vào thanh ghi tích lũy a. ANL A,#0F0H ; dùng logic AND ñ che 4 bit th p, gi nguyên tr ng thái 4 bit cao. RR A ; cho n i dung trong thanh ghi a quay qua ph i 1 bit. RR A ; cho n i dung trong thanh ghi a quay qua ph i 2 bit. RR A ; cho n i dung trong thanh ghi a quay qua ph i 3 bit. www. Beenvn.com - T Sách Online
  10. RR A ; cho n i dung trong thanh ghi a quay qua ph i 4 bit. XOR A,#0F0H ; dùng logic Ex-OR ñ phát hi n s khác bit trên 4 bit th p. ; như v y Led ng v i v trí có bit 0 s phát sáng. MOV P1,A ; Chuy n tr ng thái c a thanh ghi a ra trên port 1 ñ làm sáng Led. SJMP START ; nh y v tên nhãn start ñ ti p t c làm như trên. END ; ng ng biên d ch dòng l nh này. Phân tích cách vi t các câu l nh: a- Dùng 4 phím ñ t t m 4 Led trên port 1 B n cho chuy n tr ng thái c a port 1 vào thanh ghi tích lũy a, chú ý tr ng thái c a 4 bit cao. Nó ph n nh nút nh n K1, K2, K3, K4. b- Dùng logic And v i h ng 11110000b ñ cho che 4 bit th p. www. Beenvn.com - T Sách Online
  11. B n l y logic AND gi a thanh a và h ng 0f0h (hay là 11110000b), cách làm này là ñ b o toàn tr ng thái c a 4 bit cao, còn 4 bit th p ñ u hóa ra bit 0. Ngư i ta quen g i là cho che 4 bit th p. c- Dùng l nh quay ph i 4 l n ñ d i 4 bit cao xu ng 4 bit th p. Dùng l nh rr a cho quay bit qua ph i, n u cho quay 4 l n thì 4 bit th p s lên n m vùng 4 bit cao và 4 bit cao s xu ng n m vùng 4 bit th p. Chúng ta nói cho chuy n tr ng thái c a 4 bit cao xu ng vùng 4 bit th p. Cũng có th dùng l nh swap. d- Dùng logic Ex-Or ñ phát hi n các bit khác nhau. www. Beenvn.com - T Sách Online
  12. L y logic D -OR ñ phát hi n các bit gi ng nhau hay khác nhau: N u các bit gi ng nhau, k t qu s là bit 0. N u các bit khác nhau, k t qu s là bit 1. T ng ra, B n s th y Led n m trên bit 0 s phát sáng. Các Led n m trên bit 1 s t t. Bài 4: Vi t chương trình cho 8 Led trên port 1 l n lư t nh p nháy, nh y qua trái r i nh y qua ph i. www. Beenvn.com - T Sách Online
  13. ORG 0000h START: MOV R2,#8 ; ð t tr 8 (s l n ñ m) vào thanh ghi r2 MOV A,#0FEH ; ð t tr 0feh t c 11111110b và thanh ghi a. SETB C ; ðt bit Cary lên mc 1. LOOP: MOV P1,A ; Chuy n n i dung trong thanh ghi a vào c ng port 1. LCALL DELAY ; Cho gi chương trình làm tr RLC A ; Cho n i dung trong thanh ghi a quay qua trái có cho quay qua bit c C. DJNZ R2,LOOP ; ð m lùi tr trong thanh ghi r2. N u chưa b ng 0 thì làm ti p l nh LOOP. MOV R2,#8 ; Np li tr 8 vào thanh ghi r2. LOOP1: MOV P1,A ; Chuy n n i dung trong thanh ghi a vào c ng port 1. LCALL DELAY ; Cho gi chương trình làm tr RRC A ; Cho n i dung trong thanh ghi a quay qua ph i có cho quay www. Beenvn.com - T Sách Online
  14. qua bit c C. DJNZ R2,LOOP1 ; ð m lùi tr trong thanh ghi r2. N u chưa b ng 0 thì làm ti p l nh LOOP1. LJMP START ; Nh y không ñi u ki n v tên nhãn start ñ l i ti p t c. DELAY: MOV R5,#20 ; Chương trình dùng làm tr (xem l i ph n thí d 1) D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET END ; D ng biên d ch. Phân tích cách vi t các câu l nh: Bài này dùng l nh quay bit qua ph i và r i cho quay bit qua trái ñ d i bit 0 l n lư t ñi qua 8 chân c a port 1, chúng ta bi t bit 0 s làm sáng Led. Như v y B n s th y các Led trên port 1 s l n lư t sáng và nh y qua ph i r i ñ i chi u nh y qua trái. ð bit 0 có th ñi ñ trên 8 chân c a port 1, chúng ta dùng l nh quay có quay qua bit c C (rrl và rlc), dĩ nhiên trư c ñó phài nh set bit c C lên m c 1. Trình bày l nh quay rrc và rlc b ng hình minh h a (B n xem hình): a- B n dùng l nh quay có qua c C, v y qua 8 nh p bit 0 s vào n m trong c C, lúc này 8 bit port 1 ñ u m c 1 và như v y 8 Led trên port 1 ñ u s t t. V i l nh rlc a (rotate left Carry). B n s th y t ng Led sáng lên và nh y qua bên trái. b- B n dùng l nh quay có qua c C, v y qua 8 nh p bit 0 s vào n m trong c C, lúc này 8 bit port 1 ñ u m c 1 và như v y 8 Led trên port 1 ñ u s t t. V i l nh rrc a (rotate right Carry). B n s th y t ng Led sáng lên và nh y qua bên ph i. www. Beenvn.com - T Sách Online
  15. c- L nh quay (rotate) ch có tác d ng v i thanh ghi a, do ñó B n mu n th hi n k t qu ra 8 Led trên port 1, B n ph i chuy n n i dung có trong a ra port 1. B n dùng l nh mov p1, a. Tóm l i, trong bài này B n ñã làm quen v i cách dùng l nh quay có cho qua c C. V i cách vi t này, B n th y chúng ta dùng r t ít câu l nh mà v n khi n cho các Led sáng nh y (nh y qua nh y l i) trên port 1. Bài 5: Vi t chương trình ñ m ch phát ra ti ng c nh báo. Tín hi u 1KHz và 500Hz phát ra trên chân 1 (p1.0), th i gian phát tín hi u 1KHz là 100ms và th i gian phát tín hi u 500Hz là 200ms. www. Beenvn.com - T Sách Online
  16. Khóa ñi n trên chân 8 (p1.7) dùng t t m tín hi u c nh báo. FLAG BIT 00h ; ð nh nghĩ Flag dùng làm bit c , hi n có tr là 0. ORG 0000H START: JB P1.7,START ; Ch ñ t nút K1 ñ t xu ng m c 0. JNB FLAG,NEXT ; N u bit c Flag là 0 thì nh y ñ n tên nhãn NEXT. MOV R2,#200 ; N p s th p phân 200 vào thanh ghi r2. DV: CPL P1.0 ; L y bù chân p1.0, l nh bù bit có ch c năng t ñ o. LCALL DELY500 ; Cho g i chương trình làm tr 500us. LCALL DELY500 ; g i l n n a chương trình dely500. DJNZ R2,DV ; Cho ñ m lùi và th c hi n l nh bù cpl p1.0 ñ n 200 l n. CPL FLAG ; ðo bit trong c Flag. NEXT: MOV R2,#200 ; N p l i s th p phân 200 vào thanh ghi r2. DV1: CPL P1.0 ; L y bù chân p1.0, có ch c năng t ñ o. www. Beenvn.com - T Sách Online
  17. LCALL DELY500 ; Cho g i chương trình làm tr 500us. DJNZ R2,DV1 ; Cho ñ m lùi và th c hi n bù cpl p1.0 ñ n 200 l n. CPL FLAG ; L i cho ñ o bit trong c Flag. SJMP START ; L p l i l nh t tên nhãn START. DELY500: MOV R7,#250 ; Vi t chương trình con làm tr 500us. N p s 250 và thanh ghi r7. LOOP: NOP ; L nh tr ng, dùng nó làm tăng th i gian tr lên gp ñôi. DJNZ R7,LOOP ; ðm lùi r7 ñ làm tr . RET ; Cho quay l i th c hi n dòng l nh sau l nh call. END ; D ng biên d ch Phân tích cách vi t các câu l nh: Trong bài n y, B n th y dùng khai báo bit ñ ñ nh nghĩa tên t ñ t c a B n, như: flag BIT 0 ; Ch flag do B n t ñ t là m t BIT, hi n có giá tr là bit 0. B n dùng l nh nh y theo bit ñ ki m tra khóa ñi n K1. start: jb p1.7, start ; L nh này s ch chân p1.7 xu ng bit 0, n u không nó s luôn d ng l i ñây. cpl p1.0 ; L nh l y bù trên chân p1.0, nghĩa là nó ñang m c 0 thì cho chuy n lên 1 và ngư c l i. Phân tích các câu l nh trên B n th y: Loa s hú v i tín hi u 1000us (do 2 l n g i dely500) và kéo dài 200 l n r i chuy n qua hú v i tín hi u 500us (do ch g i dely500 có 1 l n) cũng th c hi n 200 l n. V i cách t o ra tín hi u hú 2 nh p này, B n s nghe ti ng hú t Loa phát ra, tín hi u nghe như ti ng còi h c nh báo.. Bài 6: Vi t chương trình dùng cách l y d li u khai báo trong b ng, ñ t t m 8 Led trên port 1. * Nháy nh y qua trái 2 l n. * Nháy nh y qua ph i 2 l n. www. Beenvn.com - T Sách Online
  18. * Toàn ph n nh p nháy 2 l n. (Th i gian tr 0.2 gi y). ORG 0000h START: MOV DPTR,#TABLE ; L nh cho ñ t ñ a ch b ng vào thanh ghi con tr . LOOP: CLR A ; cho xóa n i dung trong thanh ghi a, lúc này a = 00000000b MOVC A,@A+DPTR ; Cho l y n i dung trong b ng theo tr trong a, và cho ct kt qu vào a. CJNE A,#01H,LOOP1 ; N u a chưa b ng 01h thì nh y qua tên nhãn LOOP1. JMP START ; N u trong a ñã b ng 01h thì nh y v tên nhãn START. LOOP1: MOV P1,A ; Chuy n n i dung trong a ra trên c ng port 1. MOV R3,#20 ; N p s th p phân 20 vào thanh ghi r3. www. Beenvn.com - T Sách Online
  19. LCALL DELAY ; G i chương trình làm tr , tên nhãn là delay. INC DPTR ; cho tăng ñ a ch b ng lên +1. JMP LOOP ; Nh y v tên nhãn LOOP. DELAY: MOV R4,#20 ; Vi t chương trình con dùng làm tr , tên nhãn là delay D1: MOV R5,#248 ; N p tr th p phân 248 vào r5. DJNZ R5,$ ; Cho gi m theo bư c -1, ch r5 b ng 0. DJNZ R4,D1 ; Cho r4 gi m theo bư c -1, chưa b ng 0, nh y v D1. DJNZ R3,DELAY ; Cho r3 gi m theo bư c -1, chưa b ng 0, nh y v DELAY. RET ; Quay l i ch y câu l nh n m sau l nh call. TABLE: DB 0FEH,0FDH,0FBH,0F7H ; Khai báo các d li u ñ t trong b ng, tên b ng là TABLE. DB 0EFH,0DFH,0BFH,07FH ; các d li u l n lư t s p trong b ng. DB 0FEH,0FDH,0FBH,0F7H ; các d li u l n lư t s p trong b ng. DB 0EFH,0DFH,0BFH,07FH ; các d li u l n lư t s p trong b ng. DB 07FH,0BFH,0DFH,0EFH ; các d li u l n lư t s p trong b ng. DB 0F7H,0FBH,0FDH,0FEH ; các d li u l n lư t s p trong b ng. DB 07FH,0BFH,0DFH,0EFH ; các d li u l n lư t s p trong b ng. DB 0F7H,0FBH,0FDH,0FEH ; các d li u l n lư t s p trong b ng. DB 00H, 0FFH,00H, 0FFH ; các d li u l n lư t s p trong b ng. DB 01H ; D li u dùng soa sánh ñ nh y (Xem câu l nh trên). END ; D ng biên d ch t i ñây. Phân tích cách vi t các câu l nh: Trong bài này, chúng ta cho l y d li u li t kê trong b ng ñ làm sáng các Led trên port 1. Trình t làm như sau: Trư c h t B n ch n cách làm sáng t t cho 8 Led trên port 1 v i mã 0/1. Chúng ta nh bit 0 làm Led sáng và bit 1 s làm Led t t. Thí d : Mu n Led sáng nh y qua trái, chúng ta s ch n mã ñi u khi n như sau: 11111110b ñ i ra d ng mã h 16 s là 0FEH. 11111101b ñ i ra d ng mã h 16 s là 0FDH. 11111011b ñ i ra d ng mã h 16 s là 0FBH. 11110111b ñ i ra d ng mã h 16 s là 0F7H. 11101111b ñ i ra d ng mã h 16 s là 0EFH. 11011111b ñ i ra d ng mã h 16 s là 0DFH. www. Beenvn.com - T Sách Online
  20. 10111111b ñ i ra d ng mã h 16 s là 0BFH. 01111111b ñ i ra d ng mã h 16 s là 07FH. B n c li t kê ra trong b ng. Sau này s dùng l nh: movc a, @a + dptr. ð l y các mã này c t vào a. Ý nghĩa c a câu l nh này như sau: N u kh i ñ u a=0 thì nó s l y mã d li u ñ u trong b ng và r i c t vào thanh ghia. B n dùng l nh inc dptr d cho tr trong a tăng lên +1. V y khi dùng câu l nh: movc a, @a +dptr, B n s cho l y mã d li u ti p theo... Sau m i l n l y d li u t b ng ra, B n dùng câu l nh nh y theo phép so sánh: cjne a, #01h, loop1 ñ xem ñã l y ñ n mã d li u cu i cùng chưa, vì B n ñ t m 01H cu i b ng. Ghi nh n: Dùng cách vi t này, B n r t d ch n các ki u nh p nháy cho các Led trên port 1. B n ch c n khai báo các mã ñi u khi n trong b ng là ñư c. b n có th khai báo theo d ng mã nh phân cho d nhìn th y s sáng t t c a các Led. Bài 7: Vi t chương trình ñ trên ñèn s dùng Led 7 ño n l n lư t xu t hi n các con s 0, 1, 2, 3...Th i gian thay ñ i s là 0.2s. Chú ý: Dùng lo i ñèn s Led 7 ño n có Cathode chung, v y Led sáng v i m c 1. www. Beenvn.com - T Sách Online
ADSENSE
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2