,运算测试正常的程序,为啥在单片机中会输出异常
求助,运算测试正常的程序,为啥在单片机中会输出错误
本帖最后由 loongsking 于 2012-11-07 18:21:45 编辑
------最佳解决方案--------------------
if(p > 999) P2 = a[4],P1 = b[p/1000%10];
if(p > 99) P2 = a[5],P1 = b[p/100%10];
你程序里是输出P1和P2,P2没有问题,但是P1有小问题。
P最大是100,p/1000就是0了,在余10.还是0.
p/100%10也是0,
你的max有没有定义错确定是99?
程序中的测试只是确定你程序语法有没有问题,而不是功能的问题。
------其他解决方案--------------------
修改为
------其他解决方案--------------------
接分的来了!!!
------其他解决方案--------------------
来接分了
------其他解决方案--------------------
举个例子来说,PC机上int是32位,单片机上一般16位。
还有你的单片机能跑乘除法吗?
------其他解决方案--------------------
加了个小延迟正常了
------其他解决方案--------------------
你没看明白
------其他解决方案--------------------
来人啊,我要撒分
------其他解决方案--------------------
------其他解决方案--------------------
本帖最后由 loongsking 于 2012-11-07 18:21:45 编辑
#include <reg52.h>
#define MAX 99
void main()
{
int k;
unsigned int p;
int a[8] ={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; //P2 选择位
int b[10] ={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09}; //P1 输出段
while(1)
{
for(p = 0;p < MAX+1;p++)
{
for(k = 0;k <10000;k++)
{
if(p > 999) P2 = a[4],P1 = b[p/1000%10];
if(p > 99) P2 = a[5],P1 = b[p/100%10];
if(p > 9) P2 = a[6],P1 = b[p/10%10];
P2 = a[7],P1 = b[p%10];
}
}
}
}
------最佳解决方案--------------------
if(p > 999) P2 = a[4],P1 = b[p/1000%10];
if(p > 99) P2 = a[5],P1 = b[p/100%10];
你程序里是输出P1和P2,P2没有问题,但是P1有小问题。
P最大是100,p/1000就是0了,在余10.还是0.
p/100%10也是0,
你的max有没有定义错确定是99?
程序中的测试只是确定你程序语法有没有问题,而不是功能的问题。
------其他解决方案--------------------
if(p > 999) P2 = a[4],P1 = b[p/1000%10];
if(p > 99) P2 = a[5],P1 = b[p/100%10];
if(p > 9) P2 = a[6],P1 = b[p/10%10];
P2 = a[7],P1 = b[p%10];
修改为
if(p > 999) P2 = a[4],P1 = b[p/1000%10];
else if(p > 99) P2 = a[5],P1 = b[p/100%10];
else if(p > 9) P2 = a[6],P1 = b[p/10%10];
else P2 = a[7],P1 = b[p%10];
------其他解决方案--------------------
接分的来了!!!
------其他解决方案--------------------
来接分了
------其他解决方案--------------------
举个例子来说,PC机上int是32位,单片机上一般16位。
还有你的单片机能跑乘除法吗?
------其他解决方案--------------------
加了个小延迟正常了
------其他解决方案--------------------
你没看明白
------其他解决方案--------------------
来人啊,我要撒分
------其他解决方案--------------------
if(p > 999)
{
P2 = a[4];P1 = b[p/1000%10];
}
else if(p > 99)
{
P2 = a[5];P1 = b[p/100%10];}
else if(p > 9){
{
P2 = a[6];P1 = b[p/10%10];}
else
{
P2 = a[7];P1 = b[p%10];
}
------其他解决方案--------------------