📄 chuankou.h
字号:
/*=========================================================================
串口通信驱动
==========================================================================*/
//#include <reg52.h>
#include <string.h>
#include <stdio.h>
#define uint unsigned int
#define uchar unsigned char
//--------------------------------------------------
//串口初始化
//--------------------------------------------------
void uart_rest()
{
//TMOD &= 0x0f;
//TMOD |= 0X20; //定时器T1x使用工作方式2
TMOD=0x20;
//TH1 = 250; //波特率4800
//TL1 = 250;
TH1=0xF3; //波特率9600
TL1=0xF3;
TR1 = 1; //开始计时 定时器1运行控制位
PCON = 0x80; //SMOD = 1 波特率加倍至9600
SCON = 0X50; //工作方式1,8位 可变,允许接收 SM0 SM1 SM2 REN TB8 RB8 TI RI
EA = 0; //关闭全部中断
}
//--------------------------------------------------
//发送数据,参数dat为发送的数据
//--------------------------------------------------
void put_date(unsigned dat)
{
SBUF = dat; //把数据放入缓冲区
while(!TI); //等待数据发送完成 完成后TI置1
TI = 0; //清发送标志位
}
//---------------------------------------------------
//发送字符串,参数str为待发送字符串
//---------------------------------------------------
void put_string(uchar *str)
{
while(*str != '\0') //发送到字符串尾结束
{
put_date(*str);
str++; //发送下一数据
}
}
//--------------------------------------------------
//发送四位数字,参数dat为发送的四位数字
//--------------------------------------------------
void put_number(uint dat)
{
uchar k[4];
k[0] = dat / 1000; dat = dat % 1000;
k[1] = dat / 100; dat = dat % 100;
k[2] = dat / 10; dat = dat % 10;
k[3] = dat / 1;
put_date (k[0]+48);
put_date (k[1]+48);
put_date (k[2]+48);
put_date (k[3]+48);
put_date (32);
}
//----------------------------------------------------
//接收数据,返回值dat是接收到的数据
//----------------------------------------------------
uint get_date()
{
uint dat;
while(!RI); //等待数据接收
dat = SBUF; //保存接收到的数据
RI = 0; //清接收标志位
return dat;
}
/*****************************************************
* 接收字符串,参数str指向保存接收字符串的缓冲区
*
* 注意:在本函数中,用串口发送字符串时,在发送结束时
* 应该加上一个结束字符,在本函数中用!做为结束符
* 而在调用函数时则不需要加上!
*****************************************************/
void get_string(uchar *str)
{
uint count = 0;
do
{
*str = 0; //清缓冲区
*str = get_date(); //保存接收到的数据
str++; //准备接收下一数据
count++;
if(count >8) //如果超出了范围(count)为0
{
*(str-1) = 0;
break;
}
}while(*(str-1) != '!'); //接收到数据尾以!则停止
*(str-1) = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -