51单片机学习8_串口通信

原创文章,转载请注明: 转载自勤奋的小青蛙
本文链接地址: 51单片机学习8_串口通信

本次实验的目的是通过单片机串口调试软件给单片机发送aa,ee,ff......类似的数据给P1口,控制发光二极管的亮灭。

在具体操作串口之前,我们需要对单片机的一些串口特殊寄存器进行配置,主要是设置产生波特率的定时器1,串行口控制和中断控制,具体步骤如下:

  1. 确定T1的工作方式(编程器TMOD的工作方式);
  2. 计算T1的初值,对TH1,TL1进行赋值;
  3. 启动T1;
  4. 确定串行口的工作方式(编程SCON寄存器);
  5. 串行口工作在中断方式,要进行中断处理

 

#include <reg52.h>
#define uchar unsigned char

uchar sig, flag;

void init()
{
	//PCON
	SMOD = 0;
	//SCON
	SM0 = 0;
	SM1 = 1;
	REN = 1;//允许串口接收数据
	//定时器1
	TMOD = 0x20;//定时器1的第二种方式
	TH1 = 0XFD;//装入初值
	TL1 = 0XFD;//装入初值
	TR1 = 1;//开定时器1
	//开中断
	EA = 1;//总中断打开
	ES = 1;//串口中断打开
}

void main()
{
	//初始化串口设置
	init();
	while (1) {
		if (flag == 1) {
			flag = 0;
			ES = 0;
			SBUF = sig;
			while (!TI);
			TI = 0;
			ES = 1;
		}
	}
}

//串口中断
void ser() interrupt 4
{
	RI = 0;
	P1 = SBUF;
	sig = SBUF;
	flag = 1;
}

将上述程序烧写到TX-1C板子上,通过串口调试辅助工具,发送aa,然后可以看到发光二极管间隔点亮,而且串口调试工具会收到反馈的"AA".

原创文章,转载请注明: 转载自勤奋的小青蛙
本文链接地址: 51单片机学习8_串口通信

文章的脚注信息由WordPress的wp-posturl插件自动生成



|2|left
打赏

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: