单片机--串口通信---11

Uart1_Drive.h
#ifndef Uart1_Drive
#define Uart1_Drive

extern void Uart1_Init();
extern void Uart1_Up_Data_Drive();
extern u8 xdata Uart1_Up_Num_Buffer[10]; //数字部分

#endif

Uart1_Drive.c

#include “all.h”
bit Uart1_Flag=1;
u8 code Uart1_Up_Symbol_Buffer[30]={"\n\r温度: 遥控解码: 超声波:mm"}; //\0是空字符 \n是换行 \r是回车
u8 xdata Uart1_Up_Num_Buffer[10];

//***************************************************************************
//函数:串口发送数据初始化
//功能:初始化串口,配置串口寄存器
//出口:void
//入口:void
//***************************************************************************
void Uart1_Init()
{
SM0=1;
SM1=1; //上述两个指定串行通信的工作方式.9
REN=1; //串口接收允许位。上面三个配置,相当于SCON=0x50;

PCON&=0x3f;   //0011 1111  

AUXR|=0x01;   //0000 0001
AUXR|=0x14;   //0001 0100
T2H=0xfc;
T2L=0xf3;
ES=1;

}

//***************************************************************************
//函数:串口发送数据
//功能:发送串口数据
//出口:void
//入口:void
//***************************************************************************

void Uart1_Up_Data_Drive()
{
static u8 xdata count=0;
if(Uart1_Flag)
{
Uart1_Flag=0;
count++;

    switch(count)
   {
        case 1:SBUF=Uart1_Up_Symbol_Buffer[0];break;
        case 2:SBUF=Uart1_Up_Symbol_Buffer[1];break;
        case 3:SBUF=Uart1_Up_Symbol_Buffer[2];break;
        case 4:SBUF=Uart1_Up_Symbol_Buffer[3];break;
        case 5:SBUF=Uart1_Up_Symbol_Buffer[4];break;
        case 6:SBUF=Uart1_Up_Symbol_Buffer[5];break;
        case 7:SBUF=Uart1_Up_Symbol_Buffer[6];break;  //排序发送到温度后面的分号:
        case 8:SBUF=Uart1_Up_Num_Buffer[0];break;
        case 9:SBUF=Uart1_Up_Num_Buffer[1];break;
        case 10:SBUF=Uart1_Up_Num_Buffer[2];break;
        case 11:SBUF=Uart1_Up_Num_Buffer[3];break;   //显示温度
       
        case 12:SBUF=Uart1_Up_Symbol_Buffer[7];break;
        case 13:SBUF=Uart1_Up_Symbol_Buffer[8];break;
        case 14:SBUF=Uart1_Up_Symbol_Buffer[9];break;
        case 15:SBUF=Uart1_Up_Symbol_Buffer[10];break;
        case 16:SBUF=Uart1_Up_Symbol_Buffer[11];break;
        case 17:SBUF=Uart1_Up_Symbol_Buffer[12];break;
        case 18:SBUF=Uart1_Up_Symbol_Buffer[13];break;
        case 19:SBUF=Uart1_Up_Symbol_Buffer[14];break;
        case 20:SBUF=Uart1_Up_Symbol_Buffer[15];break;
        case 21:SBUF=Uart1_Up_Symbol_Buffer[16];break;
        case 22:SBUF=Uart1_Up_Symbol_Buffer[17];break;
        case 23:SBUF=Uart1_Up_Num_Buffer[5];break;
        case 24:SBUF=Uart1_Up_Num_Buffer[6];break;

        case 25:count=0;;break;


   }

}

}

void Uart1_Routine() interrupt 4
{
static char Uart1_ser_n=0;
if(RI) //接收中断,单片机发送信息给电脑
{
RI=0;
Uart1_Flag=1;
if(SBUF==0x7f) //9600波特率
{
Uart1_ser_n++;
if(Uart1_ser_n>=10)
{
Uart1_ser_n=0;
IAP_CONTR|=0xe0;

        }
    }
}

if(TI)    //发送中断,电脑发信息给单片机
{
    TI=0;
    Uart1_Flag=1;
    Uart1_Up_Data_Drive();

}

}

main.c
//***************************************************************************
//函数:Uart1_Allot() 串口发送数据程序
//功能:发送串口数据
//出口:void
//入口:void
//***************************************************************************
void Uart1_Allot()
{
static xdata u8 count=0;
count++;
if(count>250) //间隔时间太短会出现错误。
{
count=0;
Uart1_Up_Num_Buffer[0]=0x30+Ds18B20_Read_Buffer[0]/10; //加一个0x30数据才可以变成ASIC码。
Uart1_Up_Num_Buffer[1]=0x30+Ds18B20_Read_Buffer[0]/10%10;
Uart1_Up_Num_Buffer[2]=’.’;
Uart1_Up_Num_Buffer[3]=0x30+Ds18B20_Read_Buffer[1]/10%10;
Uart1_Up_Num_Buffer[5]=0x30+Ray_Read_Buffer[2]/16;
Uart1_Up_Num_Buffer[6]=0x30+Ray_Read_Buffer[2]%16;
Uart1_Up_Data_Drive();
}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_49327613

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值