试试看:
ORG 0000H
JMP MAIN
ORG 0013H
AJMP INT
JMP MAIN
TAB:
DB 0X01, 0X02, 0X04, 0X08
DB 0X10, 0X20, 0X40, 0X80
MAIN:
SETB EA
SETB EX1
MOV DPTR, #TAB
LOOP:
MOV R1, #8
MOV B, #0
AGAIN:
MOV A, B
MOVC A, @A+DPTR
MOV P1, A
INC B ;下一个状态
CALL DELAY
DJNZ R1, AGAIN
JMP LOOP
DELAY:
MOV R6, #2
LOOP3: MOV R5, #255 ;延迟0。5秒
LOOP2: MOV R4, #255
LOOP1: NOP
NOP
DJNZ R4, LOOP1
DJNZ R5, LOOP2
DJNZ R6, LOOP3
RET
INT:
MOV P2, #0XAA
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
MOV P2, #0XFF
MOV A, B ;显示下一个状态
MOVC A, @A+DPTR
MOV P1, A
INC B
RETI
END
条件就是中断源申请了中断,即有中断请求了,并单片机允许中断时,就会转到执行中断服务程序了。
在写程序的时候,是不知道什么时候会执行中断程序的,也不必知道确切的时间,只要写好中断服务程序,并设置中断允许标志位,到时候,一旦有中断请求就会执行了。
因此,也必须要写好中断服务程序,确定好中断服务程序中要做什么,写好程序就行了。
其余的事就不必 *** 心了。
interrupt X是指用的第几个中断。。1~2~3是由中断向量表决定的。也就是由单片机的中断入口地址的顺序决定的。这个是硬件决定的软件不能改变。
例如外部中断0就是interrupt 0 定时器0 是interrupt 1 外部中断1是interrupt 2 定时器2是interrupt 3 串口是interrupt 4
以上就是关于关于51单片机一个简单的外部中断程序,求教~全部的内容,包括:关于51单片机一个简单的外部中断程序,求教~、51单片机程序中什么时候中断服务程序开始执行、c51单片机中断程序中的interrupt1,2,3是由什么决定的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)