⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pc.c

📁 单片机串口与电脑通信 C语言 C51 窗口通信实例
💻 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 + -