ORG 0000H
LJMP START
ORG 001BH
LJMP TT1
ORG 0300H
START:CLR P3.5
MOV SP,#60H
MOV R0,#20
CLR P1.1
MOV TMOD,#10H
MOV TH1,#3CH
MOV TL1,#0B0H
SETB ET1
SETB EA
SETB TR1
SJMP $
TT1: MOV TH1,#3CH
MOV TL1,#0B0H
DJNZ R0,BACK
CPL P1.1
MOV R0,#20
BACK: RETI
END
如何实现中断 最后的R0又是如何跳转 情帮忙把整个程序详细的分析下 我是新手 谢谢了
中断产生之后,中断系统自动停止主程序的执行,跳入相应的中断子程序入口。中断方式1的程序入口地址为001BH ,中断入口地址都是固定的。包括两个外部中断,两个定时中断,和一个串口中断。
ORG 0000H ;程序段开始
LJMP START ;主程序入口START
ORG 001BH ;中断程序入口地址
LJMP TT1 ;中断子程序TT1
ORG 0300H ;程序段开始地址
START:CLR P3.5 ;P3.5口输出低电平
MOV SP,#60H ;栈顶指针赋值#60H
MOV R0,#20 ;R0是循环计时次数20次,中断20次为1S
CLR P1.1 ;P1.1口输出低电平
MOV TMOD,#10H ;控制字TMOD赋值,采用定时器1计时,工作在方式1
MOV TH1,#3CH
MOV TL1,#0B0H ;赋初值,3CB0H=15536=65536-50000,即每中断溢出一次为50MS
SETB ET1 ;定时器1中断打开
SETB EA ;总中断打开
SETB TR1 ;计时开始
SJMP $ ;循环等待计时溢出
TT1: MOV TH1,#3CH ;定时中断处理程序
MOV TL1,#0B0H ;重新赋初值
MOV TH1,#3CH ;都得重新赋值
DJNZ R0,BACK ;循环不足20次,不到1S,返回继续循环
CPL P1.1 ;循环20次,到1S,P1.1输出低电平,
MOV R0,#20 ;重新赋初值20次
BACK: RETI ;返回子程序
END