跳到主要内容

第二课:认识寄存器 - 单片机的"储物柜"

📌 学习目标​

  1. 理解什么是寄存器
  2. 学会读写寄存器
  3. 理解寄存器地址的概念
  4. 掌握 JoyKit 常用寄存器的用途

🎯 什么是寄存器?​

形象的比喻​

想象你的书桌有一排抽屉,每个抽屉:

  • 有自己的编号(地址)
  • 可以存放东西(数据)
  • 可以取出和放入(读写)

寄存器就是单片机的"抽屉",用来临时存储数据!


📦 寄存器的基本属性​

1. 地址​

每个寄存器都有唯一的地址,用十六进制表示:

寄存器地址用途
R00x00通用寄存器
R10x01通用寄存器
R250x19IO 配置寄存器
.........

2. 位宽​

JoyKit 的寄存器是 16位 的,可以存储的数据范围:

  • 最小值:0000 (十六进制) = 0
  • 最大值:FFFF (十六进制) = 65535

🔧 读写寄存器指令​

1. 写入寄存器 (0x10)​

把数据写入指定寄存器:

指令OP00OP01OP10OP11
10寄存器地址数据0000

例子:把 0x00FF 写入寄存器 R0

000 10 0000 00FF  ; R0 = 0x00FF

2. 读取寄存器 (0x14)​

把 IO 数据读取到寄存器:

指令OP00OP01OP10OP11
14目标寄存器000000

🧩 常用寄存器介绍​

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 ; 循环

📝 小练习​

  1. 写一条指令:把 0x1234 写入 R5
  2. 写一条指令:把 R5 的值复制到 R6
  3. 写一条指令:让 R6 的值加 1

🎉 小结​

今天我们学到了:

  • ✅ 寄存器是单片机的"储物柜"
  • ✅ 每个寄存器有地址
  • ✅ 用指令 0x10 写入寄存器
  • ✅ R25 用来配置 IO 输入输出
  • ✅ 寄存器之间可以传递数据

下一课我们将学习 IO 输入输出,动手控制真实的硬件!