//主机C语言程序
#include //头文件,单片机硬件的底层驱动程序
#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 个警告。