51单片机串口
0赞51单片机串口
*****************
#include <reg52.h>
#include <stdio.h>
typedef unsigned int INT16U;
typedef unsigned char INT8U;
void Delay_Ms(INT16U z)
{
INT16U x,y; ///字符型
for(x = z; x > 0; x--)
for(y = 114; y > 0 ; y--);
}
/***********UART我还不大理解********/
void UART_Init()
{
TMOD |= 0x20; //T1工作模式2 8位自动重装
TH1 = 0xfd;
TL1 = 0xfd; //比特率9600
TR1 = 1; //启动T1定时器
SM0 = 0;
SM1 = 1; //串口工作方式1 10位异步
}
void main()
{
UART_Init(); //串口初始化
/* while(1)
{ //TI,SBUF当然不用先定义
SBUF='c';
while(!TI);//保证上一个数据发送完
TI = 0;
Delay_Ms(1000);
} */
/*******发送文本*****/
while(1){
TI=1;
printf("小明"); ////在串口助手中不加换行符/n时printf是连续发送,,puts是一行一行的发送
while(!TI);
TI = 0;
Delay_Ms(1000);
}
}
/*************************************
备注:
使用printf()puts()前都应软件置位TI = 1;
printf()puts() 使用putchar函数发送字节
必须有 TI=1
void putchar(uchar sbyte )
{
while(!TI); //等待发送完
SBUF=sbyte;
}
///所第调用putchar前没TI=1 永远等待
///*************************************/