单片机实验指导书Word格式文档下载.docx
- 文档编号:18432737
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:48
- 大小:1.80MB
单片机实验指导书Word格式文档下载.docx
《单片机实验指导书Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机实验指导书Word格式文档下载.docx(48页珍藏版)》请在冰豆网上搜索。
EA/Vpp程序存储器的内外部选通线,当EA为高电平并且程序地址小于4kB时,读取内部程序存储器指令数据,而超过4kB地址则读取外部指令数据。
如EA为低电平,则不管地址大小,一律读取外部程序存储器指令。
MCS-51单片机的指令时序
MCS-51的时序单位有四个:
节拍、状态、机器周期和指令周期。
1个节拍(P)=1个振荡脉冲周期
1个状态(S)=2个节拍=2个振荡脉冲周期
1个机器周期(T)=6个状态=12个振荡脉冲周期
1个指令周期=几个周期周期
MCS-51单片机存储器结构
程序存储器
MCS-51具有64kB程序存储器寻址空间,对于内部有ROM的AT89SXX等单片机,正常运行时,
则需接高电平,使CPU先从内部的程序存储中读取程序,当PC值超过内部ROM的容量时,才会转向外部的程序存储器读取程序。
0000H—0002H单元,系统复位后,PC为0000H,单片机从0000H单元开始执行程序,如果程序不是从0000H单元开始,则应在这三个单元中放一条无条件转移指令,让CPU直接去执行用户指定的程序。
0003H—002AH,这40个单元各有用途,它们被均匀地分为五段,它们的定义如下:
0003H—000AH
外部中断0中断地址区。
000BH—0012H
定时/计数器0中断地址区。
0013H—001AH
外部中断1中断地址区。
001BH—0022H
定时/计数器1中断地址区。
0023H—002AH
串行中断地址区。
数据存储器
MCS-51单片机的数据存储器在物理上和逻辑上都分为两个地址空间,一个是内部数据存储区和一个外部数据存储区。
MCS-51内部RAM有128或256个字节的用户数据存储(不同的型号有分别)。
MCS-51的数据存储器均可读写,部分单元还可以位寻址。
8051内部RAM共有256个单元,这256个单元分为两部分。
其一是地址从00H—7FH单元(共128个字节)为用户数据RAM。
从80H—FFH地址单元(也是128个字节)为特殊寄存器(SFR)单元。
从图1中可清楚地看出它们的结构分布。
在00H—1FH共32个单元中被均匀地分为四块,每块包含八个8位寄存器,均以R0—R7来命名,称为通用寄存器。
由程序状态字寄存器(PSW)来管理它们,CPU只要定义PSW的第3和第4位(RS0和RS1),即可选中这四组通用寄存器。
对应的编码关系如图2所示。
单元地址
MSB
位地址
LSB
2FH
7FH
7EH
7DH
7CH
7BH
7AH
79H
78H
2EH
77H
76H
75H
74H
73H
72H
71H
70H
2DH
6FH
6EH
6DH
6CH
6BH
6AH
69H
68H
2CH
67H
66H
65H
64H
63H
62H
61H
60H
2BH
5FH
5EH
5DH
5CH
5BH
5AH
59H
58H
2AH
57H
56H
55H
54H
53H
52H
51H
50H
29H
4FH
4EH
4DH
4CH
4BH
4AH
49H
48H
28H
47H
46H
45H
44H
43H
42H
41H
40H
27H
3FH
3EH
3DH
3CH
3BH
3AH
39H
38H
26H
37H
36H
35H
34H
33H
32H
31H
30H
25H
24H
23H
22H
21H
20H
1FH
1EH
1DH
1CH
1BH
1AH
19H
18H
17H
16H
15H
14H
13H
12H
11H
10H
0FH
0EH
0DH
0CH
0BH
0AH
09H
08H
06H
05H
04H
03H
02H
01H
MCS-51有21个特殊功能寄存器,它们被离散地分布在内部RAM的80H—FFH地址中,用户不能修改其结构。
表2是特殊功能寄存器分布一览表。
标识符号
地址
寄存器名称
0E0H
累加器
0F0H
B寄存器
0D0H
程序状态字
81H
堆栈指针
DPTR
82H、83H
数据指针(16位)含DPL和DPH
0A8H
中断允许控制寄存器
0B8H
中断优先控制寄存器
P0
80H
I/O口0寄存器
P1
90H
I/O口1寄存器
P2
0A0H
I/O口2寄存器
P3
0B0H
I/O口3寄存器
87H
电源控制及波特率选择寄存器
98H
串行口控制寄存器
99H
串行数据缓冲寄存器
88H
定时控制寄存器
89H
定时器方式选择寄存器
8AH
定时器0低8位
8CH
定时器0高8位
8BH
定时器1低8位
8DH
定时器1高8位
程序计数器PC(programCounter)
PC是一个16位的计数器,用于存放一条要执行的指令地址,寻址范围为64kB,PC有自动加1功能,即完成了一条指令的执行后,其内容自动加1。
PC本身并没有地址,因而不可寻址,用户无法对它进行读写,但是可以通过转移、调用、返回等指令改变其内容,以控制程序按我们的要求去执行。
累加器ACC(Accumulator)
累加器A是一个最常用的专用寄存器,大部分单操作指令的一个操作数取自累加器,很多双操作数指令中的一个操作数也取自累加器。
加、减、乘、除法运算的指令,运算结果都存放于累加器A或AB累加器对中。
寄存器B
在乘除法指令中,乘法指令中的两个操作数分别取自累加器A和寄存器B,其结果存放于AB寄存器对中。
除法指令中,被除数取自累加器A,除数取自寄存器B,结果商存放于累加器A,余数存放于寄存器B中。
程序状态字(ProgramStatusWord)
程序状态字是一个8位寄存器,用于存放程序运行的状态信息,这个寄存器的一些位可由软件设置,有些位则由硬件运行时自动设置的。
寄存器的各位定义如下,其中PSW.1是保留位,未使用。
下表是它的功能说明,并对各个位的定义介绍如下:
位序
PSW.7
PSW.6
PSW.5
PSW.4
PSW.3
PSW.2
PSW.1
PSW.0
位标志
CY
AC
F0
RS1
RS0
OV
-
P
PSW.7(CY)
进位标志位,此位有两个功能:
一是存放执行某写算数运算时,存放进位标志,可被硬件或软件置位或清零。
二是在位操作中作累加位使用。
PSW.6(AC)
辅助进位标志位,当进行加、减运算时当有低4位向高4位进位或借位时,AC置位,否则被清零。
AC辅助进位位也常用于十进制调整。
PSW.5(F0)
用户标志位,供用户设置的标志位。
PSW.4、PSW.3(RS1和RS0)
寄存器组选择位。
可参见本章的图2定义。
PSW.2(OV)
溢出标志。
带符号加减运算中,超出了累加器A所能表示的符号数有效范围(-128—+127)时,即产生溢出,OV=1。
表明运算运算结果错误。
如果OV=0,表明运算结果正确。
PSW.0(P)
奇偶校验位。
声明累加器A的奇偶性,每个指令周期都由硬件来置位或清零,若值为1的位数奇数,则P置位,否则清零。
数据指针(DPTR)
数据指针为16位寄存器,编程时,既可以按16位寄存器来使用,也可以按两个8位寄存器来使用,即高位字节寄存器DPH和低位字节DPL。
堆栈指针SP(StackPointer)
堆栈是一种数据结构,它是一个8位寄存器,它指示堆栈顶部在内部RAM中的位置。
系统复位后,SP的初始值为07H,使得堆栈实际上是从08H开始的。
I/O口专用寄存器(P0、P1、P2、P3)
I/O口寄存器P0、P1、P2和P3分别是MCS-51单片机的四组I/O口锁存器。
数据传送都统一使用MOV指令来进行,这样的好处在于,四组I/O口还可以当作寄存器直接寻址方式参与其他操作。
定时/计数器(TL0、TH0、TL1和TH1)
MCS-51单片机中有两个16位的定时/计数器T0和T1,它们由四个8位寄存器组成的,两个16位定时/计数器却是完全独立的。
我们可以单独对这四个寄存器进行寻址,但不能把T0和T1当作16位寄存来使用。
定时/计数器方式选择寄存器(TMOD)
TMOD寄存器是一个专用寄存器,用于控制两个定时计数器的工作方式。
串行数据缓冲器(SBUF)
串行数据缓冲器SBUF用来存放需发送和接收的数据,它由两个独立的寄存器组成,一个是发送缓冲器,另一个是接收缓冲器,要发送和接收的操作其实都是对串行数据缓冲器进行。
MCS-51定时/计数器
定时/计数器的工作方式
MCS-51单片机内部的定时/计数器的结构如图所示,定时器T0特性功能寄存器TL0(低8位)和TH0(高8位)构成,定时器T1由特性功能寄存器TL1(低8位)和TH1(高8位)构成。
特殊功能寄存器TMOD控制定时寄存器的工作方式,TCON则用于控制定时器T0和T1的启动和停止计数,同时管理定时器T0和T1的溢出标志等。
TMOD和TCON这两个特殊功能寄存器的格式参见下表:
[1].
定时/计数器的方式控制字TMOD,字节地址为89H,其格式如表1:
D7
D6
D5
D4
D3
D2
D1
D0
GATA
M1
M0
←T1方式字段→
←T0方式字段→
[2].
定时器控制积存器TCON,字节地址为88H,位地址为88H—8FH,其格式如表2:
TCON结构
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
MCS-51的中断系统
[2].中断处理流程
CPU响应中断请求后,就立即转入执行中断服务程序。
不同的中断源、不同的中断要求可能有不同的中断处理方法,但它们的处理流程一般都如下所述。
现场保护和现场恢复
中断开始前需将个有关寄存器的内容压入堆栈进行保存,以便在恢复原来程序时使用。
中断服务程序完成后,继续执行原先的程序,就需把保存的现场内容从堆栈中弹出,恢复积存器和存储单元的原有内容。
中断打开和中断关闭
在中断处理进行过程中,可能又有新的中断请求到来,这里规定,现场保护和现场恢复的操作是不允许打扰的,否则保护和恢复的过程就可能使数据出错,为此在进行现场保护和现场恢复的过程中,必须关闭总中断,屏蔽其它所有的中断,待这个操作完成后再打开总中断,以便实现中断嵌套。
中断服务程序
中断服务程序就是执行中断处理的具体内容,一般以子程序的形式出现。
中断返回
在MCS-51单片机中,中断返回是通过一条专门的指令RETI实现的。
[3].MCS-51的中断源
8051有5个中断源,它们是两个外中断INT0(P3.2)和INT1(P3.3)、两个片内定时/计数器溢出中断TF0和TF1,一个是片内串行口中断TI或RI,这几个中断源由TCON和SCON两个特殊功能寄存器进行控制。
TCON寄存器的结构如下:
位地址
8FH
8EH
IE1:
外部边沿触发中断1请求标志,其功能和操作类似于TF0。
IT1:
外部中断1类型控制位,IT1=1,边沿触发。
IT=0是电平触发。
IE0:
外部边沿触发中断0请求标志,其功能和操作类似于IE1。
IT0:
外部中断0类型控制位,其功能和操作类似于IE1。
SCON是串行口控制寄存器,地址为98H,其格式如下:
TI
RI
TI:
MCS-51串行口的发送中断标志,在串行口以方式0发送时,每当发送完8位数据,由硬件置位。
如果以方式1、方式2或方式3发送时,在发送停止位的开始时TI被置1,TI=1表示串行发送器正向CPU发出中断请求,向串行口的数据缓冲器SBUF写入一个数据后就立即启动发送器继续发送。
但是CPU响应中断请求后,转向执行中断服务程序时,并不清零TI,TI必须由用户的中断服务程序清“0”,即中断服务程序必须有“CLRTI”或“ANLSCON,#0FDH”等指令来清零TI。
RI:
串行口接收中断标志.若串行口接收器允许接收,并以方式0工作,每当接收到8位数据时,RI被置1,若以方式1、2、3方式工作,当接收到半个停止位时,TI被置1,当串行口一方式2或3方式工作,且当SM2=1时,仅当接收到第9位数据RB8为1后,同时还要在接收到半个停止位时,RI被置1。
RI为1表示串行口接收器正向CPU申请中断。
同样RI标志栩栩如生由用户的软件清“0”。
[4].中断的控制
IE的结构格式如下。
EA
ES
ET1
EX1
ET0
EX0
AFH
ACH
ABH
AAH
A9H
A8H
EA:
中断总控制位,EA=1,CPU开放中断。
EA=0,CPU禁止所有中断。
ES:
串行口中断控制位,ES=1允许串行口中断,ES=0,屏蔽串行口中断。
ET1:
定时/计数器T1中断控制位。
ET1=1,允许T1中断,ET1=0,禁止T1中断。
EX1:
外中断1中断控制位,EX1=1,允许外中断1中断,EX1=0,禁止外中断1中断。
ET0:
定时/计数器T0中断控制位。
ET1=1,允许T0中断,ET1=0,禁止T0中断。
EX0:
外中断0中断控制位,EX1=1,允许外中断0中断,EX1=0,禁止外中断0中断。
MCS-51有两个中断优先级,即高优先级和低优先级,每个中断源都可设置为高或低中断优先级。
MCS-51还有一个申请优先级寄存IP,IP的格式如下,字节地址是B8H。
PS
PT1
Px1
PT0
PX0
BCH
BBH
BAH
B9H
B8H
PS:
串行口中断口优先级控制位,PS=1,串行口中断声明为高优先级中断,PS=0,串行口定义为低优先级中断。
PT1:
定时器1优先级控制位。
PT1=1,声明定时器1为高优先级中断,PT1=0定义定时器1为低优先级中断。
PX1:
外中断1优先级控制位。
PT1=1,声明外中断1为高优先级中断,PX1=0定义外中断1为低优先级中断。
PT0:
定时器0优先级控制位。
PT1=1,声明定时器0为高优先级中断,PT1=0定义定时器0为低优先级中断。
PX0:
外中断0优先级控制位。
PT1=1,声明外中断0为高优先级中断,PX1=0定义外中断0为低优先级中断。
[5].中断的响应
中断响应的主要内容就是由硬件自动生成一条长调用LCALLaddr16指令,这里的addr16就是程序存储器中相应的中断区入口地址,这些中断源的服务程序入口地址如下:
中断源
入口地址
外中断0
0003H
定时/计数器0
000BH
外中断1
0013H
001BH
串行口中断
0023H
生成LCALL指令后,CPU紧跟着便执行之.首先将PC(程序计数器)的内容压入堆栈保护断点,然后把中断入口地址赋予PC,CPU便按新的PC地址执行程序。
MCS-51的串行通信口
MCS-51单片机内部有一个全双工的串行通信口,即串行接收和发送缓冲器(SBUF),这两个在物理上独立的接收发送器,既可以接收数据也可以发送数据。
但接收缓冲器只能读出不能写入,而发送缓冲器则只能写入不能读出,它们的地址为99H。
这个通信口既可以用于网络通信,亦可实现串行异步通信,还可以构成同步移位寄存器使用。
串行数据通信两种形式
异步通信
接收器和发送器有各自的时钟,它们的工作是非同步的,异步通信用一帧来表示一个字符。
同步通信
同步通信格式中,发送器和接收器由同一个时钟源控制,同步传输方式去掉了这些起始位和停止位,只在传输数据块时先送出一个同步头(字符)标志即可。
串行数据通信的传输速率
串行数据传输速率有两个概念,即每秒转送的位数bps(Bitpersecond)和每秒符号数—波特率(Bandrate),在具有调制解调器的通信中,波特率与调制速率有关。
MCS-51的串行口和控制寄存器
MCS-51单片机串行口寄存器结构如图3所示。
SBUF为串行口的收发缓冲器,它是一个可寻址的专用寄存器,其中包含了接收器和发送器寄存器,可以实现全双工通信。
但这两个寄存器具有同一地址(99H)。
MCS-51的串行数据传输很简单,只要向发送缓冲器写入数据即可发送数据。
而从接收缓冲器读出数据即可接收数据。
接收缓冲器前有一级输入移位寄存器,目的在于接收数据时避免发生数据帧重叠现象。
而发送数据时就不需要这样设置,因为发送时,CPU是主动的,不可能出现这种现象。
串行通信控制寄存器SCON
SCON是专用寄存器,用于串行数据的通信控制,单元地址是98H,其结构格式如下:
SM0
SM1
SM2
REN
TB8
RB8
9FH
9EH
9CH
9BH
9AH
各控制位功能介绍如下:
(1).SM0、SM1:
串行口工作方式控制位。
(SM0,SM1)=00
方式0(SM0,SM1)=01
方式1
(SM0,SM1)=10
方式2(SM0,SM1)=11
方式3
(2).SM2:
多机通信控制位。
多机通信是工作于方式2和方式3,SM2位主要用于方式2和方式3。
接收状态,当串行口工作于方式2或3,以及SM2=1时,只有当接收到第9位数据(RB8)为1时,才把接收到的前8位数据送入SBUF,且置位RI发出中断申请,否则会将接受到的数据放弃。
当SM2=0时,就不管第位数据是0还是1,都难得数据送入SBUF,并发出中断申请。
工作于方式0时,SM2必须为0。
(3).REN:
允许接收位。
REN用于控制数据接收的允许和禁止,REN=1时,允许接收,REN=0时,禁止接收。
(4).TB8:
发送接收数据位8。
在方式2和方式3中,TB8是要发送的——即第9位数据位。
在多机通信中同样亦要传输这一位,并且它代表传输的地址还是数据,TB8=0为数据,TB8=1时为地址。
(5).RB8:
接收数据位8。
在方式2和方式3中,RB8存放接收到的第9位数据,用以识别接收到的数据特征。
(6).TI:
发送中断标志位。
可寻址标志位。
方式0时,发送完第8位数据后,由硬件置位,其它方式下,在发送或停止位之前由硬件置位,因此,TI=1表示帧发送结束,TI可由软件清“0”。
(7).RI:
接收中断标志位。
接收完第8
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 实验 指导书
![提示](https://static.bdocx.com/images/bang_tan.gif)