写作背景:合泰公司开发了一款IDE3000编译器,想找一些学生测试编译器是否有BUG,不过测试编译器需要有芯片,于是经过长达两个半月的测试,完成测试编译的任务同时,我也了解了合泰HT66F70A芯片的使用方法。
HT66F70A一共有A~H组IO口,每一组有8个IO端口,各对应1字节的数据寄存器。即PA~PH。除了IO的数据寄存器,还有输入输出控制寄存器PAC~PHC,上拉电阻控制寄存器PAPU~PHPU。A组除了以上三个寄存器以外比其他组多了一个寄存器PAWU,即唤醒功能寄存器。
下面对各个寄存器分别简单介绍
数据寄存器Pn(n为A~H)。对IO口输出高电平还是低电平,或保存IO口输入的是高电平还是低电平。
控制寄存器PnC(n为A~H)。选择IO引脚是输入状态还是输出状态,低电平为输出,高电平为输入。
上拉电阻寄存器PnPU(n为A~H)。低电平为对应的IO口上拉电阻除能,高电平为上拉电阻使能。
唤醒功能寄存器PAWU(A组IO口特有)。低电平除能,高电平使能。在使能状态下,当单片机进入休眠或空闲模式时, PA 口的其中一个引脚从高电平转为低电平即可唤醒单片机。
除了以上有关IO口的寄存器以外,还有引脚共用寄存器PxSn或IFSn等(x为A~H,n为数字)。
因为HT6670A芯片的引脚具有复用功能,每一个引脚可以选择是否作为IO口引脚,或其他功能诸如AD转换器的输入引脚ANn、IIC的控制引脚、PWN输出引脚等。
总而言之,如果想要使用此芯片IO口的功能,需要初始化有关IO口的三个寄存器以外,还要初始化引脚共用寄存器。
下面是点亮一个LED灯的程序。
#include "HT66F70A.h"
#define PINC _pgc3
#define LED _pg3
//引脚配置
#define OUT 0
#define IN 1
//LED开关
#define ON 0
#define OFF 1
void main()
{
_wdtc = 0xab; //关闭看门狗
_pgs1 = 0; //设置引脚复用功能为IO口功能
PINC = OUT; //选择IO口为输出状态
LED = ON; //点亮一个LED灯
while(1);
}
参考资料:HT66F70A芯片手册
2017年4月5日补充:
由于博主很久不碰合泰芯片,很多细节已经忘记,所以如果调试不成功博主也已经帮不上忙了,本文评论博主不再回复。
另外根据以往评论,调试合泰芯片请留意以下细节,说不准就debug了。
1、看门狗是否除能;
2、编译器优化是否关闭;