标题:
keil~ 单片机C程序编译没有问题,可是调试的时候n等都无法赋值,求指导啊
[打印本页]
作者:
宝么猪
时间:
2015-4-17 15:01
标题:
keil~ 单片机C程序编译没有问题,可是调试的时候n等都无法赋值,求指导啊
#include <AT89X52.H>
#include <stdio.h>
#define uint unsigned int
#define uchar unsigned char
sbit LOAD=P1^6; //选择P1.7作为CS
sbit DI=P1^4; //选择P1.5作为数据输入
sbit DCLK=P2^5;//选择P2.6作为时钟
sbit LOAD1=P1^7; //选择P1.7作为CS1
sbit DI1=P1^5; //选择P1.5作为数据输入1
sbit DCLK1=P2^6;//选择P2.6作为时钟1
uchar green[3][8];
uchar red[3][8];
uchar dis[20][4];
int val[20]={-888,-300,-250,-200,-150,-100,-75,-50,-30,-15,0,15,30,50,75,100,150,200,250,300};
int n;
uchar judge(int x) //判断正负
{
uchar z;
if (x<0)
{z=16;}
else
{z=18;}
return(z);
}
uint abs(int x)//绝对值
{
return(x<0?-x:x);
}
void delay(uint time)
{
int i;
for(i=0;i<time;i++);
}
int green_light(int n)//LED红灯判断
{
int i;
if((n>0)&(n<9))
{
for(i=0;i<n;i++)
green[0][i]=1;
}
if((n>8)&(n<17))
{
for(i=0;i<8;i++)
green[0][i]=1;
for(i=8;i<n;i++)
green[1][i-8]=1;
}
if((n>16)&(n<20))
{
for(i=0;i<8;i++)
green[0][i]=1;
for(i=8;i<17;i++)
green[1][i-8]=1;
for(i=16;i<n;i++)
green[2][i-16]=1;
}
}
void display_452(int *v)//452数显程序分位
{
uchar i;
uchar temp1,temp2,temp3;
uint alevel;
for(i=0;i<=20;i++)
{
dis[i][0]=judge(v[i]);
alevel=abs(v[i]);
temp1=alevel/100; //分位显示
temp2=(alevel/10)%10;
temp3=alevel%10;
if (temp1>0)
{dis[i][1]=temp1;
dis[i][2]=temp2;
dis[i][3]=temp3;}
else
{dis[i][1]=16;
if(temp2>0)
{dis[i][2]=temp2;
dis[i][3]=temp3;}
else{dis[i][2]=16;
dis[i][3]=temp3;}
}
}
}
void main()
{
uchar i,j;
n=11;
display_452(val);
while(1)
{
green_light(n);
for(i=0;i<3;i++)
{
for(j=0;j<8;j++)
{
red[i][j]=1-green[i][j];
}
}
}
}
作者:
li975244245
时间:
2015-4-20 18:25
这个不秦楚了
作者:
xiao_yp2014
时间:
2015-4-20 23:22
if((n>0)&(n<9))把这种语句改成 if((n>0)&&(n<9))
作者:
时间:
2015-4-20 23:48
楼上正解,&&是逻辑与,&是按位与。
作者:
累了困了疯了
时间:
2015-4-23 21:10
逻辑与是两个&&
作者:
大海0573
时间:
2015-4-24 09:59
嗯,楼上的都正确。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1