和泰单片机HT67F489串口收发程序演示

这篇博客展示了如何使用和泰单片机HT67F489进行串口收发操作,具体包括配置串口、初始化程序和中断处理。测试中采用了深蓝串口调试工具v2.16.0,通过发送'55 AA'并展示返回结果,同时提供了相关的代码实现。

以下是和泰单片机HT67F489串口收发程序的测试结果,使用的测试工具 深蓝串口调试工具v2.16.0,个人比较喜欢这款串口调试软件,使用方便,故以这款串口调试工具作为演示软件。

以上是向和泰单片机HT67F489,通过串口发送“55 AA”所返回的结果。

 

 

代码文件

//////////////////////////////////////////////////////////////////////////////////    

//本程序只供学习使用,未经作者许可,不得用于其它任何用途

//修改日期:2021/6/16

//版本:1.0

//版权所有,盗版必究。

//All rights reserved

//********************************************************************************

 

GPIO.H内容:

#ifndef _GIPO_H_

#define _GIPO_H_

 

void GpioInit(void);

 

#endif // _GIPO_H_

 

GPIO.C内容:

#include "HT67F489.h"

 

void GpioInit(void)

{

       _pa=0x00;

       _pac=0x00;

       _papu=0x00;

      

       _pb=0x00;

       _pbc=0x00;

       _pbpu=0x00;

      

       _pc=0x00;

       _pcc=0x00;

       _pcpu=0x00;

      

       _pd=0x00;

       _pdc=0x00;

       _pdpu=0x00;

      

       _pe=0x00;

       _pec=0x00;

       _pepu=0x00;

      

       _pf=0x00;

       _pfc=0x00;

       _pfpu=0x00;

}

 

 

 

Sys.h内容:

 

#ifndef _SYS_H_

#define _SYS_H_

 

void SysInit(void);

 

#endif // _GIPO_H_

 

Sys.C内容:

 

#include "HT67F489.h"

#include "Sys.h"

 

void SysInit(void)

{

       _smod=0x01;               //选择 fH 作为系统时钟,8M

       _wdtc=0b01010111;      //使能软件复位,并设置周期为最大

       //_lcden=0;                  //关闭LCD引脚控制器

}

 

 

 

 

UART.H文件内容:

#ifndef _UART_H_

#define _UART_H_

 

extern volatile unsigned char recdata;       //在中断和主函数里共同使用的变量一定要加volatile修饰

 

void UartInit(void);

void UartSend(unsigned char Data);

#endif // _GIPO_H_

 

UART.C文件内容:

#include "HT67F489.h"

#include "Uart.h"

volatile unsigned char recdata=0;//在中断和主函数里共同使用的变量一定要加volatile修饰

 

void UartInit(void)

{

       _lcden=0;                     //关闭LCD引脚控制器

       _seg17c=1;                   //将此PF5设置为普通IO,而非LCD引脚;

       _seg16c=1;                   //将此PF4设置为普通IO,而非LCD引脚;         

       _ucr1=0x80;

       _ucr2=0b11000100;      //使能接收中断 0b10001000

       _brg=12;                      //波特率9600

 

       _pfc4=1;

       _pfpu4=1;

      

       _pfc5=0;

       _pfpu5=0;

      

       _uare=1;               //使能uart中断

}

 

void UartSend(unsigned char Data)

{

       _clrwdt();

      

       _txr_rxr=Data;

      

       while(!_tidle)

       {

              _clrwdt();

       }

       //GCC_CLRWDT();

       GCC_DELAY(100);

}

 

void __attribute((interrupt(0x20))) uart_isr(void)

{

       recdata=_txr_rxr;

             

       UartSend(recdata + 1);

}

 

主程序内容:

 

#include <HT67F489.H>

#include <HT67F489.H>

#include "HT67F489.h"

#include "Sys.h"

#include "Gpio.h"

#include "Uart.h"

 

#define u8 unsigned char

#define u16 unsigned int

 

u8 FA =0;

 

void delay_ms(u16 ms)

{

       while(ms--)

       {

              GCC_DELAY(2000);//编译器自带延时指定个周期,在主频8Mhz下,一个指令周期为0.5us  

              GCC_CLRWDT();

       }

}

 

void main()

{     

       u16 inde =0;

       u16 inde2 =0;

       SysInit();

       GpioInit();

       UartInit();

      

       _emi=1;                                                   //开总中断

             

       while(1)

       {

              GCC_CLRWDT();

             

if (R_uart_RX_data != 0)

              {

                     UartSend(R_uart_RX_data);

                     R_uart_RX_data = 0;

              }

       }

}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值