实验一单片机在线仿真器的使用 实验目的 1.初步了解MCS-51系列单片机及其存储器构成、对存储器的管理方法; 2.初步了解MCS-51系列单片机指令系统; 3.熟悉爱迪克(AEDK)仿真开发系统及其调试软件LCA51的基本操作方法 4.掌握用仿真开发系统调试和运行程序的基本方法 二、实验器材 微机一台,爱迪克单片机在线仿真开发系统(AEDK51W)一台,MCS-51实验箱(EXP51) 三、实验原理 存储器是单片机系统重要组成部件之一,它有多种分类方法,在此简述其中的两种 按照存储内容和存取方式不同,单片机系统的存储器可分为两类。一类是程序存储器, 用于存放程序代码(有时还有一些常数数据)。通常情况,程序代码和常数数据只能被读取, 而不能被任意改写,因而程序存储器是只读(ROM)的。另一类是数据存储器,用于存放 程序运行时的工作变量和数据,如原始数据、运算中间/最终结果、数据暂存/缓冲、标志字 节/位等,有时也用于存放待调试的程序。数据存储器中的数据可根据需要写入或读出 而数据存储器是随机存取(RAM)的。 按照存储器物理位置的不同,单片机系统的程序存储器和数据存储器都可有片内和片 外之分。片内外程序存储器地址空间统一编址。 访问(可读写)片外数据存储器的指令用MOVX,访问(只能读)程序存储器的指令 用MOVC。 MCS-51系列单片机按照片内部ROM配置种类可分为:无ROM的8031型、有ROM( 可一次性写入)的8051型、有 EPROM(紫外线擦除,可重写入)的8751型,以及有 EEPROM (电可擦除,可重写入)的8951型 MCS-51系列单片机按照片内ROM、RAM、定时器计数器、中断源数量等的不同,可 分为51和52两个子系列:就ROM而言,51子系列的,片内有4K字节的ROM;而52子系列 的,片内有8K字节的ROM MCS-51子系列单片机片内RAM共有256字节,其低128字节全部是用户可读写的,高 128字节区域为专用寄存器区。 低128字节的区域都可以按字节为单位进行读写访问。如表1.2所示,从00H-1FH字节 单元共32个字节的区域常可以用作工作寄存器,字节地址为00H-07H、08H-0FH、10H 17H、18H-1FH四个区域分别称为0 3工作寄存器区。每个工作寄存器区的8个 字节单元分别对应R0、R1、R7共8个工作寄存器。每个R寄存器可以根据程序状态字寄存 器PSW(如表1.1)中RS1/RS0的设置00、01、10、11,对应某一工作寄存器区中的一个 字节单元。如,工作寄存器R0可以对应00H、08H、10H或18H字节单元
实验一 单片机在线仿真器的使用 一、 实验目的 1. 初步了解MCS-51系列单片机及其存储器构成、对存储器的管理方法; 2. 初步了解MCS-51系列单片机指令系统; 3. 熟悉爱迪克(AEDK)仿真开发系统及其调试软件LCA51的基本操作方法; 4. 掌握用仿真开发系统调试和运行程序的基本方法。 二、 实验器材 微机一台,爱迪克单片机在线仿真开发系统(AEDK51W)一台,MCS-51实验箱(EXP51) 一套。 三、 实验原理 存储器是单片机系统重要组成部件之一,它有多种分类方法,在此简述其中的两种。 按照存储内容和存取方式不同,单片机系统的存储器可分为两类。一类是程序存储器, 用于存放程序代码(有时还有一些常数数据)。通常情况,程序代码和常数数据只能被读取, 而不能被任意改写,因而程序存储器是只读(ROM)的。另一类是数据存储器,用于存放 程序运行时的工作变量和数据,如原始数据、运算中间/最终结果、数据暂存/缓冲、标志字 节/位等,有时也用于存放待调试的程序。数据存储器中的数据可根据需要写入或读出,因 而数据存储器是随机存取(RAM)的。 按照存储器物理位置的不同,单片机系统的程序存储器和数据存储器都可有片内和片 外之分。片内外程序存储器地址空间统一编址。 访问(可读写)片外数据存储器的指令用MOVX,访问(只能读)程序存储器的指令 用MOVC。 MCS-51系列单片机按照片内部ROM配置种类可分为:无ROM的8031型、有ROM(只 可一次性写入)的8051型、有EPROM(紫外线擦除,可重写入)的8751型,以及有EEPROM (电可擦除,可重写入)的8951型。 MCS-51系列单片机按照片内ROM、RAM、定时器/计数器、中断源数量等的不同,可 分为51和52两个子系列:就ROM而言,51子系列的,片内有4K字节的ROM;而52子系列 的,片内有8K字节的ROM。 MCS-51子系列单片机片内RAM共有256字节,其低128字节全部是用户可读写的,高 128字节区域为专用寄存器区。 低128字节的区域都可以按字节为单位进行读写访问。如表1.2所示,从00H-1FH字节 单元共32个字节的区域常可以用作工作寄存器,字节地址为00H-07H、08H-0FH、10H -17H、18H-1FH四个区域分别称为0、1、2、3工作寄存器区。每个工作寄存器区的8个 字节单元分别对应R0、R1、…R7共8个工作寄存器。每个R寄存器可以根据程序状态字寄存 器PSW(如表1.1)中 RS1/RS0 的设置 00、01、10、11,对应某一工作寄存器区中的一个 字节单元。如,工作寄存器R0可以对应00H、08H、10H或18H字节单元。 1
表1.1PSW寄存器 CY AC FO RSI RSO CV-IP 从20一2FH字节单元共16个字节的区域,还可以按位寻址。此区域共有从00H 01H、.7EH、7FH共128个可寻址位。 表1.2MCS-51系列单片机片内RAM (说明:表中两列加黑字体数字分别是以十六进制数和十进制数表示的内部 RAM字节地址;斜字体数字是以十六进制数表示的可位寻址区的位地址) 2H676665646362616044 2637|363533332|33 25H2F|2E 2C2B24292837 23HF⊥EDc1B19l 20H 0 05040302010032 R7 1FH 作寄存器区3 R7 OFH 作寄存器区1 存器
2 表 1.1 PSW 寄存器 CY AC F0 RS1 RS0 CV - P 从20-2FH字节单元共16个字节的区域,还可以按位寻址。此区域共有从00H、 01H、…7EH、7FH共128个可寻址位。 表 1.2 MCS-51 系列单片机片内 RAM (说明:表中两列加黑字体数字分别是以十六进制数和十进制数表示的内部 RAM字节地址;斜字体数字是以十六进制数表示的可位寻址区的位地址) 7FH 127 . . . . 30H 48 2FH 7F 7E 7D 7C 7B 7A 79 78 47 2EH 77 76 75 74 73 72 71 70 46 2DH 6F 6E 6D 6C 6B 6A 69 68 45 2CH 67 66 65 64 63 62 61 60 44 2BH 5F 5E 5D 5C 5B 5A 59 58 43 2AH 57 56 55 54 53 52 51 50 42 29H 4F 4E 4D 4C 4B 4A 49 48 41 28H 47 46 45 44 43 42 41 40 40 27H 3F 3E 3D 3C 3B 3A 39 38 39 26H 37 36 35 34 33 32 31 30 38 25H 2F 2E 2D 2C 2B 2A 29 28 37 24H 27 26 25 24 23 22 21 20 36 23H 1F 1E 1D 1C 1B 1A 19 18 35 22H 17 16 15 14 13 12 11 10 34 21H 0F 0E 0D 0C 0B 0A 09 08 33 可 位 寻 址 区 20H 07 06 05 04 03 02 01 00 32 R7 1FH 31 .. 工作寄存器区 3 .. R0 18H 24 R7 17H 23 .. 工作寄存器区 2 .. R0 10H 16 R7 0FH 15 .. 工作寄存器区 1 .. R0 08H 8 R7 07H 7 .. 工作寄存器区 0 .. R0 00H 0
用户单片机系统(或实验单片机系统)在开发(或实验)过程中,用户程序编写、修 改、调试的过程需反复进行。在开发(或实验)过程中,把需要反复修改的程序直接装入 用户自己的程序存储器,显然是不方便和低效的。通常的做法是把需要调试的程序装在单 片机仿真开发系统的数据存储器,即所谓仿真RAM中,进行程序的编写、修改和调试。 四、参考程序 下面是实现两个四位十进制数(8421BCD码表示)相加的参考程序。在该程序中,被 加数和加数按低字节在先(地址值较小),高字节在后(地址值较大)的顺序,分别存放 在以8500H单元为首地址的程序存储器和以000H单元为首地址的外部(指单片机外部) 数据存储器中,相加的和数存放在内部(指单片机内部)数据存储器地址为20H(低2位) 2H、22H(可能的最高位)的三个单元中。(请注意区分上述三种不同的存储器) FILE NAME F1l ASM ORG 0000H ORG 0100H START: MOV RO. #20H 设置内部数据存储器间接寻址指针 MOV DPTR,#8500H;设置程序存储器数据指针 CLR A MOVC A @A+DPTR 读程序存储器数据 MOV RI.A CLR A MOVC A OA+DPTR MOV R2. A MOV DPTR,#0000H;设置外部数据存储器指针 MOVX A. DPTR ADD A R1 十进制数加法调整 写内部数据存储器(间接寻址只能eR0或@R1) INC DPTR INC RO MOVX A. ODPTR ADDC A R2 带进位加 MOV @RO. A CLR A MOV ACC0 C MOV ORO. A HERE S JMP S 原地循环 END (注:用仿真开发系统调试和运行程序时,是把仿真RAM作为用户的程序存储器。)
用户单片机系统(或实验单片机系统)在开发(或实验)过程中,用户程序编写、修 改、调试的过程需反复进行。在开发(或实验)过程中,把需要反复修改的程序直接装入 用户自己的程序存储器,显然是不方便和低效的。通常的做法是把需要调试的程序装在单 片机仿真开发系统的数据存储器,即所谓仿真RAM中,进行程序的编写、修改和调试。 四、 参考程序 下面是实现两个四位十进制数(8421BCD码表示)相加的参考程序。在该程序中,被 加数和加数按低字节在先(地址值较小),高字节在后(地址值较大)的顺序,分别存放 在以8500H单元为首地址的程序存储器[注] 和以0000H单元为首地址的外部(指单片机外部) 数据存储器中,相加的和数存放在内部(指单片机内部)数据存储器地址为 20H(低2位)、 21H、22 H(可能的最高位)的三个单元中。(请注意区分 ....上述三种不同的存储器) ;FILE NAME :F11.ASM ORG 0000H AJMP START ORG 0100H START: MOV R0,#20H ;设置内部数据存储器间接寻址指针 MOV DPTR,#8500H ;设置程序存储器数据指针 CLR A MOVC A,@A+DPTR ;读程序存储器数据 MOV R1,A CLR A INC DPTR MOVC A,@A+DPTR MOV R2,A MOV DPTR,#0000H ;设置外部数据存储器指针 MOVX A,@DPTR ADD A,R1 DA A ;十进制数加法调整 MOV @R0,A ;写内部数据存储器(间接寻址只能@R0或@R1) INC DPTR INC R0 MOVX A,@DPTR ADDC A,R2 ;带进位加 DA A MOV @R0,A INC R0 CLR A MOV ACC.0,C MOV @R0,A HERE: SJMP $ ;原地循环 END (注:用仿真开发系统调试和运行程序时,是把仿真RAM作为用户的程序存储器。) 3
五、实验内容 1.调试、运行参考程序,学习爱迪克(AEDK)仿真开发系统及其调试软件LCA51的基 本操作方法和用仿真开发系统调试、运行程序的基本方法 2.自编一个程序,实现N(2<N≤10)个四位十进制数相加的算术运算。N个四位十 进制数存放在程序存储器,相加数的个数存放在外部数据存储器,和数存放在内部 存储器 六、实验步骤 汇编语言源程序的编辑、编译和目标程序的详细运行方法,可参阅《爱迪克单片机 开发系统使用说明》和《CA51(Win9x版本)使用手册》,在LCA51软件操作窗口的 “帮助”菜单中也可检索相关内容。主要操作步骤如下(也见图1.1): 1.在整个仿真系统联机上电后运行LCA51软件 2.在窗口下编辑、修改(或直接“打开”)汇编语言参考程序F11.ASM,确认源程 序正确后,先执行保存源程序的操作,然后进行编译。编译无误后,执行“加载调 试”命令(即加载扩展名为.obj的可执行目标程序)。 注意:LCA51不支持在 WINDOWS下的长文件名和长路径。LCA5编译器提示找不到实 际已经保存的源程序,可能与文件名或路径太长有关。 3.用修改存储器的操作,把:①被加数存放在程序存储器的8500H和8501H单元; ②加数存放在外部数据存储器的0000和0001H单元:③内部数据存储器的20H 21H和22H单元清零。 例:在程序存储器中输入十进制被加数4567,在外部数据存储器中输入十进制加 数6789,内部数据存储器的20H2H单元清零 说明:修改存储器的操作可在“数据区窗口”中进行。打开相关存储器窗口,利用 鼠标右键菜单设置为“允许直接修改”后,即可直接修改该存储器相关区域的数据。 其它有关操作方法,可参阅使用手册。 4.按单步、断点、全速运行、设置PC指针等不同方式调试、运行该程序,可用“数据 区窗口”、“观察窗口”等方式检查中间结果和最后结果是否正确。记录、分析实 验结果。 设置断点要领提示 1)设置断点可用移动光标的方式。 2)事先分析程序与数据运算过程的对应关系,以确定在合适的指令处设置断点 5.修改数据存储地址,输入其它数据,重复执行上述步骤1-5,以熟悉爱迪克(AEDK) 仿真开发系统的基本操作方法、掌握用仿真开发系统调试、运行程序的基本方法并 获得正确结果。 6.按类似的方法、步骤编辑、调试、运行N(2<N≤10)个四位十进制数相加的自编 程序。记录、分析实验结果
五、 实验内容 1. 调试、运行参考程序,学习爱迪克(AEDK)仿真开发系统及其调试软件LCA51的基 本操作方法和用仿真开发系统调试、运行程序的基本方法。 2. 自编一个程序,实现 N (2<N≤10)个四位十进制数相加的算术运算。N个四位十 进制数存放在程序存储器,相加数的个数存放在外部数据存储器,和数存放在内部 存储器。 六、 实验步骤 汇编语言源程序的编辑、编译和目标程序的详细运行方法,可参阅《爱迪克单片机 开发系统使用说明》和《LCA51(Win9x版本)使用手册》,在LCA51 软件操作窗口的 “帮助”菜单中也可检索相关内容。主要操作步骤如下(也见图 1.1): 1. 在整个仿真系统联机上电后运行 LCA51 软件。 2. 在窗口下编辑、修改(或直接“打开”) 汇编语言参考程序 F11.ASM,确认源程 序正确后,先执行保存源程序的操作,然后进行编译。编译无误后,执行“加载调 试”命令(即加载扩展名为 .obj 的可执行目标程序)。 注意:LCA51不支持在WINDOWS下的长文件名和长路径。LCA51编译器提示找不到实 际已经保存的源程序,可能与文件名或路径太长有关。 3. 用修改存储器的操作,把:①被加数存放在程序存储器的 8500H 和 8501H 单元; ②加数存放在外部数据存储器的 0000H 和 0001H 单元;③内部数据存储器的20H、 21H和22H单元清零。 例:在程序存储器中输入十进制被加数 4567,在外部数据存储器中输入十进制加 数 6789,内部数据存储器的20H—22H单元清零。 说明:修改存储器的操作可在“数据区窗口”中进行。打开相关存储器窗口,利用 鼠标右键菜单设置为“允许直接修改”后,即可直接修改该存储器相关区域的数据。 其它有关操作方法,可参阅使用手册。 4. 按单步、断点、全速运行、设置PC指针等不同方式调试、运行该程序,可用“数据 区窗口”、“观察窗口”等方式检查中间结果和最后结果是否正确。记录、分析实 验结果。 设置断点要领提示: 1) 设置断点可用移动光标的方式。 2) 事先分析程序与数据运算过程的对应关系,以确定在合适的指令处设置断点。 5. 修改数据存储地址,输入其它数据,重复执行上述步骤1—5,以熟悉爱迪克(AEDK) 仿真开发系统的基本操作方法、掌握用仿真开发系统调试、运行程序的基本方法并 获得正确结果。 6. 按类似的方法、步骤编辑、调试、运行 N(2<N≤10)个四位十进制数相加的自编 程序。记录、分析实验结果。 4
桌面启动LCA51 说明:框图中黑体字是LCA51软 件的一级菜单项目名,斜杠后 N 斜体字为子菜单项目名。 已设置通讯口 仿真机? 设量通讯COM1、波特率 机AEDK5W趣 文件新建/打开 实验用程序不必打开工程 (自动)进入编辑状态 (关闭工程) 汇编语言格式? 查看/语法着色一汇编语言 编辑修改源程序 选用短路径和短文件名 保存源程序·ASM 实验程序存盘 编译通过? 查看有关窗口:/视察窗口 数据区窗口(RDM内 调试/单步断点设P指针 RAM/SFR)。程序暂停运行时 /全速运行复位总清 检查结果是否正常 成功? 结束 图1.1LCA51软件操作流程示意图 七、思考题 1.本次实验的参考程序中“SJMP$”是必需的吗?如果没有“SJMP$”,程序运行后 能否得到正确的结果?为什么? 2.为什么仿真器的电源关断过后要重新运行程序,必须重新加载程序? 3.本实验箱上程序存储器和外部数据存储器的最大地址各是多少?注意参考本讲义 插页一之EXP51实验板电路图,其中程序存储器为27512(电路元件标号为D5) 外部数据存储器为62256(D4)。 4.在参考程序中,可以把被加数存在程序存储器的100H地址单元吗?为什么? 5.请说明从本实验板外部数据存储器的7F0H地址单元读出数据AAH时,外部数据 存储器芯片各管脚的电平状态。 八、实验报告附加要求 画出N(2<N≤10)个四位十进制数相加程序的流程图,简要注释该程序
Y 编辑修改源程序 保存源程序 •ASM 查看/语法着色-汇编语言 汇编语言格式? N 调试/单步/断点/设PC指针 /全速运行/复位/总清 桌面启动LCA51 文件/新建/打开 (自动)进入编辑状态 N N Y 已设置通讯口 N /仿真机? 设置/通讯口COM1、波特率/ 仿真机AEDK51W /测试 编译通过? 成功? 实验用程序不必打开工程 (/关闭工程 ) 查看有关窗口:/观察窗口/ 数据区窗口 (/ROM/ 内 外 RAM/SFR )。程序暂停运行时 检查结果是否正常。 选用短路径和短文件名, 实验程序存盘 Y 结束 图1.1 LCA51软件操作流程示意图 说明:框图中黑体字是LCA51软 件的一级菜单项目名,斜杠后 斜体字为子菜单项目名。 七、 思考题 1. 本次实验的参考程序中“SJMP $”是必需的吗?如果没有“SJMP $”,程序运行后 能否得到正确的结果?为什么? 2. 为什么仿真器的电源关断过后要重新运行程序,必须重新加载程序? 3. 本实验箱上程序存储器和外部数据存储器的最大地址各是多少?注意参考本讲义 插页一之 EXP51 实验板电路图,其中程序存储器为 27512(电路元件标号为 D5), 外部数据存储器为 62256(D4)。 4. 在参考程序中,可以把被加数存在程序存储器的 100H 地址单元吗?为什么? 5. 请说明从本实验板外部数据存储器的 7F00H 地址单元读出数据 AAH 时,外部数据 存储器芯片各管脚的电平状态。 八、 实验报告附加要求 画出 N (2<N≤10)个四位十进制数相加程序的流程图,简要注释该程序。 5