当前位置: 首页 > news >正文

网站建设费摊销年限国内高清图片素材网站推荐

网站建设费摊销年限,国内高清图片素材网站推荐,大连的网页设计公司,昆山公司网站建设电话目录 3.串口通信实战实操简易的工作原理Tips:sprintf函数简介 总结课后练习 3.串口通信实战 做一个简易串口控制器。发送对应指令#xff0c;让板子做相应的事情#xff0c;或者传输数据#xff08;文本模式下发送#xff0c;不要选择HEX#xff09;。 1.串口发送字符Ax\… 目录 3.串口通信实战实操简易的工作原理Tips:sprintf函数简介 总结课后练习 3.串口通信实战 做一个简易串口控制器。发送对应指令让板子做相应的事情或者传输数据文本模式下发送不要选择HEX。 1.串口发送字符Ax\r\nx表示0-7板子点亮对应LED.\r\n也可以在串口软件中设置自动发送。 2.串口发送Bxxxx\r\nxxxx表示一个四位数四位数码管显示这个4位数 2.串口发送Z\r\n板子给电脑发送“Hello STC”; 3.串口发送字符Cx\r\nx表示0-1板子打开/关闭蜂鸣 4.串口发送字符D\r\n板子通过串口发送当前温度给电脑。 实操 先把需求复制到demo.c顶部。 为实现功能1首先要对串口接收进行处理。查看void UART2_int (void) interrupt UART2_VECTOR void UART2_int (void) interrupt 8 {if(S2RI) //如果接收到数据{S2RI 0; //Clear Rx flagRX2_Buffer[RX2_Cnt] S2BUF;if(RX2_Cnt UART2_BUF_LENGTH) RX2_Cnt 0;}if(S2TI){S2TI 0; //Clear Tx flagB_TX2_Busy 0;} }简易的工作原理 先清空标志位再把数据存入RX2_Buffer[RX2_Cnt]。S2BUF写入的数据不断的存到RX2_Buffer中这里用到了循环写入的方式刚刚上电的时候RX2_Cnt是0 写完后变成了1变成了2…总长度是#define UART2_BUF_LENGTH 128数组RX2_Buffer的最大长度是128也就是说写入值超过127以后下一次会重新开始写。 覆盖掉0的参数再往下写一个一个的覆盖下去直到覆盖到最后一个然后又从头开始。 再去看一下串口发送在demo.c中if((TX2_Cnt ! RX2_Cnt) (!B_TX2_Busy)) //收到数据, 发送空闲 如果TX2_Cnt ! RX2_Cnt假设接收的数值是4则已经写入了4个数据如果串口发送和串口接收的数值不相等并且不为忙碌的时候就可以开始发送数据。 把数据写入 S2BUF然后他也是跟着跑每次写入一个数据RX2CNT是每接收到一个数据RX2CNT数值加1加1以后TX就不等于RX2CNT了这种情况下先往上写一个数据TX2CNT也就可以开始1 比如说写入的是4个数据假设TX2CNT刚上电初始是0即满足(TX2_Cnt ! RX2_Cnt) (!B_TX2_Busy)的条件则先将数据写入0先传送出去写完以后这里还是不等于他把写入1也写出去如果说还是不等于 再接着写出去这里其实是一个循环的队列串口在空闲的时候就可以跟着他走这里就是一个循环队列的演示。 本次只要接收到一个指令就可以。从指令集分析每次接收到\r\n以后就可以重新开始计数。 在中断函数void UART2_int (void) interrupt 8中开始改写如果先接收到了数据先把接收到的数据存进去初始化的时候RX2_Cnt 0;刚上电的时候这个数值为0。 添加变量bit Rec_Flag 0; //接收完成标志位。还需要在.h文件中定义一下extern bit Rec_Flag; 增加extern关键字主函数中也可以调用。 假设接收到4个字符 先接收到A以后没有检测到\r\n,先接收到O以后他也是没有检测到\r\n直到检测到\n再去判断前一个数值是不是\r如果有说明接收完成。 处理代码为 if( RX2_Buffer[RX2_Cnt] \n ){if( RX2_Buffer[RX2_Cnt-1] \r )Rec_Flag 1; //接收完成标志位RX2_Cnt 0; //接收完成清0}elseRX2_Cnt;接收完成后在主函数里做处理。这里不需要把参数打印出来了将接收数据处理代码注释掉或者删除。 // if((TX2_Cnt ! RX2_Cnt) (!B_TX2_Busy)) //收到数据, 发送空闲 // { // S2BUF RX2_Buffer[TX2_Cnt]; // B_TX2_Busy 1; // if(TX2_Cnt UART2_BUF_LENGTH) TX2_Cnt 0; // }通过检测Rec_Flag位它已经检测到了最末尾的\r\n符号。可以用switch语句根据RX2_Buffer[0]分情况处理比较的时候只能是单个变量或者字符 if(Rec_Flag 1) //它已经检测到了最末尾的\r\n符号{switch (RX2_Buffer[0]){case A:if()break;case B:break;case C:break;case D:break;case Z:break;default:break;}Rec_Flag 0; //执行完后Rec_Flag 清0防止它反复执行}下一步判断第2个字符根据ASCII码表第二个数需要大于等于48小于等于55则这个数据有效 if((RX2_Buffer[1] 48) (RX2_Buffer[1] 55))点亮灯执行LED (1(RX2_Buffer[1] - 48)) RX2_Buffer[1] - 48则取至范围变为0-7如果0左移1位就是点亮LED0,左移7位就是点亮LED1. case A:if((RX2_Buffer[1] 48) (RX2_Buffer[1] 55)){LED (1(RX2_Buffer[1] - 48));}break;编译完准备去下载。下载完成打开串口助手发送A0发现状态反了很好处理取反。一定要用全部取反~LED ~(1(RX2_Buffer[1] - 48));不是感叹号位取反。 再来看第二个: case B:SEG0 RX2_Buffer[1] - 48;SEG1 RX2_Buffer[2] - 48;SEG2 RX2_Buffer[3] - 48;SEG3 RX2_Buffer[4] - 48;break;编译下载选择正确的串口号发送B1234,数码管上显示了1234。 接下来第三个选项C如果RX2_Buffer[1]0直接控制蜂鸣器的引脚。 case C:if(RX2_Buffer[1] 48)BEEP 0;elseBEEP 1;break;选项D,这里要新学一个函数sprintf。 Tips:sprintf函数简介 详细可参考sprintf函数用法详解 sprintf函数的原型如下 int sprintf(char *str, const char *format, …); 其中str参数是指向存储输出结果的缓存区的指针必须具有足够的容量来存储输出结果format参数是格式控制字符串定义了输出的格式等其余的…参数是输出结果。 sprintf函数的返回值为输出到缓存区中的字符数量这个值不包括字符串结尾的’\0’。 本工程中的应用首先需要引用头文件#include “stdio.h”。 sprintf函数与printf相比里面的内容和后面的内容都是不变的只是前面加了一个把生成的字符保存到了前面比如定义数组char str[30];将最终要显示的字符串保存在了之前定义的数组里 int temp 26; //这里仅做模拟每执行一次加1方便区分。下载执行输入D点击发送显示温度0温度1… 再实现命令Z,代码为PrintString2(“Hello STC\r\n”); 完整核心代码为 if(Rec_Flag 1) //它已经检测到了最末尾的\r\n符号{switch (RX2_Buffer[0]){case A:if((RX2_Buffer[1] 48) (RX2_Buffer[1] 55)){LED ~(1(RX2_Buffer[1] - 48));}break;case B:SEG0 RX2_Buffer[1] - 48;SEG1 RX2_Buffer[2] - 48;SEG2 RX2_Buffer[3] - 48;SEG3 RX2_Buffer[4] - 48;break;case C:if(RX2_Buffer[1] 48)BEEP 0;elseBEEP 1;break;case D:sprintf(str,温度%d\r\n,temp);PrintString2(str);temp;break;case Z:PrintString2(Hello STC\r\n);break;default:break;}Rec_Flag 0; //执行完后Rec_Flag 清0防止它反复执行}实际场景下可以做相应的UI界面规划设计发送相应指令执行对应程序。下位机做好指令的接收和处理。如果担心数据乱码可以加入数据校验判断末尾的值是否和要求的相等相等说明命令有效。 总结 1.了解串口的接线TX和RX相连和扩展232,485等硬件 2.学会分析和移植驱动代码。 3.拓展一下sprintf的用法变量转字符串操作很有用 4.课外可以自己买几个串口的模块体验一下~ 课后练习 用试验箱实现简易串口控制器主机。可以用本实验性的第二组串口/另外的核心板 1.按下按钮0-7发送字符Ax\r\nx表示0-7 2.按下按钮8发送B0000\r\n 3.按下按钮9发送Z\r\n 4.按下按钮A串口发送字符C0\r\n 4.按下按钮B串口发送字符C1\r\n 4.按下按钮C发送字符Dx\r\n
http://www.laogonggong.com/news/122392.html

相关文章:

  • 长春 做网站多少钱绍兴专业做网站
  • 银川网站制作公司wordpress三栏
  • 君隆做网站怎么样什么平台可以做网站
  • 建网站怎么赚流量百度推广一般要多少钱
  • html5开发的网站做网站兼容ie
  • 国外设计网站图片秦州区建设局网站
  • 外贸英文网站建设价格seo深度优化公司
  • 昆山建设工程信息网站网店代理免费一件代发
  • 双语网站用什么程序做seo外链推广员
  • 怎么做多语言的网站新网站如何做搜索引擎收录
  • 电子商务网站费用预算昆明百度seo
  • 大连新图闻网站设计积极参与网站信息建设工作
  • 安卓开发简单网站开发代码下载做网站运营有前途吗
  • 网站建设是不是可以免费建站电商网站设计公司力推亿企邦
  • 网站搬家 数据库微信小程序在哪里制作
  • 中英文自助网站建设asp网站用什么数据库
  • 个人网站开发技术要求优化服务平台
  • 上海高端网站公司2008建设网站
  • 个人博客seo淘宝店有给网站做优化am
  • 如何用html制作网站河北邢台有什么好玩的地方
  • 宝安区做外贸网站的公司夜间直播软件下载
  • 深圳住房和建设局网站 宝安怎样在手机上网站建设
  • 有什么好的网站设计思想的博客wordpress标签id在哪里修改
  • 如何做好网站建设工作易语言怎么做网站
  • 用jsp做的网站源代码下载大连网站前端制作公司
  • app网站平台建设方案网站开发类型
  • 怎么制作微信网站深圳网站建设哪家最好
  • 网站后台关键词珠海网站哪家好
  • 网站优化排名易下拉稳定网站建设的素材处理方式
  • 在线精品课程网站开发html wordpress