STC15单片机的用户手册中,对其I/O做了如下描述:
可以看出要改变I/O的工作方式,必须改变配置寄存器设置。上电复位时配置寄存器PxM1、PxM0值是多少呢?即I/O口的缺省工作模式是那种呢?请看下面:
奇怪,P6M1、P6M0的缺省值为空,是不在配置前P6的工作模式待定?不是的。请看说明是的说明:
下面看一下不同工作模式下I/O结构的不同之处:
可以看出4种模式下数据输入结构是相同的。不同的部分在输出部分。
说到数据输入结构,没接触过单片机与数字电路的人也许会问,单片机如何输入数据呢?严格意义上讲,单片机是不能直接输入数学意义的数据。它是通过识别I/O口上的高低电平,实现输入的。(一般)把高电平定义为二进制的1,低电平定义为二进制的0;多位组合,即为二进制数据。单片机对外输出也是对外输出高低电平实现数据输出。STC15系列单片机如何识别高低电平呢?请看下面截自手册描述:
如果I/O上的电压为不能识别的范围,则视为无输入。STC15单片机还有一种工作模式,为模拟输入,仅限于P1口。这里不做详述,在讲A/D转换时再做说明。
上面讲了I/O上电复位时的工作模式,那么I/O口上电复位时的输出又如何呢?这个很重要,特别是工控系统;如果忽略这个,后果可能会灾难性的。STC15
如果I/O上的电压为不能识别的范围,则视为无输入。STC15单片机还有一种工作模式,为模拟输入,仅限于P1口。这里不做详述,在讲A/D转换时再做说明。
上面讲了I/O上电复位时的工作模式,那么I/O口上电复位时的输出又如何呢?这个很重要,特别是工控系统;如果忽略这个,后果可能会灾难性的。STC15单片机I/O上电复位输出如下:
可以看出STC15单片机上电复位单片机I/O上电复位输出都是高电平。如果供电电压为5V,STC15单片机输出1时电平为5V,输出0时电平为0V。
明白了STC15单片机I/O特性,就可以用它实现数据输入及输出控制外围设备,但需要注意保护以免损坏I/O口及整个单片机。下面简单介绍常见外围(驱动)电路。
- 发光二极管驱动电路
2. 蜂鸣器及继电器驱动电路
此电路为低电平驱动,即当I/O输出为低电平时蜂鸣器工作。这个电路不要求Vcc一定为单片机供电电压,但需共地。蜂鸣器换成继电器,即可驱动继电器。由于蜂鸣器与继电器为感性负载,需加保护二极管,以卸除突然断电时感性负载产生的感生电压。如果不加可能会损坏三极管。
上面电路为低电平驱动,即当I/O输出为低电平时蜂鸣器工作。这个电路不要求Vcc一定为单片机供电电压,但需共地。蜂鸣器换成继电器,即可驱动继电器。当继电器或蜂鸣器仅需5V供电时,就可使用下面电路。
3. 普通I/O外部输入电路
二极管的作用是保护I/O,以防输入高压损坏I/O口。I/O口不需工作在开漏输出模式,可以省去,上拉电路。
4. 5V与3.3V I/O互连电路
5. 驱动N MOS电路