单片机外部中断(汇编) 下载本文

内容发布更新时间 : 2024/5/29 13:42:07星期一 下面是文章的全部内容请认真阅读。

由AT89S52内部定时器0,按方式1工作,即作为16位定时器使用每0.05秒T1溢出中断一次。P1口的P1.0~P1.8分别接8个发光二极管。要求编写程序模拟一时序控制装置。L4,L5亮→L3,L6亮→L2,L7亮→L1,L8亮→L2,L7亮→L3,L6亮→L4,L5亮→L1,L2,L3,L4亮→L5,L6,L7,L8亮→全亮→全灭,共10种状态,每种状态的持续时间为0.5秒。然后再从头循环。 由键盘生成外部中断信号,当任意键按下时,为外部中断请求信号,此时L2,L4, L6,L8亮,持续时间为5秒。

ORG 0000H LJMP MAIN ORG 000BH LJMP PIT0 ORG 003H LJMP PIINT0 ORG 0050H

ASCTAB:DB 7EH,0BDH,0DBH,0E7H,0DBH,0BDH,07EH,0AAH,55H,00H,0FFH MAIN:MOV P1,#0EH MOV TMOD,#11H

SETB PX0;INT0为高优先级 CLR PT0 ;T0为低优先级 SETB IT0;INT0边沿触发 SETB EX0;允许INT0中断 MOV TH0,#4CH MOV TL0,#00H MOV R3,#0BH MOV R2,#14H

MOV DPTR,#ASCTAB SETB TR0 SETB ET0 SETB EA

HERE:LJMP HERE

PIT0:CLR TR0 MOV TH0,#4CH MOV TL0,#00H DJNZ R2,M MOV R2,#14H MOV A,#00H

MOVC A,@A+DPTR MOV P0,A INC DPTR DJNZ R3,M

MOV R3,#0BH

MOV DPTR,#ASCTAB M:SETB TR0 RETI

PIINT0:PUSH ACC CLR TR0

MOV P0,#11000011B MOV A,#64H MOV TH1,#4CH MOV TL1,#00H S1:SETB TR1 S:JNB TF1,S CLR TR1

MOV TH1,#4CH MOV TL1,#00H DEC A JNZ S1 CLR TR1 SETB TR0 POP ACC RETI END