STC8H系列—4.IO端口的控制教程

一、概述:

   STC8H的IO端口相较于传统的C51有了较明显的功能提升,就功能而言更加和STM32接近,就操作而IO而言实则比STM32简单好用,当然可能本人认识不足较之STM32无可比,但我确信国芯之未来。

STC8H系列IO口有四种模式,第一种模式为通用IO模式即传统C51IO口,最大的优点读写都方便,第二种模式为推挽模式,即高电平与低电平均可提供一定强电流(较通用IO模式),第三种模式为高阻模式,即输入和输出均为高阻,直接阻断,第四种模式为开漏模式,限低电平模式下可通过强电流(较通用IO模式),而高电平需外部提供。除了四种模式外还增加了上下拉电阻,可以适配不同情况的默认高低电平。此外还增加了对外提高输出速度与输出电流的功能。添加IO口的施密特触发器,默认状态下是开启的,主要作用是提高端口搞干扰能力。

二、知识链接:

  

通过配置PxM1和PxM0两个寄存器对应的位即可实现端口的四种模式的转换。配置PxUP和PxDN两个寄器对应的位可实现端口的上拉(4.7K)和下拉(10K)。PxSR和PxDR可实现端口速度与电流的控制。

三、实验平台搭建:

   1、MCU:STC-打狗棒系列核心实验板 V2.3

   2、实验板平台:德飞莱LY-51s

   3、硬件连接表:

     K1------>P10    测试上拉

      LED----->P20   指示灯

四、测试源代码:

#include <STC8H.h>

#include "intrins.h"

void Delay1ms(unsigned char x);//当主时钟频率为12M,1ms延时为基准

void init_IO();//初始化IO

void main()

{

      P_SW2 |= 0x80;  //扩展寄存器XFR访问使能

      init_IO();

//    P0M1=0x00;

//    P0M0=0x03;//设置P0.0与P0.1工作模式为推挽输出

//    P00=1;//高电平为接LED+

//    P01=0;//低高电平为接LED-

        

        P20=0;    

        P20=1;//通用IO口     

        P21=0;

      

        P0M1|=0x04;//设置P02为高阻模式

        P0M0|=0x00;

        P02=0;

       

//      P1M1|=0x00;//设置P10为通用模式

//      P1M0|=0x00;

        //P2PU|=0x01;

  

        P1M1|=0x01;//设置P10为开漏模式

        P1M0|=0x01;

        P1PU|=0x01;//开启4.1K上拉

     

     

   while(1)

    {

        //P10=1;//当P10为通用模式时置1开启弱上拉      

        if(P10==0)

        {

          P00=0;

           P01=1;

        }

        if(P10==1)

        {

           P00=1;

           P01=0;

        }

      }

}

void init_IO()

{

   RSTCFG=0x50;  //开启RST键进入ISP模式

   P0M1 = 0x00;   P0M0 = 0x00;   //设置P0口为准双向口

   P1M1 = 0x00;   P1M0 = 0x00;   //设置P1口为准双向口

   P5M1 = 0x00;   P5M0 = 0x00;   //设置P5口为准双向口

}

void Delay1ms(unsigned char x)    //@12.000MHz

{

   unsigned char i, j;

   i = 16;

   j = 147;

   while(x--)

   {

      do

      {

        while (--j);

      } while (--i);

   } 

}

猜你喜欢

转载自blog.csdn.net/qq_21082985/article/details/132024546
今日推荐