如题,最近在学单片机,却在刚入门儿的时候被一个似乎是很简单的程序给卡到这儿了。
我自己想的是这样的。
#include<reg52.h>
#define uint unsigned int
sbit a=P1;
void delay(uint);
main()
{
while(1)
{
a=0xfe;
while(a!=0x00)
{
delay(20);
a--;
}
delay(20);
}
}
void delay(uint z)
{
uint x,y;
for(x=110;x>0;x--)
for(y=z;y>0;y--);
}
结果是错误的,显示的是
1.C(13): error C193: '--': illegal operation on bit(s)
这样的一条提示信息。
高手指点下。似乎是说a不能这么减,那这个程序改怎么写?
sbit 是C51中定义位变量用的,这一位可以使0或者1。不能进行自减操作。你根本不用sbit 操作,直接用P1就可以了。
回复 6楼 xxlest 的帖子
#include
#define ui unsigned int
#define uc unsigned char
#include
void delay (ui);
sbit n1=P2^4;
void main()
{
uc add;
n1=0;
while (1)
{
add=0xfe;
for(P1=add;P1>0x00;P1--)
delay (300);
}
}
void delay (ui z)
{
ui x,y;
for(x=100;x>0;x--)
for(y=z;y>0;y--);
}