OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » [求助]uc/OS定时器中断程序?

共1条 1/1 1 跳转至

[求助]uc/OS定时器中断程序?

菜鸟
2002-05-28 16:58:00    评分
这是zxgllp提的一个问题, 希望各位帮帮忙! ------------------------------------------------------------- 以下是别人移植的程序一部分定时器中断程序: CSEG AT 0BH LJMP _?OSTickISR PUBLIC OSTickRate DT?OSTickISR SEGMENT DATA RSEG DT?OSTickISR OSTickRate: DS 1 OSTickCntr: DS 1 EXTRN CODE(_?UserTickTimer) PR?OSTickISR SEGMENT CODE RSEG PR?OSTickISR _?OSTickISR: LCALL ResetIntrHw PUSHA LCALL _?UserTickTimer DEC OSTickCntr MOV A, OSTickCntr JNZ OSTI_1 MOV OSTickCntr, OSTickRate LCALL _?OSIntEnter LCALL _?OSTimeTick LCALL _?OSIntExit OSTI_1: POPA RET ResetIntrHw: RETI 以上运行是正确的,可是我觉得这个中断程序应该是以RETI结尾,可是它是以RET结尾。根据我的理解我改成了以下形式: CSEG AT 0BH LJMP _?OSTickISR PUBLIC OSTickRate DT?OSTickISR SEGMENT DATA RSEG DT?OSTickISR OSTickRate: DS 1 OSTickCntr: DS 1 EXTRN CODE(_?UserTickTimer) PR?OSTickISR SEGMENT CODE RSEG PR?OSTickISR _?OSTickISR: PUSHA DEC OSTickCntr MOV A, OSTickCntr JNZ OSTI_1 MOV OSTickCntr, OSTickRate LCALL _?OSIntEnter LCALL _?OSTimeTick LCALL _?OSIntExit OSTI_1: POPA RETI 可是改成这样以后,程序反而不能运行啦,我不知道是为什么?这里面和堆栈也没有多大关系啊? PUSHA和POPA是中断程序自身的,对吧? 请多多指教! [align=right][color=#000066][此贴子已经被amine于2002-5-28 8:58:03编辑过][/color][/align]



关键词: 求助     定时器     中断     程序     OSTickISR    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]