本帖最后由 芯圣电子官方QQ 于 2023-7-24 15:04 编辑
学习下HC89S003P芯片GPIO端口输出测试
一、手册中GPIO相关的资料
1.1、GPIO端口配置寄存器
这次测试主要测试端口输出功能,所以只关注输出配置设置。
二、硬件连接
硬件上使用P00和P11外接两个LED指示灯来看GPIO输出状态
三、程序部分
3.1、main.c
- #define ALLOCATE_EXTERN
- #include "config.h"
- //系统初始化
- void SystemInit(void)
- {
- /************************************系统初始化****************************************/
- WDTCCR = 0x00; //关闭看门狗
- while((CLKCON&0x20)!=0x20); //等待内部高频RC起振
- CLKSWR = 0x51; //选择内部高频时钟为主时钟,内部高频RC2分频,Fosc=16MHz
- while((CLKSWR&0xC0)!=0x40); //等待内部高频切换完成
- CLKDIV = 0x01; //Fosc1分频得到Fcpu,Fcpu=16MHz
- }
- void main(void)
- {
- uint i;
- SystemInit(); //系统初始化
- Init_Port(); //端口初始化
- //CCO_Init(); //CCO输出
-
- while(1)
- {
- P0_0=0;
- P1_1=1;
- for(i=0;i<60000;i++);
- P0_0=1;
- P1_1=0;
- for(i=0;i<60000;i++);
- }
- }
3.2、gpio初始化程序
- #include "config.h"
- void Init_Port(void)
- {
- //P0xM[3:0]
- //1x00 -- 推挽输出
- //1x01 -- 开漏输出
- //1x10 -- 开漏带上拉输出
-
- P0M0 = P0M0&0xF0|0x08; //P00设置为推挽输出
- P0M0 = P0M0&0x0F|0x80; //P01设置为推挽输出
- P1M0 = P1M0&0x0F|0x80; //P11设置为推挽输出
- }
四、执行结果
|