连载:单片机模板程序(asm)
以下程序择晶振为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
浙公网安备 33010602011771号