以下是和泰单片机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;
}
}
}

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

被折叠的 条评论
为什么被折叠?



