CH01
8051 8052 8031
ROM 4KB 8KB 0
RAM 128B 256B 128B
定时器 2 3 2
I/O 32 32 32
串行端口 1 1 1
中断源 6 8 6
- 存储程序代码的是片内ROM
- RAM?
CH02-8051汇编
2.1 8051内部
寄存器:临时存放信息,可能是欲处理的一个字节数据或者指向欲获取数据的地址。
MSB(most significant bit)7 6 5 4 3 2 1LSB(least...)
8051使用最广泛的寄存器是A,B,R0,R1...,R7,DPTR(data pointer,数据指针)和PC(Program counter,程序计数器),最后两个不是8位,其他均是8位寄存器。
累加器A用于所有算数和逻辑指令。
--MOV指令:MOV 目的,源;从源复制到目的
值可以直接加载到A B R0-R7的寄存器
MOV A, #23H #号表示该为数值,否则是寄存器单元地址
MOV R0, A
MOV R6, #12
MOV B, #0F9H 必须加0,指示F是16进制数
--ADD指令:ADD A, 源 ;将源操作数加到累加器的值上,结果仍在A中
MOVE A, #25H
ADD A, #34H
2.2 8051汇编语言编程引论
[标号:] 助记符 [一个或多个操作数] [;注释]
ORG 0H ;伪指令,在单元0开始
MOV R5, #25H
MOV R7, #34H
MOV A, #0
ADD A, R5
ADD A, R7
ADD A, #12H
HERE: SJMP HERE ;停留在这个循环上
END ;伪指令,汇编源文件的终点
伪指令pseudo-instruction=assembler directive仅为汇编器所用,不生成机器码。
2.3 汇编和运行8051程序
编辑器程序->汇编器程序(生成lst列表文件)->连接器程序->目标至十六进制转换程序
lst列表文件举例
0000 ORG 0H ;伪指令,在单元0开始
0000 7D25 MOV R5, #25H
0002 7F34 MOV R7, #34H
0004 7400 MOV A, #0
0006 2D ADD A, R5
0007 2F ADD A, R7
0008 2412 ADD A, #12H
000A 80FE HERE: SJMP HERE ;停留在这个循环上
000C END
2.4 8051中的程序计数器和ROM空间
PC(PROGRAM COUNTER,程序计数器),指向下一个欲执行的指令地址,16位宽,可以访问0000-FFFF,共64KB的代码,但是一般只使用8KB。
0000-0FFF:4KB
加电时8051从何处苏醒?0000处,8051是如此。逐字节执行程序。
2.5 8051的数据类型和伪指令
8051微控制器只有一种数据类型就是8位二进制码,长于8位的数据要分解才能被CPU处理。
--DB(Define byte,定义字节)最常用的伪指令,它用于定义八位数据。当DB定义数据时,数可以是十进制(+D)、二进制(+B)、十六进制(+H)或者ASCII格式(+" ")。
DB 28 ;十进制
DB 00110101B ;二进制
DB 39H ;十六进制
DB "my name is" ;ASCII码
--ORG 指示开始地址
--EQU 等同
COUNT EQU 25
--END
2.6 8051标志位和PSW寄存器
PSW(程序状态字)8位中只使用6位,PSW.3和PSW.4分别指定为RS0和RS1,用于改变不同的“相寄存器”。PSW.5和PSW.1自定义。
-CY(carry)进位标志
只要当D7位出现进位,该标志便置位。SETB C是置进位位set bit carry; CLR C是清进位位clear carry。
-AC(auxiliary carry)辅助进位
若在ADD和SUB操作中发生从D3向D4的进位,此位置位。
-P(parity)奇偶校验
反映累加器A中1的数目,奇数个1置1,偶数置0
-OV(overflow)溢出
ADD指令和PSW
ADD指令对PSW寄存器中标志位的作用
2.7 8051寄存器相和栈
共128字节RAM,8052有256字节
00H-1FH 32字节 寄存器相bank和栈(相0、1、2、3)
20H-2FH 16字节 位可寻址RAM
30H-7FH 80字节 草稿本区域
--8051寄存器相
相1使用与栈相同的RAM空间
切换寄存器的相,可以用PSW.4.3
--8051中的栈
用于存取栈的寄存器称为SP(stack point 栈指针),8位宽,00-FFH。
加电时,SP值为07。
PUSH推入
POP拉出
8051的RAM单元08到1F可用于栈。大于此可以转向30-7FH
--CALL指令和栈
--用模拟器观察寄存器和存储器

没有评论:
发表评论