关于第一个问题 我自己也不太清楚 语句是别人帮我改的 他大概说是因为中断变量如果占用了通用寄存器RO(类似) 为了提高速度 往往单片机这么做 那么你原先函数中的变量在通用寄存器的值可能在被中断打断后 他原来的值就回不来了。
我的事例:、
我在AD中断中
原来的语句
AD_Result_power=(ADRES*300)/256;
经过同事改后:
AD_Result_power=ADRES; {ADRES是AD结果寄存器}
AD_Result_power=(AD_Result_power*300)/256;
这样结果就正确了 请高人指点 (可能需要清楚编译器原理,不同编译器还不一样)
关于第二点:
我的
if(120>a>0) 这样是完全错误的 反正我在PIC中不行
但是我改为if(a>0&a<120) 这样就行了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
回复【4楼】zhangf1021
-----------------------------------------------------------------------
回复【1楼】millwood0
-----------------------------------------------------------------------
4楼说的是结果,很感激,让我知道错的原因。
大神说的是路径方法 millwood0 (我个人奉之为偶像了)
回复【5楼】liansh
-----------------------------------------------------------------------
pic中通用寄存器跟51名称不同,另外你说的溢出,我也用计算器算过。
long型的都试过。不是溢出的问题。就是没做现场保护的问题。
-----------------------------------------------------------------------
millwood0 这位哥们的英文不知道你看懂了么 让你别写代码了 回家种地吧 还视为偶像 哈哈
一周热门 更多>