第二课:认识寄存器 - 单片机的"储物柜"
📌 学习目标
- 理解什么是寄存器
- 学会读写寄存器
- 理解寄存器地址的概念
- 掌握 JoyKit 常用寄存器的用途
🎯 什么是寄存器?
形象的比喻
想象你的书桌有一排抽屉,每个抽屉:
- 有自己的编号(地址)
- 可以存放东西(数据)
- 可以取出和放入(读写)
寄存器就是单片机的"抽屉",用来临时存储数据!
📦 寄存器的基本属性
1. 地址
每个寄存器都有唯一的地址,用十六进制表示:
| 寄存器 | 地址 | 用途 |
|---|---|---|
| R0 | 0x00 | 通用寄存器 |
| R1 | 0x01 | 通用寄存器 |
| R25 | 0x19 | IO 配置寄存器 |
| ... | ... | ... |
2. 位宽
JoyKit 的寄存器是 16位 的,可以存储的数据范围:
- 最小值:
0000(十六进制) = 0 - 最大值:
FFFF(十六进制) = 65535
🔧 读写寄存器指令
1. 写入寄存器 (0x10)
把数据写入指定寄存器:
| 指令 | OP00 | OP01 | OP10 | OP11 |
|---|---|---|---|---|
10 | 寄存器地址 | 数据 | 00 | 00 |
例子:把 0x00FF 写入寄存器 R0
- 📚 带注释
- 📋 纯净代码
000 10 0000 00FF ; R0 = 0x00FF
000 10 0000 00FF
2. 读取寄存器 (0x14)
把 IO 数据读取到寄存器:
| 指令 | OP00 | OP01 | OP10 | OP11 |
|---|---|---|---|---|
14 | 目标寄存器 | 00 | 00 | 00 |
🧩 常用寄存器介绍
1. IO 配置寄存器 (R25, 0x19)
用来设置 IO 口是输入还是输出:
| R25 的值 | 说明 |
|---|---|
0000 | 全部设为输出 |
00FF | 全部设为输入 |
000F | 低4位输入,高4位输出 |
2. 系统寄存器
- R0-R15:通用寄存器,可以自由使用
- R25:IO 配置(刚才讲过)
- R31-R33:LED 颜色数据(R31=红,R32=绿,R33=蓝)
🔬 课堂演示实验:寄存器值的"接力"
实验目标
演示寄存器之间的数据传递。
程序代码
- 📚 带注释
- 📋 纯净代码
; 寄存器数据接力实验
000 10 0000 00AA ; R0 = 0xAA
001 11 0000 0001 ; R1 = R0 (R1 = 0xAA)
002 11 0001 0002 ; R2 = R1 (R2 = 0xAA)
003 12 0002 0001 ; R2 += 1 (R2 = 0xAB)
004 01 00FF 0000 ; 用LED显示R2的值
005 02 03E8 0000 ; 延时
006 0E 0003 0000 ; 循环
000 10 0000 00AA
001 11 0000 0001
002 11 0001 0002
003 12 0002 0001
004 01 00FF 0000
005 02 03E8 0000
006 0E 0003 0000
📝 小练习
- 写一条指令:把
0x1234写入 R5 - 写一条指令:把 R5 的值复制到 R6
- 写一条指令:让 R6 的值加 1
🎉 小结
今天我们学到了:
- ✅ 寄存器是单片机的"储物柜"
- ✅ 每个寄存器有地址
- ✅ 用指令 0x10 写入寄存器
- ✅ R25 用来配置 IO 输入输出
- ✅ 寄存器之间可以传递数据
下一课我们将学习 IO 输入输出,动手控制真实的硬件!