MCS51 单片机实验指导书.docx
《MCS51 单片机实验指导书.docx》由会员分享,可在线阅读,更多相关《MCS51 单片机实验指导书.docx(24页珍藏版)》请在冰豆网上搜索。
MCS51单片机实验指导书
第一章实验系统结构和功能
1.1实验系统结构和组成
整个实验系统是单板结构,由两大部分构成:
一部分是以MCS-51系列单片机中的8031为核心器件,扩展64K字节的27512EPROM芯片作为系统监控程序存储器和32K数据存储器(62256)作为仿真RAM;通过扩展一片8155控制6只8段显示LED数码管作为输出设备和32个按键作为输入设备。
另一部分是各种基本的常用外围接口器件:
包括用一片8255控制的EPROM编程器、8253定时器/计数器电路、A/D转换器ADC0809、D/A转换器DAC0832、由74LS393构成的计数器电路、单脉冲输出电路(可产生正脉冲或负脉冲)、外置8MHz的振荡器电路、用运放LM386驱动的小扬声器、用74LS138构成的地址译码电路、带有驱动电路的小步进马达、12只带有驱动电路的发光二极管和8只逻辑电平开关等。
这些接口器件都有相应插孔可根据需要和核心部分相连。
这是一种开发型的单片机系统,通过RS-232C串行口和DBUG仿真软件通信可以构成一个类似于MICE的仿真开发系统。
在仿真软件的支持下,可以提供汇编语言源程序的编辑、汇编、反汇编、加载和在线仿真运行调试程序等功能。
1.2实验系统功能
实验系统综合了仿真器开发系统和实验学习装置的功能,可以独立利用系统上自带的键盘和LED数码显示器工作,也可以通过RS-232C串行口利用PC机运行DBUG仿真软件进行CPU或EPROM仿真工作,仿真功能基本上和Microtek的MICE仿真器相同。
系统独立工作时有如下基本功能:
1.丰富的编辑功能
系统具有丰富的程序和数据编辑功能,包括程序和数据代码的输入、检查和修改,片内数据存储器(包括专用寄存器)的检查和修改,片外数据存储器的数据输入、检查和修改,地址加1检查和修改,地址减1检查和修改,插入和删除数据,数据块移动和比较等功能。
2.具有不同运行方式
可以运行仿真RAM的用户程序,也可以运行用户使用系统中程序存储器中的程序,也可交替运行,给程序调试带来方便。
3.基本的调试手段和功能
系统提供单步执行、设置断点执行和连续执行等基本调试手段和功能。
以单步或断点方式执行程序后,可以对用户程序进行检查、现场修改,对片内RAM、专用寄存器、片外RAM和扩展的I/O口的状态进行检查和修改。
4.可以提供各种8031单片机原理实验和使用实验用的硬件和软件
可以利用该实验系统进行各种8031汇编语言程序的实验、LED数码管显示器实验、键盘实验、并行接口实验、串行接口实验、定时器/计数器实验、数字控制实验、时间程序控制实验、步进电机控制实验、数据采集和数字测量实验、数字波形发生器实验、数字信号处理(数字滤波、FFT等)实验等。
1.3键盘和显示器的使用方法
1.3.1键盘的使用
实验系统自带4×8=32个键盘,其安排如图1.3-1所示。
左边16个为16进制的数字键0~F,用于输入地址、程序机器码或数据;也同时作为工作寄存器R0~R7、DPTR、PSW、SP、ACC、B寄存器等以及程序计数器PC的代号。
右边16个为功能键。
1.键盘安排示意图
7/R7
8/DPL
9/DPH
A/ACC
TV/ME
EG/DL
PRT
EXEC
4/R4
5/R5
6/R6
B/B
RG/FS
RW/IS
COMP
SCAL
1/R1
2/R2
3/R3
C/PSW
F1/LS
EV/UN
MOVE
STEP
0/R0
F/PCH
E/PCL
D/SP
F2/NX
EC/EP
DAR
MON
图1.3-1系统键盘安排示意图
名称
R0
R1
R2
R3
R4
R5
R6
R7
DPL
DPH
A
B
PSW
SP
PCL
PCH
代号
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
图1.3-2寄存器代码表
2.功能键作用简介
16个功能键中有7个键是双功能键,这些键的功能和系统的历史状态有关,同一个键在不同状态下就表示不同的功能。
⑴TV/METV是进入CRT显示状态/ME是仿真RAM存储单元检查
⑵RG/FSRG是片内RAM和寄存器内容检查/FS是偏移量计算
⑶F1/LSF1是首地址设定/LS是上一个单元检查
⑷F2/NXF2是末地址设定/NX是下一个单元检查
⑸EG/DLEG是EPROM编程/DL是删除1个字节
⑹RW/ISRW是片外数据存储器检查/IS是插入1个字节
⑺EV/UNEV是把编程区的程序移到仿真RAM区/UN表示未用保留
⑻EC/EPEC是检查被编程的EPROM是否全空/编程区EPROM程序和仿真RAM内容比较
⑼PRTTV状态下的打印命令键
⑽COMP程序或数据块比较键
⑾MOVE程序或数据块移动键
⑿DARTV状态下的反汇编命令键
⒀EXEC全速执行或断点执行命令键
⒁SCAL进入串行通信状态键
⒂STEP单步执行命令键
⒃MON返回监控命令键
注:
其中TV、EG、EC/EP、EV、PRT和DAR命令在本系列实验中不需要用。
3.系统状态
系统状态有两种:
待命状态和操作状态。
⑴待命状态
其特征是在显示器的左端显示闪动的“P.”提示符,等待操作。
一般在三种情况下会进入待命状态:
①当系统上电复位后
②当按RESET复位按钮后
③当按MON按键后(如程序不扫描键盘时无效)
在待命状态下,可以进行以下操作之一:
①按任一个数字键,就进入操作状态,并显示该键入的数字。
②按EXEC键,就从0000H单元开始执行仿真RAM中的程序。
③按STEP键,就从0000h单元开始单步执行仿真RAM中的程序。
④按EC键,就检查编程区EPROM芯片是否是全空。
⑤按F1键,进入仿真EPROM状态,这时PC值是指向使用系统的外部程序空间,其特性是显示器上显示“H.......”。
⑥按F2键,进入仿真RAM状态,这时PC值是指向实验系统的仿真RAM中的用户程序空间,其特征是显示器上显示“P.......”。
⑦按TV键,进入用电视屏幕显示状态(这需要通过系统板上TVCRT接口扩展相应接口板才具有电视屏幕显示功能),这时显示器将不显示任何字符。
⑵操作状态
在待命状态输入1位到4位数字键后,便进入操作状态。
当输入4位数字后,第一位数字会不断闪烁,表示可以从第一位开始修改输入的数字,随着修改,闪烁的数字位会后移。
在操作状态下,可以进行以下操作之一:
①按ME键,显示仿真RAM单元中的内容。
(按该键前,若输入的数字不足4位,不足位都作0处理。
)
②按RG键,显示片内RAM(包括专用寄存器)单元中的内容。
(按该键前,若输入的数字超过2位,后2位都作无效位处理。
)
键入1位数字按RG键,按图1.3-2中所示的代号显示相应寄存器中的内容。
键入2位数字按RG键,显示相应片内RAM或专用寄存器单元中的内容。
③输入4位地址后,按RW键,显示片外RAM单元或扩展I/O口中的内容。
④按EXEC键,就从键入的地址开始连续执行仿真RAM中的程序。
⑤按STEP键,就从键入的地址开始单步执行仿真RAM中的程序。
⑥按F1键,显示闪烁的“┏”提示符,表示输入的首地址已被接受,或表示设置输入的地址为断点地址。
⑦按F2键,显示闪烁的“┛”提示符,表示输入的末地址已被接受。
⑧按MON键,就从操作状态回到待命状态。
4.功能键用法
⑴返回监控(MON)键
在操作过程中按此键,将中止或退出当前的操作状态,停止输入数据和命令,返回待命状态,显示闪烁的“P.”提示符。
当执行EXEC命令后,将不能用此键返回待命状态,这时只能用RESET按钮使之返回待命状态。
MON键和RESET按钮的功能相似,不同点是:
MON键在返回代码状态时将会保护用户的工作现场的用户存储器和寄存器的内容;而RESET按钮不会改变用户存储区和外部数据存储器的内容,但有可能改变某些寄存器的内容。
⑵仿真RAM单元检查(ME)键
在待命状态下,输入4位地址,按此键将显示相应仿真RAM单元的内容(输入的地址中可以省去后面的0)。
可以使用LS和NX键检查上一个或下一个单元的内容。
⑶片内RAM单元和寄存器检查(RG)键
输入1位地址,按此键将显示相应寄存器的内容。
输入2位地址,按此键将显示相应片内RAM单元或专用寄存器(SFR)的内容。
可以使用LS和NX键检查上一个或下一个单元的内容。
⑷片外RAM或扩展接口8155片内RAM单元检查(RW)键
输入片外RAM或扩展接口8155片内RAM单元的4位地址,按此键将显示相应单元的内容。
(若用8032芯片,输入2位地址,可以显示8032片内RAM的80H~FFH区的相应单元的内容)
⑸片外RAM区数据块移动(MOVE)键
MOVE键的功能是把片外RAM区的数据块从一个区移到(实际上是复制到)另一个区中。
但目标RAM区要由仿真的状态决定。
在显示“P.”的待命状态下,将把系统仿真RAM中的程序/数据块复制到仿真RAM的另一个区中。
在显示“P......”的仿真RAM状态下,将把系统仿真RAM中的程序/数据块复制到被仿真的使用系统片外RAM数据区中。
操作步骤:
①输入源程序的首地址,按F1键,这时将显示闪烁的“┏”提示符,表示输入的首地址已被接受。
②输入源程序的末地址,按F2键,这时将显示闪烁的“┛”提示符,表示输入的末地址已被接受。
③输入目标首地址
④按MOVE键后,就完成移动(实际上是复制)。
⑹片外RAM区数据块比较(COMP)键
COMP键的功能是把片外RAM区的两个数据块进行比较。
但目标RAM区要由仿真的状态决定。
在显示“P.”的待命状态下,将把系统仿真RAM中的程序/数据块和仿真RAM的另一个区的数据块进行比较。
在显示“P......”的仿真RAM状态下,将把系统仿真RAM中的程序/数据块和被仿真的使用系统片外RAM数据区中的数据块进行比较。
操作步骤:
①输入源程序的首地址,按F1键,这时将显示闪烁的“┏”提示符,表示输入的首地址已被接受。
②输入源程序的末地址,按F2键,这时将显示闪烁的“┛”提示符,表示输入的末地址已被接受。
③输入目标首地址
④按COMP键后,就完成比较。
若比较完全一样,就回到待命状态显示“P.”;若比较不完全相同,就显示比较第一个出错单元的地址和数据。
⑺插入(IS)和删除(DL)键
这两个键是具有相反操作功能的键,只有在仿真RAM单元检查状态下才有效。
在调试机器码程序时,可以用于插入或删除质量或数据的一个字节,可以根据需要多次使用。
这就可以避免许多需要重新输入程序/数据的麻烦。
操作方法:
在检查仿真RAM单元状态下,显示现行地址和数据,按IS键,将在现行地址和XFFFH之间,把所有单元的内容依次向下移动一个字节。
现行地址单元的内容被清零,供插入指令或数据的一个字节。
这时XFFFH单元的内容将被XFFFEH单元的内容取代,XFFFH单元的原内容将丢失。
在显示现行地址和数据的情况下,按DL键,将删除这一地址单元的内容,而把以下单元的内容依次向上移动一个单元,XFFFH单元的内容用0替补。
为了减少插入或删除的影响范围,实验系统把移动范围划分为8个区域:
0000H~1FFFH
2000H~3FFFH
4000H~5FFFH
6000H~7FFFH
8000H~9FFFH
A000H~BFFFH
C000H~DFFFH
E000H~FFFFH
在0000H~1FFFH区内插入或删除,不会影响2000H以上单元的内容。
同样在8000H~9FFFH区中操作不会影响其他区的内容。
⑻程序执行(EXEC)键
EXEC键有两种运行方式:
①连续执行程序方式
在输入4位地址后,按此键便从该地址开始连续执行程序,同时显示器显示“┏”提示符;若不输入地址,在待命状态下按此键,便从0000H地址开始连续执行程序;在存储单元改写状态下按此键,将从现行地址处连续执行程序。
需要注意的是,在连续执行之前,必须检查一下在执行程序的末尾是否安排了循环,要防止程序在执行完后可能又继续往下执行后面的随机代码,那就可能会造成不可预测的后果。
②断点运行程序方式
断点运行方式是程序调试的一种常用有效手段,通过设置仿真RAM中程序的断点逐段运行,可以不断缩小有问题程序的范围。
操作方法:
输入4位断点地址(注意,必须设置在指令操作码单元地址上,不能设置在操作数单元地址上),按F1键,这时将显示“┏”提示符,再输入程序执行的起始地址,按EXEC键,就以断点方式运行程序。
当程序遇到设置的断点就会停下来,并把所有的寄存器保护起来,同时显示该断点地址以及该单元的操作码。
这时就可以查看相关的寄存器和存储单元的内容。
在回到待命状态的情况下,可以根据需要还可以设置新的断点,在设置新的断点后,若再按EXEC键,将会继续从上一个断点处执行程序,直至遇到新断点时暂停。
该实验系统在独立工作时,每次只能设置一个断点,若设置多个断点,则最后依次设置的断点有效,其他断点都将无效。
设置的断点在程序执行后就取消。
需要特别注意的是:
若断点设置不正确或用户使用系统不正常,运行后就不会遇到断点,这种情况下,只有复位才能使系统回到监控的待命状态。
复位后,原设置断点处将有3个单元的内容被破坏,需要人工恢复。
⑼单步执行程序(STEP)键
STEP键在待命状态、操作状态和存储器检查状态下有效。
在待命状态下按此键,将执行0000H地址单元的一条指令;在操作状态下按此键,则按显示器上显示的地址单步执行一条指令;在存储器检查状态下按此键,则按现行地址单步执行一条指令。
每按一次,执行一条指令,并显示下一条即将执行的指令操作码的地址及其单元内的内容,进入操作状态,等待新的命令。
此键命令不会影响设置的断点。
若按STEP键持续1秒以上将进入跟踪执行状态,并以每秒钟500条指令的速度执行程序,同时更新显示程序的执行地址和A累加器内的内容。
这个功能可以用来监视程序的运行路线,对检查延时循环程序特别有用。
松开按键后,便立即停止跟踪,并显示中止时的PC值和A累加器的内容。
⑽相对偏移量计算(FS)键
该键只有在存储器检查状态(即向仿真RAM中输入程序的状态)下有效,用于计算相对转移指令的操作数──偏移量。
操作方法:
在需要填入8位相对转移指令偏移量的单元,输入所要转移目标地址的低字节后按此键,就把计算好的偏移量自动送入偏移量单元。
这时仍处于仿真RAM读写状态,用户可以继续输入程序和数据。
需要注意的是:
转移指令的地址和转移的目标地址之间的差值不能大于8位偏移量所允许的最大范围,否则就要出错。
因课程实验不包括EPROM编程固化操作,所以和其有关的命令键就不在本指导书中介绍。
1.3.2LED数码管显示器的使用
实验系统板上安排了6只八段LED数码管显示器,一般情况,用左边4只显示地址值,右边2只显示相应单元的数据。
监控程序用软件扫描方式在不同的数码管上显示字符。
每个数码管对应一个显示缓冲单元,从右到左显示缓冲单元的地址分别为79H、7AH、7BH、7CH、7DH和7EH。
这6个LED数码管分别通过扩展8155可编程并行接口芯片对其控制,字位受8155的A口控制,其口地址为FF21H,字形受8155的B口控制,其口地址为FF22H。
第二章实验指导
实验一实验系统操作和使用
一、实验目的
1.了解实验系统的基本结构和组成及其存储空间的分配。
2.熟悉键盘各个按键的作用及其操作方法。
3.掌握程序手工输入、检查和执行的方法,并学会执行程序后检查结果的方法。
4.初步掌握利用设置断点和单步执行进行调试程序的过程和方法。
二、实验内容
在实验前预习实验系统结构和基本功能的基础上,按照实验指导书的要求,依次进行键盘操作。
通过操作和思考,达到以上4个实验目的。
三、实验前的预习要求
1.认真预习第一章的内容,在了解实验系统结构组成和基本功能的基础上,特别要对不同键盘的作用和操作要点熟悉。
2.看懂本实验中给出的示范程序的意义。
四、实验步骤
在实验系统已接好+5V直流稳压电源的情况下,打开稳压电源,系统的上电复位电路一般会使系统在最左边一个LED数码管上将显示一个闪动的"P."提示字符。
这表示系统已处于待命状态,可以输入操作。
在任何情况下,按"RESET"复位按钮后,系统应该回到待命状态。
在正常操作过程中,一般按MON键后,也可以使系统回到待命状态。
如果不能回到待命状态,说明程序已脱离系统监控程序的控制,这种情况下只有通过按复位按钮使其回到待命状态。
在待命状态(即显示提示字符"P.")的情况下,可以进行以下操作:
1.程序输入操作(使用数字、ME、NX和LS键)
把以下一个给出的例1程序的机器码通过键盘依次输入到实验系统的数据存储器中。
例1程序:
ORG1000H
10007840TEST1:
MOVR0,#40H
10027941MOVR1,#41H
10047540AAMOV40H,#0AAH
1007E6MOVA,@R0
1008F7MOV@R1,A
10097655MOV@R0,#55H
100B7F05MOVR7,#05H
100D04LOOP:
INCA
100EDFFDDJNZR7,LOOP
1010902000MOVDPTR,#2000H
1013F0MOVX@DPTR,A
101480FESJMP$;=WAIT:
SJMPWAIT
⑴先用十六进制数字键输入首地址(这里是1000),再按存储器单元检查ME键,这时显示器的后两位将显示十六进制随机数。
⑵按数字键78,在后两位将会用键入的78替代原来的随机数,这样就向1000H单元输入机器码78H。
若输入数据时输错了数,可以重新输入。
但是需要注意,输入数据时一定是成对输入。
⑶按NX键,显示的地址值会自动加1,并显示其相应单元中的随机数。
⑷按数字键40,便把40H输入到1001H存储单元中。
⑸这时如果按LS键,显示的地址值会自动减1,并且在后两位显示上一个单元的数据值(这里将会显示78)。
⑹重复⑶、⑷的步骤,依次输入后面的机器码,直至程序输入完为止。
2.存储单元检查操作(使用ME、NX和LS键)
在显示提示字符"P."的情况下,输入相应存储单元的4位十六进制数的地址,再按ME键,相应存储单元的内容就显示在右边两个数码管数据位上。
如果要继续检查下一个存储单元或上一个存储单元的内容时,可以分别通过按NX和LS键完成。
请按上述方法检查已输入的程序机器码是否正确。
3.程序执行操作(使用MON、数字和EXEC键)
在确认以上检查无误的情况下,执行以上程序。
步骤如下:
⑴按MON键,中止存储单元检查操作,回到待命状态。
⑵键入以上输入程序的首地址1000H后,按执行程序EXEC键,从起始地址1000H开始执行该程序,并显示"┏"提示标志。
⑶按"RESET"复位按钮,回到待命状态,以备检查相关存储单元和寄存器。
4.程序调试操作(使用MON、数字、EXEC、STEP和F1键)
最常用的程序调试手段有两个:
一是在需要对程序执行中间结果进行检查的指令操作码处设置断点,让执行的程序在适当的地方暂停;二是通过单步执行,一条指令一条指令跟踪执行。
在程序暂停时可以对相关寄存器和存储单元进行检查,并通过多处设置断点和和单步执行配合,不断缩小程序出错的范围,以便最终找到并排除程序的错误所在。
4.1设置断点检查(使用MON、数字、EXEC和F1键)
⑴在1008H、100BH、1010H和1014H单元分别依次设置断点。
设置断点的方法是在显示提示字符"P."的情况下,输入断点地址,按F1键,这时将会显示"┏"提示符,表示断点已经设置好。
⑵输入程序首地址。
⑶按EXEC键执行程序,当程序执行遇到设置的断点处,程序就会暂停,并保护所有的寄存器,同时显示断点地址和该单元的内容,回到操作状态。
⑷检查相关寄存器和存储单元的内容。
⑸在遇到断点程序暂停后,再设置下一个断点。
⑹重复⑶~⑸的步骤,直至程序执行完为止。
4.2单步执行(使用MON、数字和STEP键)
⑴在显示提示字符"P."的情况下,输入程序首地址。
⑵按STEP键,将从输入的地址开始执行一条指令,同时显示下一条将要执行指令的4位十六进制数地址(即PC的内容)和下一条指令的操作码。
⑶可以不断按STEP键,让程序指令一条一条地执行,在认为必要的地方,暂停后可以检查相关寄存器和存储单元的内容,看是否符合预想的执行结果。
(单步执行并不影响已设置的断点。
)
5.程序执行结果检查操作(使用MON、数字、ME、RG、NX和LS键)
程序执行结果检查主要有两方面:
一是相关存储单元,二是相关寄存器。
5.1存储单元的检查(使用数字、ME键)
存储单元的检查方法见以上“2.存储单元检查操作”一节。
这里需要对2000H存储单元进行检查,并记录。
(2000H)=
5.2片内RAM通用单元和寄存器的检查(使用数字、RG键)
寄存器的检查方法:
要对片内RAM中的通用单元、工作寄存器、专用寄存器等进行检查,可以先输入由实验系统定义的用1位十六进制数作为代号的寄存器号(见表1-1),或者用2位十六进制数表示的片内RAM单元和专用寄存器SFR的地址(见表1-2),然后按RG键,即在最右边两位数码管上显示其内容。
表1-1常用寄存器代号表
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
寄存器代号0123456789ABCDEF
──────────────────────────────────────━
寄存器R0R1R2R3R4R5R6R7DPLDPHACCBPSWSPPCLPCH
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
表1-2片内RAM单元和SFR地址表(a)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
地址00~7F808182838788898A8B8C8D
──────────────────────────────────────
片内RAM或SFR片内RAMP0SPDPLDPHPCONTCONTMODTL0TL1TH0TH1
━━━━━━━━━━━━━━━━━━━━━━━━━━