intTypePromotion=1

Bài tập Kỹ thuật vi xử lý

Chia sẻ: Nguyễn Hùng | Ngày: | Loại File: DOC | Số trang:22

0
733
lượt xem
349
download

Bài tập Kỹ thuật vi xử lý

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

Tài liệu tham khảo chuyên ngành điện, điện tử - Bài tập Kỹ thuật vi xử lý.

Chủ đề:
Lưu

Nội dung Text: Bài tập Kỹ thuật vi xử lý

  1. Bài tập dài Kỹ thuật vi xử lý Họ và tên : Nguyễn Văn Hùng Lớp : TBĐ1-K52 MSSV : 20071415 Email : hungbkpro_2007@yahoo.com
  2. Bài 1 : Viết CT đảo dấu 100 byte dữ liệu từ ô nhớ 100H tại Ram ngoài : chương trình : Org 0000h ljmp start dptr #0100H org 0003h ; int ex0 Ro #00H nop reti cjn A @dptr e org 000bh A A nop A A + #01H reti ; int timer0 @dptr A org 0013h ; int ex1 dptr + 1 nop N Ro + 1 reti org 001bh Ye nop Ro = 64H reti ; int timer1 org 0023h ; ngat truyen tin khong dung nop En reti d org 0100h Start: Crl EA
  3. mov dptr , #0100H mov Ro ,#00H lap : movx A , @dptr cpl A add A , #01H movx @dptr , A inc dptr inc Ro cjne R0 , #64H , lap End R0 #50H =================================== dptr #1234H Bài 2 : Viết chương trình chuyển 2 mảng dữ liệu R1 #00H 50 byte. Biết mảng 1 có địa chỉ 50H trong Ram A @R0 trong và mảng 2 có địa chỉ 1234H trong Ram Yes R2 A ngoài . A @dptr Chương trình : @R0 A Org 0000h A R2 ljmp start dptr + 1 org 0003h ; int ex0 Ro + 1 nop No R1 + 1 reti org 000bh nop Ro = reti ; int timer0 32H En d
  4. org 0013h ; int ex1 nop reti org 001bh nop reti ; int timer1 org 0023h ; ngat truyen tin khong dung nop reti org 0100h Start: Crl EA mov A , #50H mov dptr , #1234H mov R1 , #00H lap : mov A , @R0 mov R2 , A movx A , @dptr mov @R0 , A mov A , R2 movx @dptr , A inc dptr Yes inc R0 inc R1
  5. cjne R1 , #32H , lap End Bài 3 : Viết chương trình cộng hai số BCD 4 chữ số trong Ram trong , kết quả cất vào số thứ 1 . Biết số thứ nhất đặt tại ô nhớ 40H , và số thứ 2 đặt tại ô nhớ 50H Start Chương trình : C #00H Org 0000h R0 #40H ljmp start R1 #50H org 0003h ; int ex0 R2 #00H nop reti A @R0 org 000bh A A + @R1 + (C) nop DAA reti ; int timer0 Cjne @R0 A org 0013h ; int ex1 R0 + 1 nop R1 + 1 reti R2 + 1 org 001bh No nop reti ; int timer1 Yes org 0023h ; ngat truyen tin khong dung R2 = # 04H End
  6. nop reti org 0100h Start: Clr EA Clr C mov R0 , #40H mov R1 , #50H mov R2 , #00H lap : mov A , @R0 addc A , @R1 da a mov @R0 , A inc R0 int R1 inc R2 cjne R3 , #04H , lap End ======================== Bài 4 : Viết chương trình trừ hai số 8 byte kết quả cất vào ô thứ 2 . Biết số thứ nhất đặt tại ô nhớ 60H tại Ram trong , số thứ 2 đặt tại Ram ngoài 1000H.
  7. Chương trình : Start Org 0000h Ljmp start C # 00H org 0003h ; int ex0 R0 #60H nop R1 #00H reti dptr #1000H org 000bh nop reti ; int timer0 A @dptr org 0013h ; int ex1 cjn A A - @R0 – (C) e nop @dptr A reti dptr + 1 org 001bh R0 + 1 nop R1 + 1 reti ; int timer1 No org 0023h ; ngat truyen tin khong dung nop reti Yes R1 = #08H Org 0100h Start : Clr EA Clr C End
  8. mov R0 , #60H mov R1 , #00H mov dptr , #1000H lap: movx A , @dptr subb A , @R0 movx @dptr , A inc dptr inc R0 inc R1 cjne R1 , #08H , lap end Bài 5 : viết chương trình sử dụng timer tạo xung tần 100HZ tại chân P1.0 . Biết xung nhịp thạch anh 12 MHZ ( Ton = 50% , Toff = 50% ). Ta có : Xung tại chân P1.0 có : fxung = 100 Hz => Txung = 0,01 => thời gian cao và thấp là : 0,5 T = 0,005 = 5000 µs Bộ định thời có : 1 1 fđt = .fthạch anh = .12 ( MHZ ) = 1 MHZ từ đó tần số 12 12 1 Tđt = = 1µs 106 5000 Số nhịp đồng hồ : n = = 5000 nhịp 1  Xác định giá trị nạp vào timer :
  9. 65536 – 5000 = 60536D = EC67H  Giá trị nạp vào là : TL0 = 78H ; TH0 = ECH.
  10. Chương trình : Start ORG 0000H LJMP START CLR P1.0 ORG 0003H ; INT EX0 TMOD #10H NOP RETI ORG 000BH TL0 #78H NOP TH0 #0ECH RETI ; INT TIMER0 TR0 = 1 ORG 0013H ; INT EX1 NOP JN RETI Ye TF0 = 0 s ORG 001BH NOP N RETI ; INT TIMER1 o ORG 0023H ; NGAT TRUYEN TIN KHONG DUNG TL0 #78H OP TH0 #0ECH RETI P1.5 P1.5 ORG 0100H SJMP START : CLR EA CLR P1.0 MOV TMOD , #10H MOV TL1 , #1AH MOV TH0 , #0ECH SETB TR0 BACK : JNB TFO , BACK MOV TL1 , #1AH
  11. MOV TH0 , #0ECH CPL P1.0 SJMP BACK END Bài 6 : Viết chương trình tạo xung 1HZ tại chân P1.7 . Biết xung nhịp thạch anh 12 MHZ ( Ton = 70 % , Toff = 30% ) Ta có : Với fthạch anh = 12 MHZ thì theo trên ta có Tđịnh thời = 1µs Xung tại chân P1.7 có : fxung = 1 Hz => Txung = 1s => Ton = 700 ms , Toff = 300 ms chọn giá trị ban đầu là : TL0 = B0H , TH0 = 3CH từ đó ta có sau mỗi chu kỳ bộ timer đếm được FFFFH - 3CBOH = 164 – 15536 = 50 000 lần tức là : 50 000 . 1µs = 0.05s = 50 ms Vậy ta cần thiết kế sao cho bộ timer đếm được : 700 / 50 = 14 lần . rồi chân P1.7 đổi trạng thái và đếm được : 300/50 = 6 lần . cứ như thế ta sẽ đáp ứng được yêu cầu của bài.
  12. Chương trình : Start TMOD #01H TH0 #3CH TL0 #0B0H P1.7 = 1 R3 # 00H TR0 = 1 JNB TF0 = 0 YES NO TH0 #3CH CJN TL0 #0B0H R3 + 1 NO R3 = #0EH YES SJM P1.7 P1.7 NO P1.7 = 0 R3 #0EH JNB YES R3 #06H SJM
  13. ORG 0000H LJMP START ORG 0003H ; INT EX0 NOP RETI ORG 000BH NOP RETI ; INT TIMER0 ORG 0013H ; INT EX1 NOP RETI ORG 001BH NOP RETI ; INT TIMER1 ORG 0023H ; NGAT TRUYEN TIN KHONG DUNG OP RETI ORG 0100H START: MOV TMOD , #01H MOV TH0 , #3CH MOV TL0 , #0B0H SETB P1.7 MOV R0 , #00H SETB TR0 LAP: JNB TF0 , LAP MOV TH0 , #3CH MOV TL0,#B0H
  14. INC R3 CJNE R3 , LAP CPL P1.7 JNB P1.7 , TOFF MOV R0,#0EH SJMP LAP TON: MOV R0,#06H SJMP LAP END Bài 7 : Viết chương trình con đọc 500 byte dữ liệu từ cổng nối tiếp và cất vào vùng nhớ có địa chỉ đầu 456H . Biết cổng nối tiếp đã được khởi tạo sẵn , cổng cho phép đọc khi cờ RI = 1 , và cờ RI sẽ tự xóa khi đọc xong 1 byte.
  15. read Giải thuật và chương trình : Read: mov R0 , #00H R0 #00H mov R1 , #00H R1 #00H mov dptr , #0456H dptr #0456h lap : jnb RI , lap mov A , sbuf jnb movx @dptr , A No RI = 1 inc dptr Yes int R0 cjne R0 , #FAH , lap A sbuf cjn @dptr A mov R0 , #FAH e inc R1 dptr + 1 cjne R1 , #02H , lap R0 + 1 ret No R0 = cjn #FAH e Yes R0 #FAH R1 + 1 No R1 = #02H Yes ret
  16. start Bài 8 : viết chương trình điều khiển đèn giao thông tại 1 ngã tư theo yêu cầu : TMOD #01H Điều khiển 0 là đèn sáng , 1 là đèn tắt. TH0 # 03CH ta có sơ đồ điều khiển trạng thái như sau : TLO #0B0H 1 2 3 4 1 R1 #14H X1 P1.0 0 1 1 1 0 R2 #19H V1 P1.1 1 0 1 1 1 P1.0 = 0 No Đ1 P1.2 1 1 0 0 1 P1.1 = 1 X2 P1.4 1 1 0 1 1 P1.2 = 1 V2 P1.4 1 1 1 0 1 P1.3 = 1 Đ2 P1.5 0 0 1 1 0 P1.4 = 1 P1.5 = 0 Chương trình : TR0 = 1 Org 0000h . delay . djnz R2 - 1 djnz . reti No R2 = 0 org 0100h Yes Start : ; back 1 sjmp P1.0 = 1 mov TMOD,#01H P1.1 = 0 mov TH0,#3CH R2 #03H mov TL0,#0B0H P1.1 = 1 mov R1 , #14H P1.2 = delay 0 djnz P1.3-1 = R2 0 mov R2 , #19H P1.5 = 1 No P1..3 = 1 R2 R2 = 0 # 21H P1.4 delay 0 = R2 = 0 R2 = 0 Yes R2 R2 - 1 #03H
  17. setb P1.0 setb P1.1 setb P1.2 setb P1.3 setb P1.4 djn clr P1.5 z setb TR0 back2 : lcall delay djnz R2 , back2 setb P1.0 clr P1.1 mov R2 ,#03H back2 : lcall delay djnz R2 , back2 setb P1.1 clr P1.2 clr P1.3 setb P1.5 mov R2,#21H Ye back3 : lcall delay djnz R2 , back3 setb P1.3 clr P1.4 mov R2,#03H delay back4: lcall delay1s
  18. djnz R2 , back4 ljmp back1 TF0 = jnb delay : jnb TF0 , delay 1 No mov TH0,#3CH mov TL0,#0B0H TH0 #3CH Yes mov R1 ,#14H TL0 #0B0H djnz R1 , delay R1 #14H ret djn R1 - 1 R1 = No 0 Yes ret
  19. Bài 9 : viết chương trình hiển thị 2 LED 7 thanh đếm lùi từ 20s với sơ đồ phần cứng SV tự đề xuất
  20. start TMOD #01H TH0 #3CH TL0 #0B0H Chương trình : R0 #14H Org 0000h P0 #20H . TR0 =1 . . R1 #10H reti org 0100h lap start : clr EA R1 #00H mov TMOD , #01H mov TH0 , #3CH lap mov TL0 , #0B0H sjm mov R0, #14H mov P0, #20H setb TR0 mov R1 , #10H lcall lap mov R1 , #00H lcall lap lap: back: jnb TF0 back mov TH0, #3CH
ADSENSE
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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