应用定时器中断实例技术
时间:10-02
整理:3721RD
点击:
如何应用定时器实现中断呢?具体的操作步骤有呢些?应该注意什么问题?下面由工程师讲解一个应用定时器中断的实例:
现要求编制一段程序,使P1.0端口线上输出周期为2ms的方波脉冲。设单片机晶振频率
Fosc=6MHZ.
1、方法:利用定时器T0作1ms定时,达到定时值后引起中断,在中断服务程序中,使P1.0的状态取一次反,并再次定时1ms。
2、定时初值:机器周期MC=12/fosc=2us。所以定时lms所需的机器周期个数为500D,亦即0lF4H。设T0为工作方式1(16位方式),则定时初值是(01F4H)求补=FEOCH
START: MOV TMOD,#01H ;T0为定时器状态,工作方式1
MOV TL0,#0CH ;T0的低位定时初值
MOV TH0,#0FEH ;T0的高位定时初值
MOV tcoN,#10H ;打开T0
SETB ET0 ;1ET0,即允许T0中断
SETB EA ;1EA,即充许全局中断
AJMP $ ;动态暂存
000BH: AJMP IST0 ;转入T0中断服务程序入口地址IST0
IST0: MOV TL0,#0CH ;重置定时器初值
MOV TH0,#0FEH ;重置定时器初值
CPL P1.0 ;P1.0取反
RET1 ;中断返回
现要求编制一段程序,使P1.0端口线上输出周期为2ms的方波脉冲。设单片机晶振频率
Fosc=6MHZ.
1、方法:利用定时器T0作1ms定时,达到定时值后引起中断,在中断服务程序中,使P1.0的状态取一次反,并再次定时1ms。
2、定时初值:机器周期MC=12/fosc=2us。所以定时lms所需的机器周期个数为500D,亦即0lF4H。设T0为工作方式1(16位方式),则定时初值是(01F4H)求补=FEOCH
START: MOV TMOD,#01H ;T0为定时器状态,工作方式1
MOV TL0,#0CH ;T0的低位定时初值
MOV TH0,#0FEH ;T0的高位定时初值
MOV tcoN,#10H ;打开T0
SETB ET0 ;1ET0,即允许T0中断
SETB EA ;1EA,即充许全局中断
AJMP $ ;动态暂存
000BH: AJMP IST0 ;转入T0中断服务程序入口地址IST0
IST0: MOV TL0,#0CH ;重置定时器初值
MOV TH0,#0FEH ;重置定时器初值
CPL P1.0 ;P1.0取反
RET1 ;中断返回