合泰杯——合泰单片机工程5之串口通信
合泰杯——合泰单片机工程5之串口通信
- 前言
- 一、usat例程分析?
- 二、编写程序
- 总结
前言
这一章更新的是关于合泰单片机串口通信的内容,用的是HT66F2390的芯片和板子,使用e-link下载程序来调试。程序是借助合泰官方usat的例程来更改调试。程序实现的效果预计为定时1秒向串口调试助手发送“广东工业大学MFT微流控团队合泰单片机HT66F2390串口通信实验调试”,串口调试助手发送字符相应,单片机并返回相应的字符给调试助手。再加上一个发送0x01点亮LED1.
提示:以下是本篇文章正文内容,下面案例可供参考
一、usat例程分析?
我们先来看一下程序,前面没什么好说,就是定义和声明数据计数、数据的长度等,重点看下面条件编译的那部分,也是我标注的那一部分。
这里使用了条件编译,功能如下
#if 常量表达式 程序段1
#else程序段2
#endif
它的功能是,如常量表达式的值为真(非0),则对程序段1 进行编译,否则对程序段2进行编译。因此可以使程序在不同条件下,完成不同的功能。
例程中的BRGH_0在uart.h中有进行了宏定义为1了。所以这里编译的是程序_u0cr2=0b11101100;
再来看U0CR2寄存器,它的主要功能是控制发送器、接收器以及各种 UART0中断源的使能或除能。这里就仔细解释了,感兴趣的可以在技术手册上看看他们选择的相应功能,以便让自己有一个更深的理解。
发送一个字节的函数,如果想发送一个数组可以定义一个字符串型数组,然后用for循环发送即可。
void UART_Send_Byte(unsigned char Data_byte)
{ _ur0e=0;while(_txif0==0);_txr_rxr0=Data_byte;_ur0e=1;
}
接收数据函数
// Receive serial data 接收一系列数据
// 这里是一个中断函数
void __attribute((interrupt(0x3c))) UART_Receive(void)
{GCC_NOP();if(_ur0f==1){if(_perr0==1||_oerr0==1||_nf0==1||_ferr0==1){asm("lmov a,___txr_rxr0"); //read RXR0 register to clear RXIF0 bit}else{Rcv_Time_Counter=0;while(_rxif0==0);if(Data_Counter<16){Rcv_Data[Data_Counter] = _txr_rxr0; Data_Counter++;}else{Data_Counter=0;Rcv_Data[Data_Counter] = _txr_rxr0; }}_ur0f=0;}
}
二、编写程序
主函数
#include "HT66F2390.h"
#include "delay.h"
#include "uart.h"
#include "LED.h"
#include "string.h" //调用strlen函数要引入字符串的头文件void main()
{int t=0,i=0; //用于计时char date[]="广东工业大学MFT团队合泰单片机串口实验";LED_Init(); //LED初始化UART_SET(); //串口函数初始化while(1){GCC_CLRWDT(); //清除看门狗delay_ms(10);t++;if(RECEIVE_Finish_Flag==1){if(Rcv_Data[0]==0x01){LED1 =!LED1;}for(i=0;i<RCV_Data_Length;i++)UART_Send_Byte(Rcv_Data[i]);RECEIVE_Finish_Flag=0; //清除接收标志位 }if(t==100){for(i=0;i<strlen(date);i++){UART_Send_Byte(date[i]);}LED2 =!LED2; //LED2取反用来显示工作是否正常t=0;}GCC_CLRWDT(); //清除看门狗}}
总结
串口通信的这一篇暂时到这里,因为还没有下载进去调试,所以可能会有出错的地方,之后会及时更改。下一篇是定时器部分。
工程文件等下载进去调试好之后再上传到这里。
合泰杯——合泰单片机工程5之串口通信相关推荐
- 合泰杯——合泰单片机工程7之PWM输出
合泰杯--合泰单片机工程7之PWM输出 前言 一.合泰系列的PWM实现方式? 二.PTM输出PWM波 二.具体实现过程 2.1配置PTM3C0和PTM3C1 2.3PWM的输出引脚功能选择 2.4呼吸 ...
- 合泰杯——合泰单片机工程6之定时器中断
合泰杯--合泰单片机工程6之定时器中断 前言 一.定时器功能配置? 1.定时器初始化函数time2_Init(void) 2.中断函数配置DEFINE_ISR(time2,0x38) 二.主函数mai ...
- 合泰杯——合泰单片机工程之点亮LED
合泰杯--合泰单片机工程1之点亮LED 前言 一.安装HT-3000IDE 二.新建一个工程 二.编写代码 总结 前言 因为团队中很多成员参加了下个学期合泰杯的比赛,所以想利用寒假的时间来整理一套例程 ...
- 和泰c语言函数库,合泰杯 | 合泰单片机入门 编程详解(二)
一.说在前面: 前面我们讲解了合泰单片机 HT66F23x0 的开发环境,也举例了 LED 流水灯的是工程编写.那么今天我们就来说说,如何亲自根据芯片手册清晰的编写第一个程序呢.如果你是第一次接触合泰 ...
- 合泰杯 | 合泰单片机入门 编程详解(二)
一.说在前面: 前面我们讲解了合泰单片机 HT66F23x0 的开发环境,也举例了 LED 流水灯的是工程编写.那么今天我们就来说说,如何亲自根据芯片手册清晰的编写第一个程序呢.如果你是第一次接触合泰 ...
- 单片机与PC机串口通信编程
单片机与PC机串口通信编程 实验目的 利用PROTUES仿真软件.串口调试助手.虚拟串口,搭建单片机与PC通信仿真平台,熟悉单片机串口的配置及与PC机的通信方法. 实验目的 1.PROTUES仿真软件 ...
- 【自学51单片机】11 -- UART串口通信
文章目录 1.串行通信的初步认识 2.USB转串口通信 3.UART串口通信的基本应用 3.1 通信的三种基本类型 3.2 UARM模块介绍 3.3编写UART串口步骤及程序 4.串口调试助手 5.通 ...
- 51单片机学习--定时器--中断--串口通信
51单片机学习–定时器–中断–串口通信 定时器–中断–串口通信 中断分类 定时器中断 外部中断 串口中断 基本概念 对于单片机来讲, 中断是指 CPU 在处理某一事件 A 时, 发生了另一事件 B, ...
- 合泰杯 | 合泰单片机入门 环境搭建安装(一)
最近参加福建省的合泰杯比赛,第一次接触合泰单片机,一开始学习的是51 和 32 ,虽然各类单片机的操作都万变不离其中,但是相对于51和32 的资料,合泰单片机的资料对于新手来说就不那么友好了.所以后面 ...
最新文章
- zynq学习04 zynq中PS通过MIO控制LED
- java命名规则_Java命名规则
- python基础小白题2
- form表单的提交地址一定要是完整的绝对地址
- tinymce 工具栏 不显示_VBA自动创建outBar式样的工具栏
- 《CLR Via C# 第3版》笔记之(二十一) - 异步编程模型(APM)
- linux中dir命令,详解Linux系统中ls和dir命令的组合使用
- UltraWebGrid两种显示样式
- jsp网上零食销售网站系统
- cad2014卡顿的解决方法_cad卡顿解决办法(cad卡顿怎么解决)
- 计算机专业答辩 ppt模板 免费,计算机毕业论文答辩(完整版).ppt
- crontab每隔1小时运行一次
- 数据安全风险分析及应对策略研究
- 史上最全的数字IC后端设计实现培训教程(整理版)
- 资深黄金专家李鑫:独创7套算点理论震惊市场
- 鸡啄米c语言入门,鸡啄米编程课堂-最适合程序员在线学习和参考的教程站
- ppt怎么压缩,ppt压缩的技巧分享
- RxJava2.0的生动形象的分析
- java/php/net/python守望先锋网站设计
- 手机评测 三星V-208
热门文章
- replace和replaceAll 的用法
- 从CSDN举办的SD2.0看“做啥网”的业务形态
- 2021广西灵山中学高考成绩查询,灵山中学成绩查询系统
- 01背包问题 图解+详细解析 (转载)
- mysql分组查询 groud by
- protocols 协议
- svn: E155017: 工作副本的参考文件损坏【解决方案】
- 《大数据技术与应用》课程记录
- 大数据主要有什么用,入行大数据,需要学哪个专业?
- vue+webpack5:If you want to include a polyfill, you need to