北京建网站公司飞沐,dede织梦仿站网站建设,seo网站描述,电商网站建设参考文献文章目录 I/O口相关寄存器端口数据寄存器端口模式配置寄存器#xff08;PxM0#xff0c;PxM1#xff09;端口上拉电阻控制寄存器(PxPU)关于I/O的注意事项 配置I/O口I/O设置demoI/O端口模式LED控制#xff08;I/O输出#xff09;按键检测#xff08;I/O输入#xff09; S… 文章目录 I/O口相关寄存器端口数据寄存器端口模式配置寄存器PxM0PxM1端口上拉电阻控制寄存器(PxPU)关于I/O的注意事项 配置I/O口I/O设置demoI/O端口模式LED控制I/O输出按键检测I/O输入 STC8H 系列单片机所有的 I/0 口均有 4 种工作模式可使用软件对 I/O 口的工作模式进行配置 准双向/弱上拉(标准 8051 输出口模式)推挽输出/强上拉高阻输入(电流既不能流入也不能流出)开漏输出。
I/O口相关寄存器
端口数据寄存器 读写端口状态 写 0: 输出低电平到端口缓冲区 写 1: 输出高电平到端口缓冲区 读:直接读端口管脚上的电平
端口模式配置寄存器PxM0PxM1
I/O口工作模式配置相关寄存器为PxM0和PxM1即需要配置两个寄存器才能设置某个I/O的工作模式 I/O口的4种工作模式配置如下
端口上拉电阻控制寄存器(PxPU) 端口内部4.1K上拉电阻控制位(注: P3.0和P3.1口上的上拉电阻可能会略小一些) 0:禁止端口内部的 4.1K 上拉电阻 1:使能端口内部的 4.1K 上拉电阻
I/O寄存器除上述常用的寄存器外还有端口施密特触发控制寄存器、端口电平转换速度控制寄存器、端口驱动电流控制寄存器和端口数字信号输入使能控制寄存器等可简单了解 关于I/O的注意事项 配置I/O口
每个I/O 的配置都需要使用两个寄存器进行设置 以 P0口为例配置P0口需要使用 P0M0和 P0M1 两个寄存器进行配置如下图所示 注意 虽然每 I/O 口在弱上拉(准双向口)/强推挽输出/开漏模式时都能承受 20mA 的灌电流(还是要加限流电阻如1K、5600、4720等)在强推挽输出时能输出 20mA 的拉电流(也要加限流电阻)但整个芯片的工作电流推荐不要超过70mA即从 Vcc流入的电流建议不要超过70mA从Gnd流出电流建议不要超过70mA整体流入/流出电流建议都不要超过 70mA
I/O设置demo
I/O端口模式
#include stc8h.h
#include intrins. h void main()
{P_SW2 | 0x80; //使能访问XFRP0M0 0x00; //设置P0.0~P0.7 为双向口模式P0M1 0x00P1M0 0xff; //设置P1.0~P1.7 为推输出模式P1M1 0x00P2M0 0x00; //设置P2.0~P2.7为高阻输入模式P2M1 0xff;P3M0 0xff; //设置P3.0~P37 为开模式P3M1 0xff;while(1);
}LED控制I/O输出
#includestc8hxx.h
#includeintrins.hsbit LED1 P4^6;
sbit LED2 P4^7;void Delay_ms(u16 times) //24.000MHz
{unsigned char i, j;while(times--){_nop_();i 32;j 40;do{while (--j);} while (--i);}
}void main()
{P4M0 | 0xC0;P4M1 0x00;LED1 1;LED2 1;while(1){LED1 0;LED2 1;Delay_ms(200);LED1 1;LED2 0;Delay_ms(200);}
}按键检测I/O输入
#includestc8hxx.h
#includeintrins.hsbit LED1 P4^6;
sbit LED2 P4^7;sbit KEY1 P3^5;void Delay_ms(u16 times) //24.000MHz
{unsigned char i, j;while(times--){_nop_();i 32;j 40;do{while (--j);} while (--i);}
}void LED_Init()
{P4M0 | 0xC0;P4M1 0x00;LED1 1;LED2 1;
}void KEY_init()
{P3M0 ~(0x015);P3M1 ~(0x015);P3PU 0x015;
}void main()
{LED_Init();KEY_init();while(1){if(KEY1 0){Delay_ms(20);if(KEY1 0){LED1 ~LED1;LED2 ~LED2;}while(!KEY1);}}
}