io口配置及模拟串口部分
注:RXD为_pc2口,TXD为_pc3口
#include "HT66F70A.h"
#include "sys.h"
void Sys_Init()
{
_wdtc=0xaf; //关闭看门狗
/* PF2 PF5上拉输出使能 做指示灯,暂不使用 */
_pfc2=0;
_pfpu2=1;
_pfc5=0;
_pfpu5=1;
/* RX:PC2 TX:PC3 */
_pcc2=1;
_pcc3=0;
}
void delay()
{
volatile int i=50000;
while(i--);
}
[code]#include "HT66F70A.h"
#include "UART_Analog.h"
#include "sys.h"
void UART_Init()
{
Sys_Init();
/* 定时器装初值 */
_tm0al=0x41;//设置波特率为9600
_tm0ah=0x03;
/* 工作寄存器的设定 */
_tm0c0=0x98;//计数器暂停运行控制,时钟选择,TM总开关TnPAU=1 暂停
_tm0c1=0xc1;//工作模式,清零条件位
_tm3al=0x41;//设置波特率为9600
_tm3ah=0x03;
/* 工作寄存器的设定 */
_tm3c0=0x98;//计数器暂停运行控制,时钟选择,TM总开关TnPAU=1 暂停
_tm3c1=0xc1;//工作模式,清零条件位
}
void Waitting0() //等待计时器0溢出
{
while(!_t0af);
_t0af=0;
}
void Waitting3() //等待计时器3溢出
{
while(!_t3af);
_t3af=0;
}
int judge(char input,int j)
{
if(input&j)
return 1;
else
return 0;
}
void Send(char input)
{
uchar i=8;
int j=0x01;
_t0pau=0; //开始计时
TXD=0;
Waitting0();
while(i--)
{
TXD=judge(input,j);
Waitting0();
j<<=1;
}
TXD=1;
Waitting0();
_t0pau=1;
_pf5=~_pf5; //指示灯
}
char Receive()
{
uchar i=8;
char receive=0;
_t3pau=0; //开始计时
if(RXD==0)
{
Waitting3();
while(i--)
{
if(RXD)
receive|=0x80;
Waitting3();
receive>>=1;
}
Waitting3();
if(RXD)
_t3pau=1; //停止计时
}
return receive;
}
[/code] |
楼主,HT66F70A的模拟串口在吗可以发给我吗?邮箱1076406367@qq.com,我也是卡了很久,向您寻求一下帮助
1014983343@qq.com可以分享一下程序吗?
2955831751@qq.com 可以给我程序吗