【程序】单片机模板程序,需要的拿走!
扫描二维码
随时随地手机看文章
以下程序择晶振为12MHz
时钟i周期为晶振的倒数,位1/f(晶振),机器周期为时钟周期的12分频,即为12*1/f(晶振),故12MHz的机器周期为1us
定时器1/0
ORG 0000H ;复位入口地址
AJMP START ;熟记长跳转和短跳转的区别:跳转时有范围的
LJMP MAIN
ORG 001BH ;T1中断服务程序入口地址,若要实现T0中断,则地址改为000BH
AJMP TIME1
ORG 0030H ;主程序
START:
MOV SP, #60H ;初始化程序
MOV TMOD, #10H ;设置T1工作于定时方式1(有16位计数)
MOV TH1, #3CH ;设置加1计数器的计数初值高字节 (和TL1一起计数了50ms)要设置定时器0的话则把1改为0,下同
MOV TL1, #0B0H ;设置加1计数器的计数初值低字节
SETB TR1 ;开定时器1
SETB ET1 ;开定时器1的中断
SETB EA ;开总中断
MIAN:
AJMP MAIN ;死循环直到计数器溢出
TIME1:
MOV TL1, #0B0H ;先赋低8位
MOV TH1, #3CH
;保护现场 PUSH PSW PUSH ACC
;恢复现场 POP ACC POP PSW 遵循后进先出
RETI ;中断返回
END
外部中断1/0
ORG 0000H ;复位入口地址
AJMP START
LJMP MAIN
ORG 0013H ;INT1中断服务程序入口地址,若要实现INT0中断,则地址改为0003H
AJMP INT1
ORG 0030H ;主程序
START:
SETB EX1 ;开启外部中断1 (若要设置外部中断0则把1该位0,下同)
SETB IT1 ;为电平触发方式
SETB EA ;开总中断
MIAN:
AJMP MAIN ;死循环直到有中断的触发
INT1:
;保护现场 PUSH PSW PUSH ACC
;恢复现场 POP ACC POP PSW 遵循后进先出
RETI
END