Ví dụ viết code vi điều khiển dùng ngắt

7 436 3
Ví dụ viết code vi điều khiển dùng ngắt

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

Thông tin tài liệu

CÁC CHƯƠNG TRÌNH SỬ DỤNG NGẮT Nút nhấn p3.2 Bài 1: LED ĐƠN Nhấn lần 1 sáng dồn p1, nhấn lần 2 chớp tắt p1, nhấn lần 3 dừng Tg EQU 20h kq EQU 21h ckdl EQU 22h sldl EQU 23h ORG 0000h LJMP main org 0003h ; VETOR NGẮT NGOÀI 0 LJMP ngatngoai0 org 0030h ;NGOÀI TẤT CẢ CÁC NGẮT main: MOV p1,#0 MOV ie,#81h ; CHO PHÉP NGẮT NGOAI 0 SETB it0 ; KÍCH MỨC THẤP MOV R0,#00H SJMP $ ; KHÔNG LÀM GÌ ngatngoai0: INC R0 CJNE R0,#1,kt0 LCALL sangdon kt0: CJNE R0,#2,kt1 LCALL choptat kt1: CJNE R0,#3,thoat LCALL dung thoat: RETI dung: MOV R0,#00h MOV p1,#00h CALL delay LJMP main sangdon: MOV p1,#00h LCALL delay MOV ckdl,#8 MOV kq,#00h x11: MOV sldl,ckdl MOV tg,#00h SETB c x12: MOV A,tg RLC A MOV tg,A ORL A,kq MOV p1,A LCALL delay DJNZ sldl,x12 MOV kq,p1 DJNZ ckdl,x11 SJMP sangdon RETI choptat: MOV p1,#00h CALL delay MOV p1,#0ffh CALL delay JMP choptat RETI delay: MOV R7,#3 del: MOV R6,#0ffh del1: MOV R5,#0ffh DJNZ R5,$ DJNZ R6,del1 DJNZ R7,del RETI End BÀI 2: ĐỘNG CƠ BƯỚC Nhấn lần 1 quay thuận, nhấn lần 2 quay nghịch, nhấn lần 3 dừng ORG 0000h LJMP main org 0003h LJMP ngatngoai0 org 0030h main: MOV ie,#81h SETB it0 MOV R0,#00h SJMP $ ngatngoai0: INC R0 CJNE R0,#1,kt0 LCALL thuan kt0: CJNE R0,#2,kt1 LCALL ngich kt1: CJNE R0,#3,thoat LCALL dung thoat: RETI thuan: MOV P2,#00H LCALL delay SETB c MOV A,#00h x11: RLC A MOV p2,A LCALL delay JNB P2.3,x11 SJMP thuan RET ngich: MOV P2,#00H LCALL delay SETB c MOV A,#00h x12: RRC A SWAP A MOV p2,A SWAP A LCALL delay JNB P2.0,x12 SJMP ngich RETI dung: MOV p2,#00h MOV R0,#00h LCALL delay LJMP main delay: MOV R7,#3 del: MOV R6,#0ffh del1: MOV R5,#0ffh DJNZ R5,$ DJNZ R6,del1 DJNZ R7,del RETI End BÀI 3: LED 7 ĐOẠN Nhấn lần 1 đếm100 , nhấn lần 2 đếm10, nhấn lần 3 dừng ORG 0000h LJMP main org 0003h LJMP ngatngoai0 org 0030h main: MOV ie,#81h SETB it0 MOV R0,#00h SJMP $ ngatngoai0: INC R0 CJNE R0,#1,kt0 MOV 70H,#101 LCALL td0 kt0: CJNE R0,#2,kt1 MOV 70H,#11 LCALL td0 kt1: CJNE R0,#3,THOAT LCALL dung td0: MOV R1,#00H x11: LCALL hex_bcd LCALL bcd_7doan LCALL delay_hienthi INC R1 MOV A,R1 CJNE A,70H,x11 SJMP td0 RETI hex_bcd: MOV A,R1 MOV B,#10 DIV AB MOV 20h,B MOV B,#10 DIV AB MOV 21H,B MOV B,#10 DIV AB MOV 22H,B RETI bcd_7doan: MOV DPTR,#bang MOV A,20h MOVC A,@A+DPTR MOV 25h,A MOV A,21H MOVC A,@A+DPTR MOV 26H,A MOV A,22H MOVC A,@A+DPTR MOV 27H,A RETI delay_hienthi: MOV R7,#2 del1: MOV R6,#010h del: LCALL hienthi DJNZ R6,del DJNZ R7,del1 RETI hienthi: MOV p1,25h MOV p2,#01h LCALL delay MOV p2,#00h MOV P1,26H MOV P2,#02H LCALL delay MOV p2,#00h MOV P1,27H MOV P2,#04H LCALL delay MOV p2,#00h RETI DUNG: MOV R0,#00H MOV P2,#00H LCALL DELAY LJMP MAIN THOAT: RETI delay: MOV R4,#0ffh DJNZ R4,$ RETI bang: db 0c0h,0f9h,0a4h,0b0h,099h,092h,082h,0f8h,080h,090h End . KHÔNG LÀM GÌ ngatngoai0: INC R0 CJNE R0,#1,kt0 LCALL sangdon kt0: CJNE R0,#2,kt1 LCALL choptat kt1: CJNE R0,#3,thoat LCALL dung thoat: RETI dung: MOV R0,#00h. 3 dừng ORG 0000h LJMP main org 0003h LJMP ngatngoai0 org 0030h main: MOV ie,#81h SETB it0 MOV R0,#00h SJMP $ ngatngoai0: INC R0 CJNE R0,#1,kt0 LCALL thuan

Ngày đăng: 03/01/2014, 20:20

Từ khóa liên quan

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

Tài liệu liên quan