第1章 单片机概述
- 什么是单片机:单片机是由CPU、存储器、I/O接口及总线集成在一个芯片上。
- 简单了解AT89S51单片机简介。
相当于MCS-51系列中的87C51,AT89S51芯片内4KB的Flash存储取代了87C51片内的4K的EPROM。
第2章 AT89S51单片机的内部结构
- MCS-51单片机具有几个并口,其中哪个口具有外部中断、串行通信等第二功能。
有4个并口,P3口具有外部中断、串行通信等第二功能。 - AT89S51的片内程序存储器为4 KB的Flash存储器,地址范围是 0000H~0FFFH。
- 设外接石英晶体频率为6MHz,机器周期的时间宽度2us。
一个机器周期=12 个振荡周期. - PC和DPTR分别用于提供什么地址。
PC用于提供预读取(正在执行指令的下一条)指令的首地址,DPTR用于提供访问数据存储器的地址指针。
PSW是 特殊功能寄存器(SFR) 。 - 当 E A ‾ \overline{EA} EA接地时,AT89S51单片机将从 外部程序存储器 的 0000H 地址开始执行程序。
- RAM的位寻址区对应的字节地址范围是 20H~2FH 。
第3章 8051指令系统与编程基础
-
一条指令通常由两部分组成,即 操作码 和 操作数 。
-
简述AT89C51两条查表指令的执行过程。
-
MOVC A, @A+PC
指令以PC作为基址寄存器,A的内容作为无符号整数和PC当前值(下一条指令的首地址)相加后得到一个新的16位地址,把该地址指定的程序存储单元内容送入累加器A中。
-
MOVC A, @A+DPTR
指令以DPTR作为基址寄存器,A的内容作为无符号数和DPTR的内容相加得到一个16位地址,把由该地址指定的程序存储器单元的内容送到累加器A中。
-
-
AT89S51单片机当从堆栈弹出一个字节的数据后,SP中的内容如何变化。
POP direct
:将栈顶指针SP指示的栈顶(内部RAM)内容送入direct字节单元中,然后栈顶指针SP减1。 -
乘法指令
MUL AB
两个操作数分别在 累加器A 和 寄存器B(无符号8位整数) 中,执行指令后,乘积结果放在 累加器A和寄存器B 寄存器对中, 寄存器B 放数据高8位, 累加器A 放数据低8位。
除法DIV AB
中,被除数取自 累加器A,除数取自 寄存器B ,商放在 累加器A 中,余数存放于 寄存器B 中。 -
求n个单字节无符号数 X i X_i Xi的和, X i X_i Xi按 i i i顺序存放在AT89S51单片机内部RAM从
50H
开始的单元中,n放在R2
中,和(双字节)放在R3
R4
中。
ORG 0100H
ADD1: MOV R2, #n ; 计数控制
MOV R3, #0 ; 存放和的高8位
MOV R4, #0 ; 存放和的低8位
MOV R0, #50H ; 变址单元
LOOP: MOV A, R4
ADD A, @R0
MOV R4, A
INC R0
CLR A
ADDC A, R3
MOV R3, A
DJNZ R2, LOOP
END
ADDC带进位
- 编写程序将片外数据存储器中4000H~40FFH单元全部清零。
ORG 0100H
MAIN: MOV A, #0 ; 预置数0送A
MOV R0, #0FFH ; 设立循环次数(40FFH-4000H=FFH)
MOV DPTR,#4000H ; 设立数据指针的初值
LOOP: MOVX @DPTR, A ; 当前单元赋值0
INC DPTR ; 指向下一个单元
DJNZ R0, LOOP ; 是否结束
END
-
指令判错,如
MOV 36H, @R6
错误,MOV direct, @Ri
,间接寻址的Ri只能是R0和R1,R6不合法。课本P43 第7条最后一段:Ri(i=0,1)
第4章 AT89S51单片机的中断系统
- 简述AT89C51的中断技术。
中断技术主要用于实时监测与控制。
当中断请求源发出中断请求时,如果中断请求被允许的话,单片机暂时中止当前执行的主程序,转到中断服务处理程序处理中断服务请求。中断服务请求处理完后,再回到原来被终止的程序之处(断点),继续执行被中断的主程序。 - 五源中断,两级管理。5个中断源的中断入口地址分别是什么。
-
I
N
T
0
‾
\overline{INT0}
INT0 外部中断请求0:
0003H
-
I
N
T
1
‾
\overline{INT1}
INT1 外部中断请求1:
0013H
- 定时/计数器T0:
000BH
- 定时/计数器T1:
001BH
- 串行口中断请求:
0023H
- 简单了解TCON、SCON功能。
- TCON是定时控制寄存器,主要用于控制定时/计数器的启动和停止、计数溢出标志和管理外部中断。
- SCON是串行口控制寄存器,主要用于控制、监视串行口的工作状态。
第5章 I/O口应用—显示与开关/键盘输入
-
LED显示器中的发光二极管的两种连接方法是
- (公)共阴极
- (公)共阳极
-
共阴极LED显示器,显示不同数字时的字形码。如‘2’
数字2:需要亮A、B、D、E、G,其他都为低电平。
DP | G | F | E | D | C | B | A |
---|---|---|---|---|---|---|---|
0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 |
即二进制字形码:0101 1011,十六进制字形码:5BH
-
LED数码管动态显示时,一个时间只有一个数码管被点亮。
对 -
为什么要消除按键的机械抖动?
为了确保单片机对一次按键动作只确认一次按键有效,必须消除抖动的影响。软件消除按键机械抖动的原理
在检测到有键按下时,该键所对应的行线为低电平,执行一段延时10ms的子程序后,确认该行线是否仍为低电平,如果仍为低电平,则确认确实有键按下。即消除抖动期的影响。
第6章 AT89S51单片机的定时器/计数器
-
定时器/计数器作定时和计数用时,其计数脉冲分别为
- 作定时用时:把系统时钟振荡器12分频后的脉冲作为计数信号。
- 作计数用时:计数脉冲为P3.4/T0(或P3.5/T1)引脚上的外部输入脉冲,当引脚上发生负跳变时,计数器加1。
-
采用6MHz的晶振,定时4ms,如用定时器方式1时的初值的计算。
T = 1 f o s c × 12 = 1 6 M H z × 12 = 2 μ s X = 2 16 − 4000 μ s 2 μ s = 65536 − 2000 = F 830 H T H x = F 8 H T L x = 30 H T=\frac{1}{f_{osc}}\times12=\frac{1}{6MHz}\times12=2\mu s \\ X=2^{16}-\frac{4000\mu s}{2\mu s}=65536-2000=F830H \\ THx=F8H \\ TLx=30H T=fosc1×12=6MHz1×12=2μsX=216−2μs4000μs=65536−2000=F830HTHx=F8HTLx=30H -
系统时钟为6MHz,编写定时器T0产生500ms定时的程序。
令它工作在方式1:
T = 1 f o s c × 12 = 1 6 M H z × 12 = 2 μ s X = 2 16 − 500000 μ s 2 μ s = 65536 − 250000 < 0 T=\frac{1}{f_{osc}}\times12=\frac{1}{6MHz}\times12=2\mu s \\ X=2^{16}-\frac{500000\mu s}{2\mu s}=65536-250000<0 T=fosc1×12=6MHz1×12=2μsX=216−2μs500000μs=65536−250000<0
计数器不够用,因此可以使用100ms 中断5次的方法代替
X = 2 16 − 100000 μ s 2 μ s = 65536 − 50000 = 3 C B 0 H T L 0 = B 0 H T H 0 = 3 C H X=2^{16}-\frac{100000\mu s}{2\mu s}=65536-50000=3CB0H \\ TL0=B0H\\ TH0=3CH X=216−2μs100000μs=65536−50000=3CB0HTL0=B0HTH0=3CHORG 0000H AJMP MAIN ORG 000BH ; 定时/计数器T0中断服务程序 AJMP INT_0 ; 跳转INT_0子程序 ORG 0100H MAIN: MOV SP, #60H ; 设置堆栈指针 MOV B, #5 ; 设置循环次数 MOV TMOD, #01H ; T0工作于方式1 MOV TL0, #0B0H ; TL0 = B0H MOV TH0, #3CH ; TH0 = 3CH SETB TR0 ; 启动T0 SETB ET0 ; 允许T0中断 SETB EA ; 总中断开启 SJMP $ ; 循环等待中断 INT_0: MOV TL0, #0B0H ; TL0重新赋值 MOV TH0, #3CH ; TH0重新赋值 DJNZ B, LOOP ; 若未到达5次,中断返回 CLR TR0 ; 到达500ms,停止T0计时 LOOP: RETI ; 中断返回 END
第7章 AT89S51单片机的串行口
-
串行口的控制寄存器SCON中,REN的作用
REN:允许串行接收位,由软件置0或1
- REN=1时允许串行口接收数据。
- REN=0时,禁止串行口接收数据。
-
设多机系统中有一主机和3个8051从机。
主机的RXD与从机的TXD相连,主机TXD与从机的RXD端相连。
从机地址分别为01H、02H、03H。写出主机与从机01H的通信过程。- 各个从机允许串口中断,接收方式为方式2或方式3。且
SM2
和REN
置1,使从机处于多机通信接收地址帧的状态。 - 将准备接收数据的 从机地址 发送给各个从机(地址帧第9位为1)。
主机发送地址帧时,各从机RB8=1,且由于SM2=1,中断标志位RI=1,各从机响应中断,在从机中断服务程序中,判断送来的地址和本机地址是否相同,若相同,SM2置0,否则继续维持SM2=1 - 主机传送数据或命令(数据或命令帧的第9位为0)
从机RB8=0,只有SM2=0的从机才能接收该帧,并且接收完成后中断标志RI被置1。其他SM2=1的从机无法使RI置1。 - 结束数据通信并为下一次多机通信做准备。
需预留1~2个“广播地址”,当主机和从机通信完成后,需要将从机再次设置为多机通信模式,以便进行下一次多机通信。一旦接收的数据帧第9位(RB8)为1且地址为广播地址,便将从机的通信模式再次设置为多机模式。
- 各个从机允许串口中断,接收方式为方式2或方式3。且
第8章 AT89S51单片机外部存储器的并行扩展
- P0口是 地址总线 和数据总线分时复用的,因此在扩展时,应使用 地址锁存器 使信号分离。
- 74LS138、74LS373作用。
- 74LS138:3-8译码器,有3个数据端,经译码后产生8种状态。
可将输入端信号转换为某一存储器芯片的“片选”控制信号; - 74LS373:8位锁存器,因P0口兼用数据线和低8位地址线,用此锁存器可以将数据信号和地址信号分时复用。
- 74LS138:3-8译码器,有3个数据端,经译码后产生8种状态。
74LS373:带有三态门的8D锁存器
- 区分外部程序存储器和内部程序存储器的最可靠的方法是看其是被 W R ‾ \overline{WR} WR还是被 P S E N ‾ \overline{PSEN} PSEN信号连接。
第9章 AT89S51单片机的I/O扩展
-
I/O接口和I/O端口有什么区别?
- I/O接口:单片机与外设间的连接电路的总称。
- I/O端口:I/O接口电路中具有单元地址的寄存器或缓存器。
I/O接口的功能是什么?
- 实现和不同外设的速度匹配
- 输出数据锁存
- 输入数据三态缓冲
-
82C55的方式0是无条件的输入输出方式。