本帖最后由 Cortex-M0 于 2011-8-26 13:39 编辑
顶刘前辈,这句话说的好: "我们是中国人!专心于算计别人,连基本转换都忘了。" 赞一个~~~
俺不懂C, 也不懂汇编,最多只是略为了解一点皮毛~~~
电工们都知道,这个问题太简单啦!
当MCU响应中断时,先将相关寄存器压栈, 在51中,将ACC, PSW等寄存器压栈,其他MCU也类同,只是相关寄存器名有点不同,如中断中,对变量count执行加1运算,中间有进位,势必将CY置1, 刘前辈的意思俺这菜鸟明白,是希望当中断返回时,执行
if(count > 250||CY) //count = 251~260
判断时,只要将中断当中的CY加入,结果一定是正确的!
如不是51, 没有布尔运算,如AVR等MCU, 最多不用bit类型判断,改用char类型判断。
这个想法非常高明,不愧为高手中的高手,才能想得出,俺菜鸟这辈子想破脑袋,都想不出如此高明的用法。
只是,当中断返回时,电工们都知道,先将相关寄存器出栈, 在51中,将ACC, PSW等寄存器出栈,其他MCU也类同,只是相关寄存器名有点不同。
出栈时,由于恢复了原PSW, 那么,中断过程中,CY的变化(置1), 早被丢弃,俺菜鸟实在太笨了,这辈子想破脑袋,都想不出, 在主程序中,到什么地方去找中断过程中的CY进位标志,请论坛的大虾们教教俺,只是别告诉俺,搞个镜像标志暂存之类的,这个和CY进位标志的级别实在相差太远了,并且,当又响应更高级的中断时,这个镜像标志又被刷新了,这个理由也太老土了,搞个新鲜一点的理由,谢谢啦~~~
|