第一章

二进制、十六进制转换
有符号数的表示及转换:原码、反码、补码

1、将CPU、存储器、I/O接口电路等都集成在一块芯片上的系统叫单片机。
2、51单片机中有21个SFR
3、51的指令按其功能可分为五类:==数据传送类、 算术运算类、逻辑运算类指令、位操作指令、控制转移指令==

第二章

51单片机4个端口的特点
程序存储器、数据存储器配置特点,访问二者的指令有什么异同
片内数据存储器的组成特点,初始化时重要寄存器的初值特点
掌握重要寄存器PSW各位功能,掌握SP,PC等寄存器功能
振荡周期、机器周期、指令周期的基本概念和计算

51单片机芯片内包括:

1
2
3
4
5
6
7
8
9
一个8位的80C51微处理器(CPU)
片内256字节数据存储器RAM/SFR(SFR位特殊功能寄存器),用以存放可以读/写的数据
片内4KB程序存储器Flash ROM,用以存放程序,一些原始数据和表格
4个8位并行I/O端口P0~P3,每个端口既可以用作输入,也可以用作输出
两个16位的定时器/计数器,每个定时器/计数器都可以设置成计数方式,用以对外部事件进行计数,也可以设置成定时方式,并可以根据计数或者定 时的结果实现计算机控制
5个中断源,2个中断优先级的中断控制系统
一个全双工UART(通用异步接收发送器)的串行I/O口,用以实现单片机之间或单片机与PC机之间的串行通信
片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接,最高允许振荡频率为24MHz
89C51/S51单片机与8051相比,具有节电工作方式,即休闲方式及掉电方式

1、ALE引脚:地址锁存允许:锁存P0低8位
2、P0P3端口,地址线和数据线如何提供
DB:P0
AB:P2提供高8位,P0提供低8位(P0输出的地址需锁存,ALE控制锁存)
3、PC:储存将要执行的下一条指令的地址
4、已知晶振频率$f_{osc}$,求机器周期T,指令周期:
$$
振荡周期T_{osc}=\frac{1}{f_{osc}}\
机器周期=6\times 状态周期=12\times振荡周期\
指令周期=(1,2,4)\times机器周期
$$
5、栈指针SP(8位特殊功能寄存器)
堆栈操作与指令,PUSH(入栈)、POP(出栈)
6、复位:51系列单片机复位是在==RESET引脚==上加==两个机器周期以上的高电平信号==
除SP=07H,P0
P3=FFH,其余均复位为0
A=00H:表明累加器已清0
PSW=00H:表明选寄存器0组为工作寄存
==SP=07H==:表明堆栈指针指向片内RAM 07H 字节单元,根据堆栈操作的先后加压法则,第一个被压入的数据被写入 08H 单元中
==P0~P3=FFH==:表明已向各端口线写入1,此时,各端口既可以用于输入也可以用于输出
IP=$\times\times\times$00000B:表明各个中断源处于低优先级
IE=0$\times\times$00000B:表明各个中断均被关断
TMOD=00H:表明T0,T1均为工作方式0,且运行于定时器定时器状态
TCON=00H:表明T0,T1均被关断
SCON=00H:表明串行口处于工作方式0,允许发送,不允许接收
PCON=00H:表明SMOD=0,波特率不加倍
7、PSW(程序状态寄存器)

PSW0.7 PSW0.6 PSW0.5 PSW0.4 PSW0.3 PSW0.2 PSW0.1 PSW0.0
位地址 D7 D6 D5 D4 D3 D2 D1 D0
位名称 CY AC F0 RS1 RS0 OV - P
位意义 进、借 辅进 用户标定 寄存器组选择 寄存器组选择 溢出 保留 奇/偶

P:奇偶校验位,仅针对累加器A中的个数的奇偶标志:若1的个数为==奇数==,P=1,若1的个数为==偶数==,P=0

RS0和RS1(PSW.3和PSW.4):

RS1 RS0 寄存器组 片内RAM地址(R0~R7)
0 0 0 00H~07H
0 1 1 08H~0FH
1 0 2 10H~17H
1 1 3 18H~1FH

8、存储器
数据存储器(RAM)
内部RAM低128个单元按用途分成3个区域:

1
2
3
工作寄存器区:00H~1FH
位寻址区:20H~2FH
用户RAM区:30H~7FH

​ 程序存储器(ROM)

1
2
3
MOV:片内RAM(低128字节:00H~7FH,高128字节:80H~FFH)
MOVX:片外RAM(0000H~FFFFH)
MOVC:片内、片外ROM(0000H~0FFFH,1000H~1FFFH)

第三、四章

7种寻址方式的特点,访问存储器空间区别,熟悉相关指令
掌握数据块在数据存储器片内片外传输、程存储器和数据存储器间数据传输编程

1、7种寻址方式
寄存器寻址(片内):MOV A,R0
MOV P1,A
ADD A,R0
直接寻址(片内RAM和SFR):
MOV A,30H
MOV A,P1
立即数寻址:MOV A,#30H
寄存器间接寻址:MOV A,@R0
变址寻址:MOVC A,@A+DPTR
MOVC A,@A+PC
相对寻址:只出现在相对转移指令中,例:SJMP 55H
位寻址:例:CLR C;SETB 00H
片内RAM有两个区域可以位寻址:一个是20H~2FH的16个单元中的128位,另一个是字节地址能被8整除的特殊功能寄存器
2、DPTR(16位特殊功能寄存器)
高位字节:DPH
低位字节:DPL
可当16位寄存器用,也可以当成两个独立的8位寄存器用(DPH、DPL)
3、交换指令
XCH A,Rn;交换A和Rn中储存的内容
CHXD A,@Ri;交换A和Ri的低4位
SWAP A;将A的高低4位交换1234-5678$\rightarrow$5678-1234
4 、算术运算指令
ADD A,Rn;加法,A和Rn相加的结果保存进A
ADDC A,Rn;带进位的加法指令(A)+CY+(Rn)$\rightarrow$(A);OV=C7$\bigoplus$C6(相异为1)
SUBB A,Rn;带借位的减法指令(A)-CY-(Rn)$\rightarrow$(A)
MUL AB;相乘后的16位结果低8位存在A中,高8位存在B中:(A)$\times$(B)$\rightarrow$$B_{15-8}A_{7-0}$
DIV AB;相除后整数商存在A中,余数存在B中
ANC A;A自加1:(A)+1$\rightarrow$(A)
DEC A;A自减1:(A)-1$\rightarrow$(A)
5、跳转指令
AJMP addr11;断跳转指令
LJMP adrr16;长跳转指令
6、带条件的跳转指令
JB bit,rel;(bit)=1,跳转
JNB bit,rel;(bit)=0,跳转
JBC bit,rel;(bit)=1,跳转,并且清0该位
7、循环指令
DJNZ Rn,rel;(Rn)-1$\rightarrow$Rn,判断,
若,(Rn)$\neq$0,循环
(Rn)=0,程序向下执行
8、若将单片机内RAM指定的连续单元中的内容送到片外指定的连续地址,如何实现?

1
2
3
4
5
6
7
8
9
MOV R0,#30H  ;设置内部RAM源地址指针
MOV DPTR,#1000H ;设置片外数据存储器目标地址指针
MOV R2,#10 ;设置数据长度
LOOP:
MOV A,@R0 ;从内部RAM读取数据
MOVX @DPTR,A ;将数据写入片外数据存储器
INC R0 ;内部RAM地址指针加1
INC DPTR ;片外数据存储器地址指针加1
DJNZ R2,LOOP ;判断是否传输完所有数据

9、通过MOVX指令与片外RAM传送,只能用累加器A,R0、R1、DPTR做寄存器间接寻址

第五章

掌握中断是量表、中断优先级判断、中断服务程序特点
掌握定时器控制寄存器 TCON 各位含义和使用规则
掌握中断允许控制寄存器正各位含义和使用规则
掌握中断优先级寄存器 IP各位含义和使用规则
熟练掌握外部中断概念和编程

1、五类中断源,中断请求标志分别是什么?存放在哪一个特殊功能寄存器中?

1
2
3
4
5
外部中断0(INT0):中断请求标志IE0,存放在TCON(定时器/计数器控制寄存器)中
外部中断1(INT1):中断请求标志IE1,存放在TCON(定时器/计数器控制寄存器)中
定时器/计数器溢出中断(T0):中断请求标志TF0,存放在TCON(定时器/计数器控制寄存器)中
定时器/计数器溢出中断(T1):中断请求标志TF1,存放在TCON(定时器/计数器控制寄存器)中
串行口中断(TXD/RXD):发送中断标志TI和接收中断标志RI,存放在 SCON(串行口控制寄存器)中

2、五类中断的中断子程序入口

1
2
3
4
5
INT0:0003H
INT1:0013H
T0:000BH
T1:001BH
RI/TI:0023H
中断源 中断请求标志 存放的特殊功能寄存器 中断子程序入口
INT0 IE0 TCON 0003H
INT1 IE1 TCON 0013H
T0 TF0 TCON 000BH
T1 TF1 TCON 001BH
TXD/RXD TI/RI SCON 0023H

3、51单片机中断优先级控制特点

​ 优先级排序(由高到低):

​ 外部中断0$\rightarrow$定时器/计数器T0溢出中断$\rightarrow$外部中断1$\rightarrow$定时器/计数器T1溢出中断$\rightarrow$串行口中断

​ 中断嵌套:处理中断请求时,优先处理优先级高的,保护原中断源的断点

​ 嵌套条件:高优先级打断低优先级

​ 多个级别中断源同时提出中断请求如何处理:按照优先级从高到低处理

4、外部中断编程:(INT0引脚:P3.2 INT0引脚:P3.3)
①引导地址程序
②主程序MAIN(初始化)
确定外部中断引发方式
开中断(题目中的要求)
等待中断程序
③定义子程序
RETI
END

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
;利用外部中断0向CPU申请中断,中断服务将P1口作为输出驱动
ROG 0000H
AJMP MAIN
ORG 0003H ;外部中断0入口地址
AJMP WINT ;指向中断服务程序
ORG 0100H ;主程序
MAIN:
SETB IT0 ;选择边沿触发方式
SETB EXO ;允许外部中断0
SETB EA ;CPU允许中断
HERE:
ORG 0200H ;主程序踏步
WINT:
MOV A,#0FFH;
MOV P1,A ;输出驱动
RETI ;中断返回
END
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
;把外部中断请求信号连到T1引脚上,T1设为方式2即8位自动重装载方式,时间常数设为满刻度值FFH,外部中断的服务程序入口存放在T1的中断矢量区中
ORG 0000H
AJMP MAIN;
ORG 001BH ;T1中断矢量用作外部中断的中断矢量
LJMP INT2;
ORG 0030H;
MAIN:
MOV TMOD,#60H ;设T1计数器方式2
MOV TL1,#0FFH ;置T1计数常数
MOV TH1,#0FFH
SETB EA ;开中断
SETB ET1 ;允许计数器1中断
SETB TR1 ;启动计数
............
INT2:....... ;外部中断2服务程序

第六章

理解定时计数器工作原理,掌握4种工作模式特点
掌握工作模式寄存器TMOD的各位含义和使用规则
掌握和理解定时时间初值计算公式
掌握定时中断程序编写,理解查询方式编程

M1 M0 工作模式 功能描述
0 0 模式0 13位计数器
0 1 模式1 16位计数器
1 0 模式2 8位计数器
1 1 模式3 8为计数器

定时时间:$T=(2^N-X)\times \large\frac{12}{f_{osc}}$

$X$:计数初值
$N$:计数器位数
$f_{osc}$:时钟频率

第七章

掌握串行通信4种工作模式特点和波特率、数据帧组成、波特率概念
掌握寄存器 SCON、PCON 各位含义和使用规则
业握串行通信查询方式编程1数据发送和数据接收,理解串行中断方式编程

第八章

掌握片外扩展数据线、地址线和控制线的线路连接,片外扩展后相关存储器地址计算
理解片外扩展空间和地址线间的关系
堂握片外扩展时,IO口P0和P2的功能和作用
理解 3-8 译码器、锁存器的工作原理,进行相关控制端的正确设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ORG 0000H;
AJMP MAIN;
MAIN:
MOV R0,#20H
MOV R2,#30H
LOOP:
MOV A,#R0;
CJNE A,#0AAH,TRY;
MOV 51H,#01H;
AJMP THEEND;
TRY:
INC,R0;
DJNZ R2,LOOP;
MOV 51H,#00H
AJMP THEEND;
THEEND:
END

现:89C51单片机的晶振频率$f_{osc}=12MH_z$,用T1定时,由P1.1引脚输出周期为500us的方波。(请采用中断方式编写程序,T1的中断矢量地址为001BH)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ORG 0000H
LJMP MAIN
ORG 001BH
AJMP SERVE
ORG 0030H
MAIN:
MOV SP,#60H
MOV TMOD,#20H
MOV TL1,#06H
MOV TH1,#06H
SETB EA
SETB TR1
SETB ET1
SJMP $
ORG 001BH
SERVE:
CPL P1.1
MOV TL1,#06H
MOV TH1,#06H
RETI