📄 pc.c
字号:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code SEG7[10] = {
0xC0, //"0"
0xF9, //"1"
0xA4, //"2"
0xB0, //"3"
0x99, //"4"
0x92, //"5"
0x82, //"6"
0xF8, //"7"
0x80, //"8"
0x90 //"9"
};
uchar code ACT[4] = {0xfe, 0xfd, 0xfb, 0xf7};
//4位数码管的位选码
/****************************************************/
uchar code as[] = "Receving Data:\0"; //显示一个预定字符串
uchar a=0x30, b; //全局变量 b临时存放收到的信息
/**************************************/
void init(void) //初始化子函数
{
TMOD = 0x20; //定时器T1方式2
TH1 = 0xfd; //波特率9600
TL1 = 0xfd;
SCON = 0x50; //串口方式1,10位可变波特率,允许接受
TR1 = 1; //启动T1
EA = 1; //开总中断
ES = 1; // 串口1开中断
}
/*****************************************/
void delay(uint k)
{
uint data i, j;
for(i=0; i<k; i++)
{
for(j=0; j<121; j++)
{;}
}
}
/********************************/
void main(void)
{
uchar i;
init();
while(1)
{
P0 = SEG7[(a-0x30)/10];
P2 = ACT[1];
delay(1);
P0 = SEG7[(a-0x30)%10];
P2 = ACT[0];
delay(1);
if(RI) //如果接受标志位1,说明已接受到信息,进入if语句
{
RI = 0; i = 0; //清除接受标志,i置0
while(as[i] != '\0') //先发送预定字符串
{
SBUF = as[i];
while(!TI);
TI = 0;
i++;
}
SBUF = b; ,、//然后将已经接受并存放在b中的信息再
//送入SBUF发送出去
while(!TI);
TI = 0;
EA = 1;
}
}
}
/**************************************/
// 串口接受中断服务程序 使用默认的寄存器组
void serial_serve(void) interrupt 4
{
a = SBUF; //将接受到的信息存入a中
b = a; //再将a转存
EA = 0; //关闭总中断
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -