void smg1()
{
wela=1;
P0=0xfe;
//这中间如果没延时,则后面的状态会没等你看清楚就被后面的状态覆盖了
wela=0;
dula=1;
P0=0x77;
//这中间如果没延时,则后面的状态会没等你看清楚就被后面的状态覆盖了
dula=0;
}
smg2也是相同的道理;
void key()
{
if(s2==0)
delay(10);
if(s2==0)
{
a=~a; //如果a定义为int型,当它为1时,对它取反并不是0,除非定义为位数据.
while(!s2);
}
}
我想说的是,你的那一个功能没实现?
这样,你把你以前程序中的while(!s2);删了,再看看
q我
uchar num;改成char num,试试
同时key 我有修改
我试过可以了
void key()
{
if(s2==0)
delay(10);
if(s2==0)
{
if (a)
a=0;
else
a=1;
while(!s2);
}
}
1. 把a定位为bit类型,a=~a,改为a = !a;if(a=1)改为if(a),if(a==0)改为if(!a);不知道你的编译器,keil4里,不需修改a的类型,只需将a=~a,改为a = !a即可。
2. 把num定义为 signed char;或者把if(num<0)改为if(num==255),不要同时把num改为signed char又把if(num<0)改为if(num==255),只选一个。