xiaoming2202

不断学习,,小明666,加油!

51单片机串口

0
阅读(673)

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 永远等待
///*************************************/