下面代码完成的是:按一下button,产生一次外部中断0信号(P3.2),启动T1定时,使P1.0引脚输出周期为1ms的方波(系统时钟6MHz)。
ORG 0000H
LJMP MAIN ;跳转主程序
ORG 0003H ;中断程序T0的入口,主程序等到中断后,会跳转回来运行,
LJMP INIT0 ;跳转进入中断程序T0
ORG 001BH ;中断程序T1的入口,中断程序INIT0执行完成后,会跳转回来运行,
LJMP INIT1 ;跳转进入中断程序T1
ORG 0030H
MAIN:MOV SP,#60H ;设置堆栈区
MOV TMOD,#26H ;使用方式2
SETB IT0 ;允许T0中断请求
MOV TL1,#06H ;设置T1初值
MOV TH1,#06H
SETB EA ;启动中断总开关
SETB EX0
SETB ET1 ;允许T1中断请求
SJMP $ ;循环等中断
INIT0:SETB TR1 ;启动TR1计数器
RETI ;中断返回
INIT1:CPL P1.0 ;P1口位取反
MOV TL1,#06H ;设置T1初值
MOV TH1,#06H
RETI ;中断返回
END
Protues的仿真图如下所示:
代码如有错误欢迎指正。