51单片机,keil 软件 C语言问题(我错在哪了)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51单片机,keil 软件 C语言问题(我错在哪了)相关的知识,希望对你有一定的参考价值。
//主机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 个警告。
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;
……
再问下,
sbit SW=P1^0=0;
sbit LED=P1^1=0;
sbit SPK=P1^2=0;
为什么不可以,怎样才能取初值为0?
回答完这个立即采纳,拜托了!
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?
回答完这个立即采纳,拜托了!
while(SW==0);
c=SBUF;
putc_to_serialport(c);
LED=0;
SPK=0;
P0=0x00;
P2=0x00;
continue;
我错哪了
请大神指点迷津。。。
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
int n,i,count=0,k,l;
char a[502];
char b[502];
scanf ("%d",&n);
gets(a);
gets(b);
l=strlen (a);
for (i=0;i<l;i++)
{
if (a[i]==b[i])
{
count++;
}
}
k=count/l;
if (k<n)
{
printf("yes");
}
else printf("no");
return 0;
}
为什么只能读入一行?
以上是关于51单片机,keil 软件 C语言问题(我错在哪了)的主要内容,如果未能解决你的问题,请参考以下文章