芯片简介
本文使用一款 12MHZ、单指令周期(指令周期为1/13微秒)的芯片。在继续阅读文章之前,请先查阅如下段落并了解其指令、寄存器及其他说明。
AR:16位立即数寄存器,可赋值一个16位的数值
eg: AR = 0x0000
AX:16位立即数寄存器,可赋值一个16位的数值
eg: AX = 0x0000
CX:16位立即数寄存器,可赋值一个16位的数值,配合LOOP指令使用,实现循环
eg: CX = 0x0006 ;; 循环7次
Your_Label:
AR = 0x0001
LOOP Your_Label ;; 每遇到LOOP指令,CX会自动 -1,当CX < 0时,会跳过此条指令向下运行
JMP Your_Label_1
P0:16为立即数寄存器,用于获取ROM中某个地址,配合 PM[] 使用,取出该地址中的值
eg: P0 = #Your_Label
AR = PM[P0]
;; 此时的AR将变为 0x0001, 即取出P0指向地址中的值
Your_Label:
DW 0x0001, 0x0002
PUSH:将该寄存器数值入栈保存
eg: PUSH AR
POP:出栈并将数值保存至该寄存器
eg: POP AR
JEQ:当结果为0时跳转(本文中仅理解为AR为0时跳转)至该标签
eg: AR = 0x0000
JEQ Your_Label;; 此时跳转至 Your_Lable
AR = 0x0001
JEQ Your_Label;; 此时不跳转,向下运行
JAC:C标志位是一个系统寄存器中的某一位,其作用是判断AR等寄存器是否溢出。
此外左移、右移指令会将移出的一位存储在C标志位中。JAC指令根据C标志位跳转,1-跳转;0-不跳转
eg: AR = 0x0001
SRA AR ;; SRA为右移指令,将最低位移出到C标志位,其余位依次向右移动1位
JAC Your_Label ;; 最低位为1,右移到C标志位,C标志位为1,则跳转。
JMP:无条件跳转
eg: JMP Your_Label

本文详细介绍了基于特定12MHz单指令周期芯片的UART串口通信实现,包括初始化IO口、数据传输和字符串传输的步骤。通过宏定义简化了IO口状态转换,并强调了波特率、指令执行时间和脉冲信号稳定时间(Tw)在通信中的重要性。文章还展示了如何处理8位数据传输和字符串转换为ASCII值的过程。
最低0.47元/天 解锁文章
2859

被折叠的 条评论
为什么被折叠?



