No.55137 作者:ST6168 邮件:ST6168@163.COM ID:21517 登陆:1次 文章数:3篇 最后登陆IP:210.21.209.251 最后登陆:2004/5/28 18:00:55 注册:2004/5/22 16:34:33 财富:109 发帖时间:2004/5/22 16:35:43 发贴者IP:210.21.209.3 标题:ST6168:急!哪位高手指点16F73使用时如何有效防止中断发生造成堆栈溢出问题 摘要:No.55137急!哪位高手指点16F73使用时如何有效防止中断发生造成堆栈溢出问题 急!哪位高手指点16F73使用时如何有效防止中断发生造成堆栈溢出问题 写一个16F73做的测试仪器产品程序 用了9个中断: ; INT外部秒脉冲中断 ; TMR0外部脉冲计数器溢出中断 ; PORTB(D7---D4)电平变化 ; A/D转换完成;电压测量 ; TMR1内部定时器溢出即500MS定时/显示/Buz) ; TMR2匹配 ; SCI异步发送 ; SCI异步接收 初始化完成后,以上9个中断全部开放(使能) 主程序在循环时,经常由于在某个CALL 调用子程序时发生中断,造成堆栈溢出 而且溢出的堆栈内容有时怪怪的 如: 00AD 00CE 012A ;中断发生 0079 ;中断发生 0079 ????前一中断处理刚RETFIE出又进其它中断了? 0079 ;中断发生 0079 ????前一中断处理刚RETFIE出又进其它中断了? 0079 ;中断发生 怎么压栈地址还是0079 ????前一中断处理刚RETFIE出又进中断了? 0079 ;中断发生 是否是CALL 瞬间发生 ??? 0079 ;压栈地址对应于 CALL SendLCDdata 下句PC地址 ---- 正常主程序CALL 我的程序涉及到以下事情: 6种开关量跳变检测、计数、处理;模拟量电压A/D; 定时显示LCD(LCDDr ......
>>返回讨论的主题
|