跳到主要内容

第三课:IO 输入输出 - 让单片机与世界对话

📌 学习目标​

  1. 理解什么是 IO 口
  2. 学会配置 IO 为输入或输出
  3. 掌握数字输出指令
  4. 掌握数字输入指令
  5. 动手做一个开关控制 LED 的项目

🎯 什么是 IO?​

IO 是 Input/Output 的缩写,意思是输入/输出。

  • 输入:单片机从外界读取信息(按钮、传感器等)
  • 输出:单片机向外界发送信息(LED、蜂鸣器等)

🔧 配置 IO 口​

使用 R25 寄存器来配置每个 IO 口:

R25 的值说明
0000全部设为 输出
00FF全部设为 输入
00F0低4位输出,高4位输入
000F低4位输入,高4位输出

💡 数字输出 (0x01)​

控制 LED、蜂鸣器等输出设备。

指令格式​

指令OP00OP01OP10OP11
0100输出引脚(00~07)或 FF(按位操作)00输出值

说明:

  • 单个引脚输出: OP01 = 0007(指定LED0LED7),OP11 = 00(亮)或 01(灭)
  • 按位输出: OP01 = FF,OP11 = 00~FF(每一位对应一个LED的状态)

例子:控制 8 个 LED​

000 10 0019 0000  ; R25 = 0x0000 → 全部设为输出
001 01 00FF 0001 ; 第1个LED亮(按位操作)
002 02 03E8 0000 ; 延时
003 01 00FF 0002 ; 第2个LED亮(按位操作)
004 02 03E8 0000 ; 延时
005 01 00FF 0004 ; 第3个LED亮(按位操作)
006 02 03E8 0000 ; 延时
007 01 00FF 0008 ; 第4个LED亮(按位操作)
008 02 03E8 0000 ; 延时
009 0E 0001 0000 ; 循环回到001

🔍 数字输入跳转 (0x0B)​

读取按钮、开关等输入设备,根据状态跳转。

指令格式​

指令OP00OP01OP10OP11
0B条件跳转地址0000

🔬 课堂演示项目:按钮控制 LED​

项目目标​

按下按钮时 LED 亮,松开时 LED 灭。

硬件连接​

  • 按钮:连接到 IO0(输入)
  • LED:连接到 IO4(输出)

参考程序​

; 按钮控制 LED 项目
000 10 0019 0001 ; R25 = 0x0001 → IO0输入,其他输出
001 0B 0001 0004 ; 如果IO0为1(按钮松开),跳转到004
002 01 0010 0000 ; LED 亮
003 0E 0001 0000 ; 跳回
004 01 0000 0000 ; LED 灭
005 0E 0001 0000 ; 跳回

教学建议​

  • 可以加入延时,实现按下按钮后LED闪烁
  • 可以用多个按钮控制多个LED
  • 可以尝试按一下切换状态,而不是按住亮

💡 IO 输出数据解读​

输出数据的每一位对应一个 IO 口:

数据位对应 IO
位0IO0
位1IO1
位2IO2
......
位7IO7

例子:

  • 0001 → IO0 输出高电平
  • 0003 → IO0 和 IO1 输出高电平
  • 00FF → 全部 IO 输出高电平

🎉 小结​

今天我们学到了:

  • ✅ IO = 输入/输出
  • ✅ 用 R25 配置 IO 方向
  • ✅ 指令 0x01 输出数据
  • ✅ 指令 0x0B 根据输入跳转
  • ✅ 完成了按钮控制 LED 的项目

下一课我们将学习 PWM,让 LED 呼吸起来!