[通用8051核FLASH系列] 【HC89S003P套件试用】3、GPIO输入测试

[复制链接]
1211|1
 楼主| tlled 发表于 2019-3-17 11:22 | 显示全部楼层 |阅读模式
本帖最后由 芯圣电子官方QQ 于 2023-7-24 15:05 编辑

    测试下HC89S003P芯片GPIO出入测试,按键输入,LED指示灯输出,按键按下,指示灯亮。

    一、手册GPIO相关寄存器

    0317-5.png
    选择端口功能位输入,我选择带上拉输入(非施密特)

    二、程序部分

  1. //main.c
  2. #define ALLOCATE_EXTERN

  3. #include "config.h"

  4. //系统初始化
  5. void SystemInit(void)
  6. {
  7.         /************************************系统初始化****************************************/
  8.         WDTCCR = 0x00;                                                //关闭看门狗
  9.         while((CLKCON&0x20)!=0x20);                        //等待内部高频RC起振
  10.         CLKSWR = 0x51;                                                //选择内部高频时钟为主时钟,内部高频RC2分频,Fosc=16MHz
  11.         while((CLKSWR&0xC0)!=0x40);                        //等待内部高频切换完成
  12.         CLKDIV = 0x01;                                                //Fosc1分频得到Fcpu,Fcpu=16MHz
  13. }

  14. void main(void)
  15. {
  16.         uint i;
  17.         SystemInit();                //系统初始化
  18.         Init_Port();                //端口初始化
  19.         //CCO_Init();                //CCO输出
  20.         
  21.         while(1)
  22.         {
  23.                 if(P0_2==0)
  24.                 {
  25.                         P0_0=0;
  26.                         P1_1=0;
  27.                 }
  28.                 else
  29.                 {
  30.                         P0_0=1;
  31.                         P1_1=1;
  32.                 }

  33.         }
  34. }

  35. //port.c
  36. #include "config.h"
  37. void Init_Port(void)
  38. {
  39.         //P0xM[3:0]
  40.         //0000 -- 输入(非施密特)
  41.         //0001 -- 带下拉输入(非施密特)
  42.         //0010 -- 带上拉输入(非施密特)
  43.         //0011 -- 模拟输入
  44.         //0100 -- 输入(施密特)
  45.         //0101 -- 带下拉输入(施密特)
  46.         //0110 -- 带上拉输入(施密特)
  47.   //0111 -- 保留(模拟输入)
  48.         
  49.         //1x00 -- 推挽输出
  50.         //1x01 -- 开漏输出
  51.         //1x10 -- 开漏带上拉输出
  52.         
  53.         
  54.         P0M0 = P0M0&0xF0|0x08;                                        //P00设置为推挽输出

  55.         P0M1 = P0M1&0xF0|0x02;                                        //P02设置为带上拉输入(非施密特)
  56.         P1M0 = P1M0&0x0F|0x80;                                        //P11设置为推挽输出        
  57. }

     三、程序执行结果

    0317-4.gif








dqqqqqq 发表于 2019-3-18 09:38 | 显示全部楼层
沙发,赞一个
您需要登录后才可以回帖 登录 | 注册

本版积分规则

132

主题

701

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部