【___串口___最基本代码、待函数化优化】

标题【___串口___最基本代码、待函数化优化】

串口笔记
主要思路:
TXD 和 RXD (串口 下载程序 )
① 文本形式用户写(一个字符一个字符写入)
② Hex形式用户写(ASX||进制的形式写入)
(一)(用户)用上位发送数据时:在一个字符串中,(以文本形式SBUF一个一个字节存)通过串口外部中断,每完成接受一个字节或内容,RI = 1, (变量)unsigned char = SBUF(用户数据一个一个存) ;然后手动恢复RI = 0;//继续下一个准备 ;

(二)单片机里数据回显在 (上位机): 目的把SBUF的数据,转到另一个SBUF 数据, 用到
while(TI == 0 );//while死循环停留 ,等待硬件完成送入,完成后自动TI = 1 ,并跳出这个while死循环。
TI= 0; //TI = 0; 下一个数据准备

//声明函数初始化
void UartInit(void)		//9600bps@12.000MHz 
{
	SCON = 0x50;		//8位数据,可变波特率
	AUXR |= 0x01;		//串口1选择定时器2为波特率发生器
	AUXR |= 0x04;		//定时器2时钟为Fosc,即1T
	T2L = 0xC7;		//设定定时初值
	T2H = 0xFE;		//设定定时初值
	AUXR |= 0x10;		//启动定时器2
	
	ES = 1 ;    //串口中断打开,
}


///-----------main.c
unsigned char Uart_buf[6];  //一次6字符
unsigned char Uart_buf_unm=0; //用于  i++

/*-------------------------------------------------------
UART 串口中断  服务程序
--------------------------------------------------------*/
void Uart() interrupt 4   // 【 上位机(用户)》 单片机 】
{
	if(RI )    //每完成接受一个字节或内容,RI = 1,
	{
		RI = 0;  //复位,下一次准备
		Uart_buf[Uart_buf_unm] = SBUF ;
		Uart_buf_unm++ ;
	}
}


void Uart_Pro (void)  //回显函数 (单片机》上位机)
{
	unsigned char i ;
	
	if(Uart_buf_unm==5) 
	{
		Uart_buf_unm = 0;
   	sprintf(seg_sss, "%s",Uart_buf); //打印到数码管显示
		for(i = 0;i<=4;i++)
		{
			SBUF = 	Uart_buf[i];
			while(TI ==0 );   //while死循环停留  ,等待硬件完成送入,完成后自动TI = 1 ,并跳出这个while死循环。
			TI =0 ;			
		}	
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值