No.70755 作者:懒虫 邮件:xiaojia@sina.com.cn ID:8712 登陆:35次 文章数:23篇 最后登陆IP:116.235.136.40 最后登陆:2008/9/10 15:24:56 注册:2003/1/13 16:57:00 财富:81 发帖时间:2005/1/7 11:16:36 发贴者IP:218.79.160.91 标题:懒虫:大家帮忙看看,关于用定时器T0测频宽的一个错误 摘要:No.70755大家帮忙看看,关于用定时器T0测频宽的一个错误 我想用定时器T0测量一个50Hz方波信号,用INT0捕捉下降沿,在INT0中断服务程序中启动T0;T0定式参数设置为500us,在T0中断服务程序中重载定时参数。主程序等待信号的上升沿到来,上升沿一到,就关闭T0。其中INT0仅仅触发一次,下载开中断有主程序决定。现在的问题是:T0检测到的中断次数R3不定---按照计算,大概范围是R3=20次左右;实际上程序运行不可靠,经常程序3次等等不正常现象。不知道问题出在哪里。源程序如下: ; 本程序采用晶振: 12MHz ; 50Hz和100Hz采样 ;******************************************************************* BYT_DLY EQU 30H BIT_INT0 BIT 01H BIT_T0 BIT 00H ORG 0000H AJMP Main ORG 0003H AJMP INT_INT0 ; 外部中断INT0 ORG 000BH ; 定时器T0 AJMP INT_T0 ORG 002BH RETI ;******************************************************************* ;******************************************************************* MAIN: MOV SP,#68H ;------------------------------------------------- Initial: CLR P1.0 CLR P1.1 CLR BIT_INT0 ; T0启动标志 Initialized: MOV R3,#00H ; T0中断次数 ;------------------------------------------------- ;设置T0 MOV TMOD,#01H ; T0,方式1 ;------------------------------------------------- ;设置INT0 SETB TCON.0 ; IT0=1,边沿触发 SETB IP.0 ; PX0=1,设INT0为高优先级 SETB EX0 ; 允许INT0中断 ;------------------------------------------------- SETB EA ; 开中断 ;******************************************************************* ; ※※※※※※※※※※※※※※※※※ ; ※※ ※※ ; ※※ 主程序流程 ※※ ; ※※ ※ ......
>>返回讨论的主题
|