当前位置:首页 > MCS51 单片机实验指导书
第二章 实验指导
实验一 实验系统操作与使用
一、 实验目的
1. 了解实验系统的基本结构和组成及其存储空间的分配。 2. 熟悉键盘各个按键的作用及其操作方法。
3. 掌握程序手工输入、检查和执行的方法,并学会执行程序后检查结果的方法。
4. 初步掌握利用设置断点和单步执行进行调试程序的过程和方法。
二、 实验内容
在实验前预习实验系统结构和基本功能的基础上,按照实验指导书的要求,依次进行键盘操作。通过操作和思考,达到以上4个实验目的。
三、 实验前的预习要求
1. 认真预习第一章的内容,在了解实验系统结构组成和基本功能的基础上,特别要对不同键盘的作用和操作要点熟悉。 2. 看懂本实验中给出的示范程序的意义。
四、 实验步骤
在实验系统已接好 +5V 直流稳压电源的情况下,打开稳压电源,系统的上电复位电路一般会使系统在最左边一个 LED 数码管上将显示一个闪动的\提示字符。这表示系统已处于待命状态,可以输入操作。
在任何情况下,按\复位按钮后,系统应该回到待命状态。 在正常操作过程中,一般按MON键后,也可以使系统回到待命状态。如果不能回到待命状态,说明程序已脱离系统监控程序的控制,这种情况下只有通过按复位按钮使其回到待命状态。
在待命状态(即显示提示字符\)的情况下,可以进行以下操作: 1. 程序输入操作 (使用数字、ME、NX和LS键)
把以下一个给出的例1 程序的机器码通过键盘依次输入到实验系统的数据存储器中。
例1 程序:
- 9 -
ORG 1000H 1000 7840
TEST1:
MOV R0,#40H MOV R1,#41H MOV 40H,#0AAH MOV A,@R0 MOV @R1,A MOV R7,#05H INC A DJNZ R7,LOOP MOV DPTR,#2000H
SJMP $ ;= WAIT: SJMP WAIT
1002 7941 1004 7540AA 1007 E6 1008 F7 100B 7F05 100D 04
LOOP:
100E DFFD 1010 902000 1014 80FE
1009 7655 MOV @R0,#55H
1013 F0 MOVX @DPTR,A
⑴ 先用十六进制数字键输入首地址(这里是1000),再按存储器单元检查ME键,这时显示器的后两位将显示十六进制随机数。
⑵ 按数字键 78,在后两位将会用键入的 78 替代原来的随机数,这样就向 1000H 单元输入机器码 78H。若输入数据时输错了数,可以重新输入。但是需要注意,输入数据时一定是成对输入。
⑶ 按NX键,显示的地址值会自动加1,并显示其相应单元中的随机数。 ⑷ 按数字键 40,便把 40H 输入到 1001H 存储单元中。
⑸ 这时如果按LS键,显示的地址值会自动减 1,并且在后两位显示上一个单元的数据值(这里将会显示 78)。
⑹ 重复⑶、⑷的步骤,依次输入后面的机器码,直至程序输入完为止。 2. 存储单元检查操作 (使用ME、NX和LS键)
在显示提示字符\的情况下,输入相应存储单元的4位十六进制数的地址,再按ME键,相应存储单元的内容就显示在右边两个数码管数据位上。 如果要继续检查下一个存储单元或上一个存储单元的内容时,可以分别通过按NX和LS键完成。
请按上述方法检查已输入的程序机器码是否正确。 3. 程序执行操作 (使用MON、数字和EXEC键) 在确认以上检查无误的情况下,执行以上程序。步骤如下: ⑴ 按MON键,中止存储单元检查操作,回到待命状态。
⑵ 键入以上输入程序的首地址1000H 后,按执行程序EXEC键,从起
- 10 -
始地址1000H开始执行该程序,并显示\┏\提示标志。
⑶ 按\复位按钮,回到待命状态,以备检查相关存储单元和寄存器。 4. 程序调试操作 (使用MON、数字、EXEC、STEP和F1键) 最常用的程序调试手段有两个:一是在需要对程序执行中间结果进行检查的指令操作码处设置断点,让执行的程序在适当的地方暂停;二是通过单步执行,一条指令一条指令跟踪执行。在程序暂停时可以对相关寄存器和存储单元进行检查,并通过多处设置断点和与单步执行配合,不断缩小程序出错的范围,以便最终找到并排除程序的错误所在。
4.1 设置断点检查 (使用MON、数字、EXEC和F1键) ⑴ 在 1008H、100BH、1010H 和 1014H 单元分别依次设置断点。 设置断点的方法是在显示提示字符\的情况下,输入断点地址,按F1键,这时将会显示\┏\提示符,表示断点已经设置好。
⑵ 输入程序首地址。
⑶ 按EXEC键执行程序,当程序执行遇到设置的断点处,程序就会暂停,并保护所有的寄存器,同时显示断点地址和该单元的内容,回到操作状态。 ⑷ 检查相关寄存器和存储单元的内容。
⑸ 在遇到断点程序暂停后,再设置下一个断点。 ⑹ 重复⑶~⑸的步骤,直至程序执行完为止。 4.2 单步执行 (使用MON、数字和STEP键) ⑴ 在显示提示字符\的情况下,输入程序首地址。
⑵ 按STEP键,将从输入的地址开始执行一条指令,同时显示下一条将要执行指令的 4 位十六进制数地址(即PC的内容)和下一条指令的操作码。 ⑶ 可以不断按STEP键,让程序指令一条一条地执行,在认为必要的地方,暂停后可以检查相关寄存器和存储单元的内容,看是否符合预想的执行结果。(单步执行并不影响已设置的断点。)
5. 程序执行结果检查操作 (使用MON、数字、ME、RG、NX和LS键) 程序执行结果检查主要有两方面:一是相关存储单元,二是相关寄存器。 5.1 存储单元的检查 (使用数字、ME 键)
存储单元的检查方法见以上“2.存储单元检查操作”一节。这里需要对 2000H 存储单元进行检查,并记录。 (2000H)=
5.2 片内 RAM 通用单元和寄存器的检查 (使用数字、RG键) 寄存器的检查方法:要对片内 RAM 中的通用单元、工作寄存器、专用寄存器等进行检查,可以先输入由实验系统定义的用1位十六进制数作为代号的寄
- 11 -
存器号(见表1-1),或者用2 位十六进制数表示的片内RAM单元和专用寄存器SFR的地址(见表1-2),然后按RG键,即在最右边两位数码管上显示其内容。 表1-1 常用寄存器代号表
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 寄存器代号 0 1 2 3 4 5 6 7 8 9 A B C D E F ──────────────────────────────────────━ 寄存器 R0 R1 R2 R3 R4 R5 R6 R7 DPL DPH ACC B PSW SP PCL PCH ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
表1-2 片内RAM单元和SFR地址表(a)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 地 址 00~7F 80 81 82 83 87 88 89 8A 8B 8C 8D ────────────────────────────────────── 片内RAM或SFR 片内RAM P0 SP DPL DPH PCON TCON TMOD TL0 TL1 TH0 TH1 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
表1-2 片内RAM单元和SFR地址表(b)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 地 址 90 98 99 A0 A8 B0 B8 D0 E0 F0
────────────────────────────────── 片内RAM或SFR P1 SCON SBUF P2 IE P3 IP PSW ACC B
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
这里需要对A、R0、R1、R7、40H、41H、PSW和SP先进行预测,然后检查,
并记录。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 片内寄存器名 A R0 R1 R7 40H 41H PSW SP ──────────────────────────────────── 事先预测数据
──────────────────────────────────── 实际检查数据
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
6. 程序/数据块移动和比较操作 (使用数字、F1、F2、MOVE和COMP键) 实验系统还具有程序/数据块复制和比较功能,可以利用MOVE键把一个在仿真RAM区中的程序/数据块复制到另外一个地址空间,并可以利用COMP键对这两个区的程序/数据块进行比较,看是否一致。
要求把从1000H单元(源程序首地址)开始至1015H(源程序的末地址)的例1程序复制到 0000H 单元(目标首地址)开始的 RAM 区。 ⑴ 输入源程序的首地址 1000,按F1键,这时将显示\┏\; ⑵ 输入源程序的末地址1015,按F2键,这时将显示\┛\;
⑶ 输入目标首地址 0000,按MOVE键后,就把从 1000H~1015H 存储
- 12 -
共分享92篇相关文档