合泰杯——合泰单片机工程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之串口通信相关推荐

  1. 合泰杯——合泰单片机工程7之PWM输出

    合泰杯--合泰单片机工程7之PWM输出 前言 一.合泰系列的PWM实现方式? 二.PTM输出PWM波 二.具体实现过程 2.1配置PTM3C0和PTM3C1 2.3PWM的输出引脚功能选择 2.4呼吸 ...

  2. 合泰杯——合泰单片机工程6之定时器中断

    合泰杯--合泰单片机工程6之定时器中断 前言 一.定时器功能配置? 1.定时器初始化函数time2_Init(void) 2.中断函数配置DEFINE_ISR(time2,0x38) 二.主函数mai ...

  3. 合泰杯——合泰单片机工程之点亮LED

    合泰杯--合泰单片机工程1之点亮LED 前言 一.安装HT-3000IDE 二.新建一个工程 二.编写代码 总结 前言 因为团队中很多成员参加了下个学期合泰杯的比赛,所以想利用寒假的时间来整理一套例程 ...

  4. 和泰c语言函数库,合泰杯 | 合泰单片机入门 编程详解(二)

    一.说在前面: 前面我们讲解了合泰单片机 HT66F23x0 的开发环境,也举例了 LED 流水灯的是工程编写.那么今天我们就来说说,如何亲自根据芯片手册清晰的编写第一个程序呢.如果你是第一次接触合泰 ...

  5. 合泰杯 | 合泰单片机入门 编程详解(二)

    一.说在前面: 前面我们讲解了合泰单片机 HT66F23x0 的开发环境,也举例了 LED 流水灯的是工程编写.那么今天我们就来说说,如何亲自根据芯片手册清晰的编写第一个程序呢.如果你是第一次接触合泰 ...

  6. 单片机与PC机串口通信编程

    单片机与PC机串口通信编程 实验目的 利用PROTUES仿真软件.串口调试助手.虚拟串口,搭建单片机与PC通信仿真平台,熟悉单片机串口的配置及与PC机的通信方法. 实验目的 1.PROTUES仿真软件 ...

  7. 【自学51单片机】11 -- UART串口通信

    文章目录 1.串行通信的初步认识 2.USB转串口通信 3.UART串口通信的基本应用 3.1 通信的三种基本类型 3.2 UARM模块介绍 3.3编写UART串口步骤及程序 4.串口调试助手 5.通 ...

  8. 51单片机学习--定时器--中断--串口通信

    51单片机学习–定时器–中断–串口通信 定时器–中断–串口通信 中断分类 定时器中断 外部中断 串口中断 基本概念 对于单片机来讲, 中断是指 CPU 在处理某一事件 A 时, 发生了另一事件 B, ...

  9. 合泰杯 | 合泰单片机入门 环境搭建安装(一)

    最近参加福建省的合泰杯比赛,第一次接触合泰单片机,一开始学习的是51 和 32 ,虽然各类单片机的操作都万变不离其中,但是相对于51和32 的资料,合泰单片机的资料对于新手来说就不那么友好了.所以后面 ...

最新文章

  1. zynq学习04 zynq中PS通过MIO控制LED
  2. java命名规则_Java命名规则
  3. python基础小白题2
  4. form表单的提交地址一定要是完整的绝对地址
  5. tinymce 工具栏 不显示_VBA自动创建outBar式样的工具栏
  6. 《CLR Via C# 第3版》笔记之(二十一) - 异步编程模型(APM)
  7. linux中dir命令,详解Linux系统中ls和dir命令的组合使用
  8. UltraWebGrid两种显示样式
  9. jsp网上零食销售网站系统
  10. cad2014卡顿的解决方法_cad卡顿解决办法(cad卡顿怎么解决)
  11. 计算机专业答辩 ppt模板 免费,计算机毕业论文答辩(完整版).ppt
  12. crontab每隔1小时运行一次
  13. 数据安全风险分析及应对策略研究
  14. 史上最全的数字IC后端设计实现培训教程(整理版)
  15. 资深黄金专家李鑫:独创7套算点理论震惊市场
  16. 鸡啄米c语言入门,鸡啄米编程课堂-最适合程序员在线学习和参考的教程站
  17. ppt怎么压缩,ppt压缩的技巧分享
  18. RxJava2.0的生动形象的分析
  19. java/php/net/python守望先锋网站设计
  20. 手机评测 三星V-208

热门文章

  1. replace和replaceAll 的用法
  2. 从CSDN举办的SD2.0看“做啥网”的业务形态
  3. 2021广西灵山中学高考成绩查询,灵山中学成绩查询系统
  4. 01背包问题 图解+详细解析 (转载)
  5. mysql分组查询 groud by
  6. protocols 协议
  7. svn: E155017: 工作副本的参考文件损坏【解决方案】
  8. 《大数据技术与应用》课程记录
  9. 大数据主要有什么用,入行大数据,需要学哪个专业?
  10. vue+webpack5:If you want to include a polyfill, you need to