2009-03-20

8051微控制器和嵌入式系统-1

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指令和栈

--用模拟器观察寄存器和存储器

没有评论:

发表评论