wuzhengmin 发表于 2026-1-5 10:24:21

我们看看内部RAM简单的分布情况:

从00H---1FH这32个单元,称为工作寄存器区

是R7----R0,共4组

从20H---2FH,是可以位寻址的区域

20H.1和01H位地址,实际是等价的

因为位地址也是从00H开始...........到最高位7FH

是这样算出来的:20H到2FH是16行,每行8位,共16*8=128位

从00H,01H,02H............7FH 是7*16=112,112+15=127位,还有一个00H,

刚好7FH就是128位!





wuzhengmin 发表于 2026-1-5 10:48:53

3)位寄存器的定义名称,如C、EA等。

C是谁?

还记得程序状态寄存器PSW么?

PSW有8个位,每个位有个名称:

最高位称为CY(进位标志),最低位称为P标志

在程序当中,CY就要用C来表示,CY也称为位累加器或者进位标志

EA是什么?EA是控制单片机中断的开关位

我们可以用 SETB EA 让它=1SET C 让C=1







wuzhengmin 发表于 2026-1-5 10:50:16

看看位操作指令表:

wuzhengmin 发表于 2026-1-5 10:57:06

1 位数据传送指令:

wuzhengmin 发表于 2026-1-5 10:59:32

上面的例子,很容易误解,正确的理解要看下图:

首先这里的07H不是指工作寄存器的07H,工作寄存器的07H实际是R7

这里的07H指的是位寻址空间(20H---2FH 中的07H),仔细看图:

79H 是0111 1001 就是说20H的内容0111 1001 的最高位是0

我们是把20H的最高位给C!




wuzhengmin 发表于 2026-1-5 11:29:12

那么 MOVC,03H的意思就是把20H的第4位,赋给CY

wuzhengmin 发表于 2026-1-5 11:33:06

但是,MOV A,07H 的意思就是把07H单元的8位2进制数,赋值给A!

07H单元在这里的意思就是R7,这里传送的是1个字节



wuzhengmin 发表于 2026-1-5 11:37:58

位状态控制:

wuzhengmin 发表于 2026-1-5 12:10:50

我们把上面的语句仿真一下:

建立新项目:
一开始SPX 是0x0007

wuzhengmin 发表于 2026-1-5 12:13:07

单步一次:

SPX变成0x0080

页: 36 37 38 39 40 41 42 43 44 45 [46] 47 48 49 50 51 52 53 54 55
查看完整版本: 有关DMA,山东大学陈桂友教授