STC15W408AS单片机有14个I/O口。其所有I/O口均可由软件配置成4种类型。4种类型分别为:准双向口/弱上拉(标准8051输出模式)、推挽输出/强上拉、高阻输入(电流既不能流入也不能流出)或开漏输出功能。每个口由2个控制寄存器中的相应位控制每个引脚工作类型。STC15系列单片机的I/O口上电复位后为准双向口/弱上拉(传统8051的I/O口)模式。每个I/O口驱动能力均可达到20mA,但40-pin及40-pin以上单片机的整个芯片最大不要超过120mA,20-pin以上及32-pin以下(包括32-pin)单片机的整个芯片最大不要超过90mA。
在上一节3.STC15W408AS单片机GPIO介绍了的GPIO的结构和4种工作模式。这里先介绍输出的两种模式。
接下来开始的实际操作实践。点亮第一个LED,这里的IO口既可以设置为输入也可以设置为输出。
一、GPIO设置为输入
实验电路如下:
I/O准双向模式,既可以是输入,也可以是输出。
#include "stc15.h"
#include "delay.h"
void main()
{
// P1.1口设置为准双向IO口模式,这里可以不写,默认如此
P1M0 = 0x00;
P1M1 = 0x00;
while (1)
{
P11 = 1; // LED 熄灭
delayms(1000); // 等待 1s
P11 = 0; // LED 点亮
delayms(1000); // 等待 1s
}
}
这个程序实际就是LED间隔1s闪烁的程序。
二、GPIO设置为输出
这里设置成为强推挽输出模式。
#include "stc15.h"
#include "delay.h"
void main()
{
// P1.1 设置为强推挽输出 驱动能力可达20mA
P1M0 = 0x02;
P1M1 = 0x00;
while (1)
{
P11 = 1; // LED 点亮
delayms(1000); // 等待1s
P11 = 0; // LED 熄灭
delayms(1000); // 等待1s
}
}