以下程序擇晶振為12MHz
時鐘i周期為晶振的倒數(shù),位1/f(晶振),機器周期為時鐘周期的12分頻,即為12*1/f(晶振),故12MHz的機器周期為1us
定時器1/0
ORG 0000H ;復位入口地址
AJMP START ;熟記長跳轉(zhuǎn)和短跳轉(zhuǎn)的區(qū)別:跳轉(zhuǎn)時有范圍的
LJMP MAIN
ORG 001BH ;T1中斷服務(wù)程序入口地址,若要實現(xiàn)T0中斷,則地址改為000BH
AJMP TIME1
ORG 0030H ;主程序
START:
MOV SP, #60H ;初始化程序
MOV TMOD, #10H ;設(shè)置T1工作于定時方式1(有16位計數(shù))
MOV TH1, #3CH ;設(shè)置加1計數(shù)器的計數(shù)初值高字節(jié) (和TL1一起計數(shù)了50ms)要設(shè)置定時器0的話則把1改為0,下同
MOV TL1, #0B0H ;設(shè)置加1計數(shù)器的計數(shù)初值低字節(jié)
SETB TR1 ;開定時器1
SETB ET1 ;開定時器1的中斷
SETB EA ;開總中斷
MIAN:
AJMP MAIN ;死循環(huán)直到計數(shù)器溢出
TIME1:
MOV TL1, #0B0H ;先賦低8位
MOV TH1, #3CH
;保護現(xiàn)場 PUSH PSW PUSH ACC
;恢復現(xiàn)場 POP ACC POP PSW 遵循后進先出
RETI ;中斷返回
END
外部中斷1/0
ORG 0000H ;復位入口地址
AJMP START
LJMP MAIN
ORG 0013H ;INT1中斷服務(wù)程序入口地址,若要實現(xiàn)INT0中斷,則地址改為0003H
AJMP INT1
ORG 0030H ;主程序
START:
SETB EX1 ;開啟外部中斷1 (若要設(shè)置外部中斷0則把1該位0,下同)
SETB IT1 ;為電平觸發(fā)方式
SETB EA ;開總中斷
MIAN:
AJMP MAIN ;死循環(huán)直到有中斷的觸發(fā)
INT1:
;保護現(xiàn)場 PUSH PSW PUSH ACC
;恢復現(xiàn)場 POP ACC POP PSW 遵循后進先出
RETI
END