51单片机,keil 软件 C语言问题(我错在哪了)
//主机C语言程序#include<reg51.h>//头文件,单片机硬件的底层驱动程序#defineucharunsignedchar//定义无符号的字符#define...
//主机C语言程序
#include <reg51.h>//头文件,单片机硬件的底层驱动程序
#define uchar unsigned char//定义无符号的字符
#define uint unsigned int//定义无符号的整型
sbit SW=P1^0;
sbit LED=P1^1;
sbit SPK=P1^2;
uchar c=0x00;
uint n=0;
uint num[3];
//数码管段选码
uchar code dule_CODE[]={0x3F,//0
0x06,//1
0x5B,//2
0x4F,//3
0x66,//4
0x6d,//5
0x7c,//6
0x07,//7
0x7F,//8
0x67//9
};
//数码管位选码
uchar code wele_CODE[]={0x01,//1
0x02,//2
0x04,//3
};
//延时
void Delay(uint x)
{
uchar i;
while(x--)for(i=0;i<120;i++);
}
//向串口发送识别码
void putc_to_serialport(uchar c)
{
SBUF=c;
while(TI==0);
TI=0;
}
//主程序
void main()
{
LED=0;//关闭LED
SPK=0;//关闭蜂鸣器
p0=0x00;//关闭数码管
P2=0x00;
SCON=0x50;//串口工作方式1,允许接收
TMOD=0x20;//T1工作在模式2,8位自动装载
PCON=0x00;//波特率不倍增
TH1=0xFD;//波特率 9600
TL1=0xFD;
TI=RI=0;
TR1=1;//启动定时器T1
IE=0x90;//允许串口中断
while(1)
{
Delay(100);
if(SW==0)
{
while(SW==0);
c=SBUF;
putc_to_serialport(c);
LED=0;
SPK=0;
P0=0x00;
P2=0x00;
continue;
}
}
}
//主机串口接收中断函数
void serial_INT()interrupt 4
{
if(RI)//接收到一字节
{
RI=0;//清除串行接收中断标志
while(SW)
{
SPK=~SPK;
LED=~LED;
uint j;
for(j=0;j++;j<3)
{
n=SBUF-'0';
num[2]=n/100;//取百位
num[1]=n/10%10;//取十位
num[0]=n%10;//取个位
uint k;
for(k=0;k++;k<3)
{
P2=wele_CODE[k];
P0=dule_CODE[num[k]];
Delay(1);
}
}
}
}
}
编译 test.c ...
TEST.C(46): 错误 C202: 'p0': undefined identifier
TEST.C(82): 错误 C141: syntax error near 'unsigned'
TEST.C(82): 错误 C202: 'j': undefined identifier
TEST.C(83): 错误 C202: 'j': undefined identifier
TEST.C(89): 错误 C141: syntax error near 'unsigned'
TEST.C(89): 错误 C202: 'k': undefined identifier
TEST.C(90): 错误 C202: 'k': undefined identifier
TEST.C(92): 错误 C202: 'k': undefined identifier
TEST.C(93): 错误 C202: 'k': undefined identifier
test.c - 9 个错误, 0 个警告。 展开
#include <reg51.h>//头文件,单片机硬件的底层驱动程序
#define uchar unsigned char//定义无符号的字符
#define uint unsigned int//定义无符号的整型
sbit SW=P1^0;
sbit LED=P1^1;
sbit SPK=P1^2;
uchar c=0x00;
uint n=0;
uint num[3];
//数码管段选码
uchar code dule_CODE[]={0x3F,//0
0x06,//1
0x5B,//2
0x4F,//3
0x66,//4
0x6d,//5
0x7c,//6
0x07,//7
0x7F,//8
0x67//9
};
//数码管位选码
uchar code wele_CODE[]={0x01,//1
0x02,//2
0x04,//3
};
//延时
void Delay(uint x)
{
uchar i;
while(x--)for(i=0;i<120;i++);
}
//向串口发送识别码
void putc_to_serialport(uchar c)
{
SBUF=c;
while(TI==0);
TI=0;
}
//主程序
void main()
{
LED=0;//关闭LED
SPK=0;//关闭蜂鸣器
p0=0x00;//关闭数码管
P2=0x00;
SCON=0x50;//串口工作方式1,允许接收
TMOD=0x20;//T1工作在模式2,8位自动装载
PCON=0x00;//波特率不倍增
TH1=0xFD;//波特率 9600
TL1=0xFD;
TI=RI=0;
TR1=1;//启动定时器T1
IE=0x90;//允许串口中断
while(1)
{
Delay(100);
if(SW==0)
{
while(SW==0);
c=SBUF;
putc_to_serialport(c);
LED=0;
SPK=0;
P0=0x00;
P2=0x00;
continue;
}
}
}
//主机串口接收中断函数
void serial_INT()interrupt 4
{
if(RI)//接收到一字节
{
RI=0;//清除串行接收中断标志
while(SW)
{
SPK=~SPK;
LED=~LED;
uint j;
for(j=0;j++;j<3)
{
n=SBUF-'0';
num[2]=n/100;//取百位
num[1]=n/10%10;//取十位
num[0]=n%10;//取个位
uint k;
for(k=0;k++;k<3)
{
P2=wele_CODE[k];
P0=dule_CODE[num[k]];
Delay(1);
}
}
}
}
}
编译 test.c ...
TEST.C(46): 错误 C202: 'p0': undefined identifier
TEST.C(82): 错误 C141: syntax error near 'unsigned'
TEST.C(82): 错误 C202: 'j': undefined identifier
TEST.C(83): 错误 C202: 'j': undefined identifier
TEST.C(89): 错误 C141: syntax error near 'unsigned'
TEST.C(89): 错误 C202: 'k': undefined identifier
TEST.C(90): 错误 C202: 'k': undefined identifier
TEST.C(92): 错误 C202: 'k': undefined identifier
TEST.C(93): 错误 C202: 'k': undefined identifier
test.c - 9 个错误, 0 个警告。 展开
4个回答
展开全部
……
p0=0x00;//关闭数码管----P0,应该大写
……
//主机串口接收中断函数
void serial_INT()interrupt 4
{
uint k;----在这里定义
uint j;----在这里定义
if(RI)//接收到一字节
{
RI=0;//清除串行接收中断标志
while(SW)
{
SPK=~SPK;
LED=~LED;
// uint j;--不要在这里定义
for(j=0;j++;j<3)
{
n=SBUF-'0';
num[2]=n/100;//取百位
num[1]=n/10%10;//取十位
num[0]=n%10;//取个位
// uint k;---- !!!
for(k=0;k++;k<3)
{
P2=wele_CODE[k];
P0=dule_CODE[num[k]];
Delay(1);
}
……
改好即可。
p0=0x00;//关闭数码管----P0,应该大写
……
//主机串口接收中断函数
void serial_INT()interrupt 4
{
uint k;----在这里定义
uint j;----在这里定义
if(RI)//接收到一字节
{
RI=0;//清除串行接收中断标志
while(SW)
{
SPK=~SPK;
LED=~LED;
// uint j;--不要在这里定义
for(j=0;j++;j<3)
{
n=SBUF-'0';
num[2]=n/100;//取百位
num[1]=n/10%10;//取十位
num[0]=n%10;//取个位
// uint k;---- !!!
for(k=0;k++;k<3)
{
P2=wele_CODE[k];
P0=dule_CODE[num[k]];
Delay(1);
}
……
改好即可。
追问
再问下,
sbit SW=P1^0=0;
sbit LED=P1^1=0;
sbit SPK=P1^2=0;
为什么不可以,怎样才能取初值为0?
回答完这个立即采纳,拜托了!
追答
分开写即可。
……
sbit SW=P1^0;
sbit LED=P1^1;
sbit SPK=P1^2;
……
SW = 0;
LED = 0;
SPK = 0;
……
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
STM32是一种由意法半导体(STMicroelectronics)公司设计和生产的单片机系列,广泛用于嵌入式系统、物联网(IoT)设备、汽车电子、工业自动化等领域。STM32具有以下优点:1. 低功耗:STM32单片机通常具有较低的功耗,...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
展开全部
你的P0 J K未定义,
追问
再问下,
sbit SW=P1^0=0;
sbit LED=P1^1=0;
sbit SPK=P1^2=0;
为什么不可以,怎样才能取初值为0?
回答完这个立即采纳,拜托了!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
TEST.C(46): 错误 C202: 'p0': undefined identifier P0应该大写
TEST.C(82): 错误 C141: syntax error near 'unsigned' uint j 应该在函数的开头
TEST.C(82): 错误 C202: 'j': undefined identifier j 未定义
TEST.C(83): 错误 C202: 'j': undefined identifier
TEST.C(89): 错误 C141: syntax error near 'unsigned' 应该在函数的开头
TEST.C(89): 错误 C202: 'k': undefined identifier
TEST.C(90): 错误 C202: 'k': undefined identifier
TEST.C(92): 错误 C202: 'k': undefined identifier
TEST.C(93): 错误 C202: 'k': undefined identifier 同理
TEST.C(82): 错误 C141: syntax error near 'unsigned' uint j 应该在函数的开头
TEST.C(82): 错误 C202: 'j': undefined identifier j 未定义
TEST.C(83): 错误 C202: 'j': undefined identifier
TEST.C(89): 错误 C141: syntax error near 'unsigned' 应该在函数的开头
TEST.C(89): 错误 C202: 'k': undefined identifier
TEST.C(90): 错误 C202: 'k': undefined identifier
TEST.C(92): 错误 C202: 'k': undefined identifier
TEST.C(93): 错误 C202: 'k': undefined identifier 同理
追问
再问下,
sbit SW=P1^0=0;
sbit LED=P1^1=0;
sbit SPK=P1^2=0;
为什么不可以,怎样才能取初值为0?
回答完这个立即采纳,拜托了!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
if(SW==0)
{
while(SW==0);
c=SBUF;
putc_to_serialport(c);
LED=0;
SPK=0;
P0=0x00;
P2=0x00;
continue;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询