Câu 6: Giả sử chân /INT1 được nối tới công tắc bình thường ở mức cao.Khi nhấn công tắc thì LED ở chân P1.3 Sáng vài phần giây.. Khi công tắc được nhấn liên tục thì đèn sáng liên tục.. Hã
Trang 1Câu 2: Viết chương trình delay dùng thanh ghi?
Delay: MOV R1,#0FFH
Del2: DJNZ R2,Del2
DJNZ R1,Del1 RET
END
Câu 3: Viết chương trình delay dùng timer?
VD1: Viết chương trình delay dùng timer với thời gian trễ 5s:
Giải
5s = 5 x 106 = 5 000 000 µs
Ta lấy 5000000 : 100 = 50000 < 65536 µs
65536 – 50000 = 15536 Sau đó ta lấy 15536 đổi qua số hex được 3CB0 trong đó:
3C là TH0 B0 là TL0
Ta có chương trình:
Delay: CLR TF0
MOV R1,#100
MOV TLD,#0B0H MOV TH0,#3CH
MOV TMOD,#01 SETB TR0
Del1: JNB TF0,Del1
CLR TR0 CLR TF0 DJNZ R1,Del1 RET
END
Trang 2VD 2: Viết chương trình delay dùng timer với thời gian trễ 7s:
Giải
7s = 7 x 106 = 7 000 000 µs
Ta lấy 7000000 : 700 = 10000 < 65536 µs
65536 – 10000 = 55536 Sau đó ta lấy 55536 đổi qua số hex được D8F0 trong đó:
D8 là TH0 F0 là TL0
Ta có chương trình:
Delay: CLR TF0
MOV R1,#100
MOV TLD,#0F0H MOV TH0,#0D8H
MOV TMOD,#01 SETB TR0
Del1: JNB TF0,Del1
CLR TR0 CLR TF0 DJNZ R1,Del1 RET
END
Trang 3Câu 4: Viết chương trình tạo sóng vuông có chu kỳ 1000 µs, có độ đầy
xung 50% trên chân P1.0 sử dụng bộ định thời 0 chế độ 1 Tần số thạch anh 12Mhz?
Sóng vuông có độ đầy xung là 50%, vậy thời gian mức cao sẽ là 500
µs và mức thấp là 500 µs Như vậy, thời gian trễ cần tạo ra là 500 µs, tức là
ta sẽ nạp vào Timer 0 giá trị -500 (tức là 0FE0CH)
Ta có: FE là TH
0C là TL0 Như vậy, ta có chương trình:
MOV TMOD,#01H ; Chọn Timer0, chế độ 1
X1: MOV TL0,#0CH ; Byte thấp của -500
MOV TH,#0FEH ; Byte cao của -500 SETB TR0 ; Khởi động Timer0 X2: JNB TF0,X2 ; Kiểm tra cờ bộ định thời, thoát khi TF = 1
CLR TR0 ; Dừng bộï định thời CLR TF0 ; Xóa cờ tràn
CPL P1.0 ; Đảo bit P1.0
Câu 5: Viết chương trình tạo sóng vuông có chu kỳ 100 µs, có độ đầy
xung 50% trên chân P1.0 sử dụng bộ định thời 1 chế độ 1 Tần số thạch anh 12Mhz?
Sóng vuông có độ đầy xung là 50%, vậy thời gian mức cao sẽ là 50 µs và mức thấp là 50 µs Như vậy, thời gian trễ cần tạo ra là 50 µs, tức là ta sẽ nạp vào TH0 giá trị -50 (tức là CEH)
Như vậy, ta có chương trình:
MOV TMOD,#20H ; Chọn Timer0, chế độ 2
MOV TH,#0CEH ; nạp giá trị 8 bit CEH vào TH1
SETB TR1 ; Khởi động Timer0 X1: JNB TF1,X1 ; Kiểm tra bộ định thời, thoát khi TF = 1
CPL P1.0 ; Đảo bit P1.0 CLR TF1 ; Xóa cờ tràn
Trang 4Câu 6: Giả sử chân /INT1 được nối tới công tắc bình thường ở mức cao.
Khi nhấn công tắc thì LED ở chân P1.3 Sáng vài phần giây Khi công tắc được nhấn liên tục thì đèn sáng liên tục Hãy viết chương trình ngắt ngoài?
Sau khi tiến hành phân tích các bước Ta có chương trình sau:
ORG 0000H LJMP MAIN ORG 0013H ; Chương trình ngắt ngoài 1 SETB P1.3
MOV R7,#250 ; Tạo trễ cho led sáng DJNZ R7,$
CLR P1.3 RETI ; Quay về chương trình chính ORG 0030H
X1: MOV IE,#84H ; Khởi động ngắt
SJMP $ END
Trang 5Câu 7: Hãy tạo mã LED bảy đoạn Anode chung từ số 0 đến số 9 ở hai
dạng nhị phân và thập lục phân?
Cấu tạo:
g
V C C
c a
d
e
g
Như vậy muốn cho LED nào sáng thì đưa điện áp mức thấp (0) vào chân đó
SỐ a b NHỊ PHÂN (B)c d e f g LỤC PHÂN (H) THẬP
Trang 6Câu 8: Hãy tạo mã LED bảy đoạn Kathode chung từ số 0 đến số 9 ở hai
dạng nhị phân và thập lục phân?
Cấu tạo:
g
c a
d
e
g
Như vậy muốn cho LED nào sáng thì đưa điện áp mức cao (1) vào chân đó
SỐ a b NHỊ PHÂN (B)c d e f g LỤC PHÂN (H) THẬP
Trang 7Câu 9: Viết chương trình điều khiển LED đơn chớp tắt 1 port?
;Chương trình điều khiển 8 LED chớp tắt 1 Port
org 0000h x1: mov p1,#00h
lcall delay mov p1,#0ffh lcall delay sjmp x1 DELAY: MOV R1,#0FFH
DELAY1: MOV R2,#0FFH
DELAY2: DJNZ R2,DELAY2
DJNZ R1,DELAY1 RET
END
Câu 10: Viết chương trình điều khiển LED đơn chớp tắt 2 port?
;Chương trình điều khiển 8 LED chớp tắt 2 Port
org 0000h x1: mov p1,#00h
mov p2,#00h lcall delay mov p1,#0ffh mov p2,#0ffh lcall delay sjmp x1 DELAY: MOV R1,#0FFH
DELAY1: MOV R2,#0FFH
DELAY2: DJNZ R2,DELAY2
DJNZ R1,DELAY1 RET
END
Trang 8Câu 11: Viết chương trình điều khiển LED đơn sáng dần tắt hết 1 port?
; Chương trình điều khiển 8 LED sáng dần tắt hết sử dụng 1 Port
ORG 0000H X1: MOV P0,#00H
MOV A,#00H X2: MOV P0,A
LCALL DELAY SETB C
RLC A JNC X2 SJMP X1 DELAY: MOV R1,#0FFH
DELAY1: MOV R2,#0FFH
DELAY2: DJNZ R2,DELAY2
DJNZ R1,DELAY1 RET
END
Trang 9Câu 12: Viết chương trình điều khiển LED đơn sáng dần tắt dần 1 port?
; Chương trình điều khiển 8 LED sáng dần tắt dần sử dụng 1 Port
ORG 0000H X1: MOV P0,#00H
MOV A,#00H X2: MOV P0,A
LCALL DELAY SETB C
RLC A JNC X2 X3: MOV P0,A
LCALL DELAY CLR C
RLC A
JC X3 SJMP X1 DELAY: MOV R1,#0FFH
DELAY1: MOV R2,#0FFH
DELAY2: DJNZ R2,DELAY2
DJNZ R1,DELAY1 RET
END
Trang 10Câu 13: Viết chương trình điều khiển LED đơn sáng dồn 1 port?
; Chương trình sáng dồn 1 Port
ORG 0000H X1: MOV R2,#00H
MOV R4,#08H X2: MOV R5,04H
MOV R3,#00H MOV A,R3 ORL A,R2 MOV P3,A LCALL DELAY SETB C
X3: MOV A,R3
RLC A MOV R3,A ORL A,R2 MOV P3,A LCALL DELAY CLR C
DJNZ R5,X3 MOV R2,A DJNZ R4,X2 SJMP X1 DELAY: MOV R6,#0FFH
Trang 11Caâu 14: Vieát chöông trình ñieàu khieån LED bảy đoạn loại Anode chung
hiển thị từ số 0 đến 9 sử dụng port 1?
; Hiển thị từ số 0 đến 9 dùng LED bảy đoạn loại Anode chung
ORG 0000H
X1:
MOV P1,#0c0H
CALL DELAY
MOV P1,#0F9H
CALL DELAY
MOV P1,#0A4H
CALL DELAY
MOV P1,#0B0H
CALL DELAY
MOV P1,#099H
CALL DELAY
MOV P1,#092H
CALL DELAY
MOV P1,#082H
CALL DELAY
MOV P1,#0F8H
CALL DELAY
MOV P1,#080H
CALL DELAY
MOV P1,#090H
CALL DELAY
LJMP X1
DELAY: MOV R1,#0FFH
DEL2: DJNZ R2,DEL2
DJNZ R1,DEL1 RET
END
Trang 12Caâu 15: Vieát chöông trình ñieàu khieån LED bảy đoạn loại Kathode chung
hiển thị từ số 0 đến 9 sử dụng port 1?
; Hiển thị từ số 0 đến 9 dùng LED bảy đoạn loại Kathode chung
ORG 0000H
X1:
MOV P1,#03FH
CALL DELAY
MOV P1,#06H
CALL DELAY
MOV P1,#05BH
CALL DELAY
MOV P1,#04FH
CALL DELAY
MOV P1,#066H
CALL DELAY
MOV P1,#06DH
CALL DELAY
MOV P1,#07DH
CALL DELAY
MOV P1,#07H
CALL DELAY
MOV P1,#07FH
CALL DELAY
MOV P1,#06FH
Trang 13Caâu 16: Viết chương trình điều khiển LED bảy đoạn loại Anode chung hiển
thị từ số 0, 2, 4, 6, 8 sử dụng port 1?
; Sáng số 0,2,4,6,8 sử dụng LED bảy đoạn loại Anode chung trên P1
ORG 0000H
X1:
MOV P1,#0c0H
CALL DELAY
MOV P1,#0A4H
CALL DELAY
MOV P1,#099H
CALL DELAY
MOV P1,#082H
CALL DELAY
MOV P1,#080H
CALL DELAY
LJMP X1
DELAY: MOV R1,#0FFH
DEL2: DJNZ R2,DEL2
DJNZ R1,DEL1
RET
END
Trang 14Caâu 17: Viết chương trình điều khiển LED bảy đoạn loại Anode chung hiển
thị từ số 1, 3, 5, 7, 9 sử dụng port 1?
; Sáng số 1,3,5,7,9 dùng LED bảy đoạn loại Anode chung trên P1
ORG 0000H
X1:
MOV P1,#0F9H
CALL DELAY
MOV P1,#0B0H
CALL DELAY
MOV P1,#092H
CALL DELAY
MOV P1,#0F8H
CALL DELAY
MOV P1,#090H
CALL DELAY
LJMP X1
DELAY: MOV R1,#0FFH
DEL2: DJNZ R2,DEL2
DJNZ R1,DEL1
RET
END
Trang 15Caâu 18: Viết chương trình điều khiển LED ma trận hiển thị ký tự sử dụng
P0, P1?
; hien thi chu M su dung P0 va P1
org 0300h
mahang: db 00h,80h,0dfh,0efh,0dfh,80h
org 0320h
macot: db 00h,02h,04h,08h,10h,20h
org 0000h
mov p1,#00h
mov p2,#00h
b1: mov r1,#00h
b2: mov A,r1
mov dptr,#macot
movc A,@A+dptr
mov p2,A
mov A,r1
mov dptr,#mahang
movc A,@A+dptr
mov p1,A
call delay
inc r1
cjne r1,#06,b2
sjmp b1
delay: MOV TMOD,#01H
MOV TH0,#HIGH (-2000)
MOV TL0,#LOW (-2000)
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
RET
END