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

📄 serial.h

📁 用单片机实现出租车计价器的源码
💻 H
字号:
/*
说明:
    RXD = P3.0
    TXD = P3.1
    晶振:11.0592MHz(缺省值)
    用定时器T1作为波特率发生器
    波特率:9600(缺省值)
    起始位:1
    数据位:8
    停止位:1
    校验位:无
用法:
    1、根据实际情况,修改参数配置
    2、在主程序中包含本头文件
    3、在main()函数开始处执行串行口初始化函数UartInit()
    4、发送数据时直接用函数UartSendChar()和UartSendString()
    5、数据接收部分的程序框架已经写好,只需根据实际情况添加具体的处理代码
*/




#include <reg52.h>
sbit 	fg=P1^2 ;		  //标志位,状态可由指示灯显示
bit    ack_seri;
bit    fg_seri;
//参数配置
#define MCLK        11059200L    //定义CPU主频(Hz)
#define BAUD_RATE    9600L        //设置波特率


//定义发送中断辅助标志(仅用于发送)
static volatile bit _TI_;
unsigned char idata buf_seri[6];
unsigned char i=0;

//串行口初始化
extern void UartInit()
{
   
    EA = 0;
    RXD = 1;
    TXD = 1;
    _TI_ = 1;
    SCON = 0x50;    //串口方式1
    PCON |= 0x80;    //波特率加倍
   
   
    TH1 = 256 - ( MCLK / 12 ) / ( 16 * BAUD_RATE );
    TL1 = TH1;
   
    ES = 1;            //允许串行口中断
    
}





/*
功能:
    通过串行口发送单个字节
参数:
    c:被发送的字节数据,取值0x00~0xFF
*/
extern void UartSendChar(char c)
{
    while ( !_TI_ );
    _TI_ = 0;
    SBUF = c;
}


/*
功能:
    通过串行口发送字符串
参数:
    *s:被发送的字符串
说明:
    字符串应当以'\0'结尾,而'\0'本身不会被发送出去
*/
extern void UartSendString(char *s)
{
    char c;
    for (;;)
    {
        c = *s;
        if ( c == '\0' ) break;
        s++;
        UartSendChar(c);
    }
}

//串行口中断服务程序
static void UartINTSVC() interrupt 4
{
    char c;
    if ( RI )    //接收中断
    {

		fg_seri=1;
        c = SBUF;
        RI = 0;
		fg=~fg;
	    buf_seri[i++]=c-48;       //在这里添加其它代

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -