#include "uart_handle.h"
bit flagTxd = 0; //单字节发送完成标志,用来替代TXD中断标志位
bit flagFrame = 0; //帧接收完成标志,即接收到一帧新数据
unsigned char cntRxd = 0; //接收字节计数
unsigned char bufRxd[16]; //接收字节缓冲区
/* 串口数据写入,即串口发送函数,buf-待发送数据的指针,len-指定的发送长度 */
void UartWrite(unsigned char *buf, unsigned char len)
{
while (len--) //循环发送所有字节
{
flagTxd = 0; //清零发送标志
if(XiaoYanMode!=0)
{
sendbuf= *buf++;
ACC =sendbuf; //Calculate the even parity bit P (PSW.0)计算偶数奇偶校验位P(PSW.0)
if (P) //Set the parity bit according to P根据P设置奇偶校验位
{
if (XiaoYanMode == 1)
{
TB8=0;
}
else if (XiaoYanMode == 2)
{
TB8=1;
}
}
else
{
if (XiaoYanMode == 1)
{
TB8=1;
}
else if (XiaoYanMode == 2)
{
TB8=0;
}
}
SBUF = sendbuf; //发送一个字节数据
}else
{
SBUF= *buf++;
}
while (!flagTxd); //等待该字节发送完成
}
}
/* 串口数据读取函数,buf-接收指针,len-指定的读取长度,返回值-实际读到的长度 */
unsigned char UartRead(unsigned char *buf, unsigned char len)
{
unsigned char i;
if (len > cntRxd) //指定读取长度大于实际接收到的数据长度时,
{ //读取长度设置为实际接收到的数据长度
len = cntRxd;
}
for (i=0; i<len; i++) //拷贝接收到的数据到接收指针上
{
*buf++ = bufRxd[i];
}
cntRxd = 0; //接收计数器清零
return len; //返回实际读取长度
}
/* 串口接收监控,由空闲时间判定帧结束,需在定时中断中调用,ms-定时间隔 */
void UartRxMonitor(unsigned char ms)
{
static unsigned char cntbkp = 0;
static unsigned char idletmr = 0;
if (cntRxd > 0) //接收计数器大于零时,监控总线空闲时间
{
if (cntbkp != cntRxd) //接收计数器改变,即刚接收到数据时,清零空闲计时
{
cntbkp = cntRxd;
idletmr = 0;
}
else //接收计数器未改变,即总线空闲时,累积空闲时间
{
if (idletmr < 30) //空闲计时小于30ms时,持续累加
{
idletmr += ms;
if (idletmr >= 30) //空闲时间达到30ms时,即判定为一帧接收完毕
{
flagFrame = 1; //设置帧接收完成标志
}
}
}
}
else
{
cntbkp = 0;
}
}
/* 串口动作函数,根据接收到的命令帧执行响应的动作
buf-接收到的命令帧指针,len-命令帧长度 */
void UartAction(unsigned char *buf, unsigned char len)
{
unsigned char add1,add2,add3;
unsigned int crc;
unsigned char crch, crcl;
unsigned int Number=0;//显示数字
add1=(Add/100%10)+0x30;
add2=(Add/10%10)+0x30;
add3=(Add%10)+0x30;
if((buf[0]=='$')&&(buf[4]==','))//ASCII码处理 $001, 判断$和,
{
if((buf[1]==add1)&&(buf[2]==add2)&&(buf[3]==add3))//判断Add
{
if(len==8)//$001,dp0 小数点0-4 8
{//////////////////////////////////////////////////////////////////////////////////////////////////////
if((buf[5]=='d')&&(buf[6]=='p'))
{
if((buf[7]>=0x30)&&(buf[7]<=0x34))
{
dp=buf[7]-0x30;
saveFlag=1;
UartWrite(buf, len);//把接收返回
}
}
}else if(len==9)//$001,1234 显示正数1234 程序调用$001,n/1000%10+'0',n/100%10+'0',n/100%10+'0',n%10+'0',
{//////////////////////////////////////////////////////////////////////////////////////////////////////
if((buf[5]>=0x30)&&(buf[5]<=0x39)&&(buf[8]!='@'))
{
if(WorkMode!=3)////不是模式3从机模式直接返回
{
return;
}
if((buf[6]>=0x30)&&(buf[6]<=0x39))
{
if((buf[7]>=0x30)&&(buf[7]<=0x39))
{
if((buf[8]>=0x30)&&(buf[8]<=0x39))
{
Number=(buf[5]-0x30)*1000;
Number=Number+(buf[6]-0x30)*100;
Number=Number+(buf[7]-0x30)*10;
Number=Number+(buf[8]-0x30);
UartWrite(buf, len);//把接收返回
ShowNumber(Number);
}
}
}
}else if((buf[5]=='m')&&(buf[6]=='e')&&(buf[7]=='n')&&(buf[8]=='u'))//$001,menu 返回所有菜单当前值
{
UartWrite(MenuNowValue,52);//返回所有菜单当前值
}else if(buf[5]=='-')//$001,-123 显示负数-123
{
if(WorkMode!=3)////不是模式3从机模式直接返回
{
return;
}
if((buf[6]>=0x30)&&(buf[6]<=0x39))
{
if((buf[7]>=0x30)&&(buf[7]<=0x39))
{
if((buf[8]>=0x30)&&(buf[8]<=0x39))
{
Number=Number+(buf[6]-0x30)*100;
Number=Number+(buf[7]-0x30)*10;
Number=Number+(buf[8]-0x30);
UartWrite(buf, len);//把接收返回
ShowNumber(Number);
duanMa[3]=0xBF;//显示-
}
}
}
}else if(buf[8]=='@')//$001,002@ 修改地址1-254
{
if((buf[5]>=0x30)&&(buf[5]<=0x39))
{
if((buf[6]>=0x30)&&(buf[6]<=0x39))
{
if((buf[7]>=0x30)&&(buf[7]<=0x39))
{
Add=(buf[5]-0x30)*100;
Add=Add+(buf[6]-0x30)*10;
Add=Add+(buf[7]-0x30);
saveFlag=1;//存入EEPROM
UartWrite(buf, len);//把接收返回
}
}
}
}
}else if(len==10)//$001,mode0 修改工作模式 0从机 1主机 2温度表 3电压表
{//////////////////////////////////////////////////////////////////////////////////////////////////////
if((buf[5]=='m')&&(buf[6]=='o')&&(buf[7]=='d')&&(buf[8]=='e'))//mode
{
if((buf[9]>=0x30)&&(buf[9]<=0x33))//范围0-3
{
WorkMode=(buf[9]-0x30);//把字符变成10进制0-3
ShowNumber(0);//显示0
saveFlag=1;
UartWrite(buf, len);//把接收返回
}
}else if((buf[5]=='b')&&(buf[6]=='a')&&(buf[7]=='u')&&(buf[8]=='d'))//$001,baud0 波特率0-7 10
{
if((buf[9]>=0x30)&&(buf[9]<=0x32))//范围0-2
{
BaudType=(buf[9]-0x30);//把字符变成10进制0-3
saveFlag=1;
UartWrite(buf, len);//把接收返回
}
}else if((buf[5]=='o')&&(buf[6]=='u')&&(buf[7]=='t'))//输出控制$001,out51
{
if((buf[8]>=0x35)&&(buf[8]<=0x38))
{
if(buf[8]==0x35)
{
if(buf[9]==0x30)//置0
{
OutControl(5,0);//输出控制
}else if(buf[9]==0x31)//置1
{
OutControl(5,1);//输出控制
}
}else if(buf[8]==0x36)
{
if(buf[9]==0x30)//置0
{
OutControl(6,0);//输出控制
}else if(buf[9]==0x31)//置1
{
OutControl(6,1);//输出控制
}
}else if(buf[8]==0x37)
{
if(buf[9]==0x30)//置0
{
OutControl(7,0);//输出控制
}else if(buf[9]==0x31)//置1
{
OutControl(7,1);//输出控制
}
}else if(buf[8]==0x38)
{
if(buf[9]==0x30)//置0
{
OutControl(8,0);//输出控制
}else if(buf[9]==0x31)//置1
{
OutControl(8,1);//输出控制
}
}
UartWrite(buf, len);//把接收返回
}
}else if(buf[5]=='r')//$001,r2000 从机寄存器地址 10
{
if((buf[6]>=0x30)&&(buf[6]<=0x39))
{
if((buf[7]>=0x30)&&(buf[7]<=0x39))
{
if((buf[8]>=0x30)&&(buf[8]<=0x39))
{
if((buf[9]>=0x30)&&(buf[9]<=0x39))
{
crch=(((buf[6]-0x30)<<4)+(buf[7]-0x30));
crcl=(((buf[8]-0x30)<<4)+(buf[9]-0x30));
registeradd=crch;
registeradd<<=
没有合适的资源?快使用搜索试试~ 我知道了~
new_mode4_3xiaoyan.zip
![preview](https://csdnimg.cn/release/downloadcmsfe/public/img/white-bg.ca8570fa.png)
共74个文件
obj:26个
c:13个
lst:13个
![preview-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/scale.ab9e0183.png)
需积分: 5 0 下载量 159 浏览量
2022-11-04
12:21:11
上传
评论
收藏 243KB ZIP 举报
温馨提示
new_mode4_3xiaoyan.zip
资源推荐
资源详情
资源评论
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
收起资源包目录
![package](https://csdnimg.cn/release/downloadcmsfe/public/img/package.f3fc750b.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
共 74 条
- 1
资源评论
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/177286c51df0414c9e533fb868a4162d_weixin_45211835.jpg!1)
小白q_5793545
- 粉丝: 36
- 资源: 90
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)