KEIL3软件教程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图 1-15 调试选项设置
(5) 编译、连接和启动调试,步骤同程序 1 的调试。 (6) 连续操作“单步”命令 执行程序,当 PC 指针指向 ACALL delay100ms 指令行时,在图 1-12 寄存器窗口 中观察并记录 sec 的数据,然后再执行一次“单步”命令,即 PC 指针指向 CPL A 指令行时,再观察并记录 sec 的数据, 用 sec2-sec1 计算延时时间是多少? (7) 单击“外围设备”菜单选择 I/O-Ports/Port 1(即 P1 口),如图 1-16 所示。反复执行“单步”命令 ,观察 P1 口的状态变化。
下拉滚动条选择 Atmel/AT89S52
已建立的工程
图 1-3 选择单片机型号
(2) 新建源程序文件 单击“文件”菜单下“新建”,出现“Text1”编辑窗口,在空白区输入源程序,单击工具栏中 保存文件,输 入文件名和文件扩展名(.ASM),如图 1-4 所示,单击“保存”。
文件名后 手动添加 扩展名 ASM
实验一 指令调试练习
【实验目的】
1. 熟悉仿真软件 KEIL3 的操作步骤,掌握调试程序的常用方法; 2. 理解常用指令的作用;
【实验内容】
1. 数据块传送程序的调试 2. 方波信号产生程序的调试
【实验设备】
计算机和 Keil3 仿真软件。
【实验程序和实验操作】 1.数据块传送程序的调试
说明:下面程序完成两个数据块传送,其中: One 部分程序是将十六进制数 0-F 传送到 RAM 的 30H-3FH 地址单元中; Two 部分程序将 RAM 的 30H-3FH 地址单元中的数据传送到 40H-4FH 地址单元中。
数据,并记录于表 1-2 中。
数据存储器地址 30H 数值
数据存储器地址 38H 数值
表 1-2
31H
32H
33H
34H
35H
36H
37H
39H 3A H 3B H 3C H 3D H 3E H 3F H
数据存储器地址 40H
41H
42H
43H
44H
45H
46H
47H
数值
数据存储器地址 48H
49H
(9) 单击 ,程序停止运行,再单击
【实验报告要求】
,退出程序 2 的调试,关闭 Keil3 软件,关闭计算机。
(1)实验题目、实验人姓名、班级、学号、实验时间、实验地点; (2)实验设备和调试软件的名称; (3)实验内容 (4)每一段实验源程序和调试操作的过程、数据记录与实验分析; (5)实验总结:
Dly2:NOP NOP
; ; (1+1+2) us×250×100=100ms
DJNZ R7, Dly2 ; DJNZ R6, Dly1 ; 2 us×100=200us
Baidu Nhomakorabea
RET
; 2 us×1=2us
实验操作:
END
(1) 单击 ,退出程序 1 的调试。 (2) 保留工程目标 1,从源代码组 1 下删除程序 1 的源程序文件,新建程序 2 的源程序文件,如图 1-13 所示。
储器,如图 1-10 所示。在存储器 0H—0017H 单元中显示的数据是本程序的全部机器码,依次读出并记录于表 1-1 中。
字母 c 代表 程序存储器
存储器窗口每一行的 第一个单元的地址
机器代码
图 1-10 程序存储器窗口
表 1-1
程序存储器地址 0000H 0001H 0002H 0003H 0004H
图 1-16 I/O 窗口
(8) 单击逻辑分析仪快捷图标 (工具栏第二行倒数第三个),弹出窗口如图 1-17 所示。单击图中“设置”按钮, 在弹出的设置窗口中输入“P1”,然后,“关闭”。
图 1-17 逻辑分析仪的设置
执行 连续运行命令,即自动连续运行程序,运用逻辑分析仪窗口中的“放大”、“缩小”按钮,调整横坐 标的比例,可以看到程序运行的波形图如图 1-18 所示。观察和记录 P1 口的波形图,读出周期时间并标示在图中。
two: ;下面一段程序是将 RAM 的 30H-3FH 地址单元中的数据传送到 40H-4FH 地址单元中。
MOV R0, #30H ;R0 作为源地址指针,起始地址是 30H
MOV R1, #40H ;R1 作为目的地址指针,起始地址是 40H
MOV R2, #10H ;R2 是数据块的长度
Loop2: MOV A , @R0 ;取源数据(调试时观察 R0 的间接寻址的作用)
图 1-8 调试工具栏
(5) 调试实验程序,记录实验数据 实验操作 1
单击“视图”菜单打开“反汇编窗口”,可以看到经过编译后各条指令对应的机器码和存储地址,如图 1-9 所示。
存储器地址
机器代码
源程序行
源指令
图 1-9 反汇编窗口
实验操作 2
单击“视图”菜单打开“存储器窗口”, 在地址栏里输入 C:0, 回车,此时“Memory#1”窗口表示的是程序存
实验程序:
ORG 0000H ;指明程序的起始地址
one: ;下面一段程序是向 RAM 的 30H-3FH 地址单元中传送 0-F 十六个数;
CLR A
;要传送的数据放 A 里,初始值为 0
MOV R1, #30H ;R1 作为数据块的地址指针,初始值指向 30H 单元
MOV R2, #10H ;R2 是数据块的长度,共 16 个单元
字母 D 代表 数据存储器
存储器窗口每一行的 第一个单元的地址
数据
图 1-11 数据存储器窗口
连续操作“跟踪” 命令,逐条执行 one 到 two 之间的指令,同时通过特殊寄存 图 1-12 特殊寄存器窗口 器窗口(在 Keil3 主界面的左边)如图 1-12 所示,观察 R1、R2、A 等寄存器里数据的变化,
Loop1: MOV @R1, A ;把 A 里的数据传送到 R1 指向的地址单元里(注意观察 R1 间接寻址的作用)
;执行完上条指令时,观察数据存储区 30H-3FH 地址单元里数据的变化,并记录在表 1-2 中
INC R1 ;R1 指向下一个单元地址
INC A ;下一个要传送的数据
DJNZ R2, Loop1 ;控制循环次数和循环位置(注意观察 R2 里数据的变化,R2 减为 0 时循环结束)
„
000CH
机器代码
程序存储器地址 000DH 000EH 000FH 0010H 0011H
„
0017H
机器代码
实验操作 3
在图 1-10 存储器窗口中再打开另一个 Memory#2 窗口,在地址栏中输入 d:0,回车,此时的窗口表示的是“数据
存储器”,可左右拉动边框,调整窗口大小,使之一行显示 16 个单元,如图 1-11 所示。
图 1-18 P1 口波形图
实验分析:
1)概述方波的产生是如何实现的? 2)程序 2 中的循环是由哪条指令实现的?与程序 1 中的循环有什么不同? 3)方波的周期时间如何调整?如果要求 P1 口输出周期为 400ms 的方波,程序如何修改?并运行程序测试延时 时间是否达到要求,记录程序运行的波形图和周期时间。(选作)
图 1-2 新建工程
选定我的文档/文件夹(可自己新建),输入文件名,默认保存类型,单击图 1-2 中“保存”按钮,出现“为‘目 标 1’选择设备”的窗口,如图 1-3 左图所示,要求为新建工程选择单片机型号,下拉滚动条,选中 Atmel/AT89S52 单片机,单击 “确定”按钮,然后在出现的对话窗口中点击“否”,完成新建工程,程序界面如图 1-3 右图所示。
图 1-13 新建程序 2 的源程序文件
(3) 保存并添加文件到源代码组 1 下,方法同程序 1 的调试。 (4) 工程设置。在“工程”菜单下选择“为目标 1 设置选项”,弹出设置选项对话框。在“项目”页中,将“时钟”
改为 12M,如图 1-14 所示。
图 1-14 时钟设置
在图 1-14 中单击“调试”选项页,选中其中的“根据真实时间控制速度”,如图 1-15 所示。单击“确定”。
了解单片机传送数据的工作过程。并通过数据存储器窗口查看 30H-3FH 地址里的数据,并记录于表 1-2 中。
实验操作 4
连续操作“跟踪” 命令,逐条执行 two 到 SJMP $ 之间的指令,在图 1-12 特殊寄存器窗口观察 R0、R1、R2、
A 等寄存器里数据的变化,了解单片机数据块传送的工作过程。在图 1-11 所示的数据存储器窗口中查看 40H-4FH 里的
4AH
4BH
4CH
4DH
4EH
4FH
数值
实验数据分析: 1)根据实验操作 4,结合表 1-2,概述单片机进行数据块的数据传送是如何实现的。
2)表 1-1 中地址单元里的数据和表 1-2 中地址单元里的数据有什么不同?
3)程序中的循环是由哪条指令实现的?其中的第一操作数和第二操作数分别起什么作用?
2.方波信号产生程序的调试
(3) 编译与连接
图 1-5 添加源程序文件到源代码组
单击 或“工程”菜单下“编译”,在输出窗口(Output Window)显示编译结果。如果输入有误,输出窗口 会有错误提示,必须检查和修改错误,重新编译,直至显示 0 个错误,0 个警告,如图 1-6 所示。
图 1-6 输出窗口显示编译和连接信息
说明:(1)下面这段程序是从 P1 口输出一个周期为 200 毫秒的方波信号,周期时间是由延时子程序实现。 (2)延时子程序的延时时间为 100 毫秒,延时时间的时长 = Σ(每条指令的执行时间×执行次数),
其中: 每条指令执行的时间=(机器周期数×一个机器周期时间) 一个机器周期时间= 12 个时钟周期 一个时钟周期= 晶振频率的倒数(本实验晶振频率为 12M)
实验程序:
ORG 0000H MOV SP, #60H MOV A, #00H Loop: MOV P1, A ACALL DELAY100ms CPL A SJMP Loop DELAY100ms: MOV R6, #100 ; 1 us×1=1us Dly1: MOV R7, #250 ; 1 us×100=100us
图 1-4 建立源程序文件
鼠标右键单击“工程窗口”中“源代码组 1”,在弹出的下拉菜单中单击“添加文件到组源代码组 1”。文件 类型选定为 Asm source file,在窗口中查找并选中刚保存的源程序文件,单击“Add (添加)”,然后“Close (关闭)”。 把源代码组 1 前面的+号点开,此时,源代码组 1 下面显示刚添加的文件名,如图 1-5 所示。
1)概述使用仿真软件 Keil3 调试程序的基本操作步骤? 2) 在实验程序调试中,使用了哪些执行程序的方法?使用了哪些窗口,各用来观察哪些数据变化和结果? 3)其它。
MOV @R1, A ;源数据送目的地址单元(调试时观察 R1 的间接寻址的作用)
;执行完上条指令时,观察数据存储区 40H-4FH 单元里数据的变化,并记录在表 1-2 中
INC R0 ;修改源地址指针
INC R1 ;修改目的地址指针
DJNZ R2, Loop2 ;控制循环次数和循环位置(观察 R2 里数据的变化,体会 DJNZ 指令的作用 )
单击 “连接”,创建目标文件,结果显示在输出窗口中,如图 1-6 所示。 单击 是和多个文件连接,创建目标文件。 (4)启动调试 单击 或“调试”菜单下选择“启动/停止调试”,进入程序调试窗口,如图 1-7 所示。
图 1-7 程序调试窗口
调试工具栏如图 1-8 所示。单击 ,程序复位,PC 指针指向程序行的第一条可执行指令。单击 ,跟踪执行每 一条指令,PC 指针指向下一条指令。单击 ,顺序执行一条指令,PC 指针指向下一行指令。单击 ,执行程序到光 标处停止。单击 ,执行完全部程序。
SJMP $ ;原地踏步
END ;程序结束
实验操作:
(1) 新建工程
单击桌面 图标,打开 uVision3 程序,如图 1-1 所示。
主菜单
工具栏
工程窗口
编辑窗口
运行信息显示窗口
图 1-1 uVision3 程序界面
单击“工程”菜单下“新建 uVision 工程”,弹出“产生新工程”对话框,如图 1-2 所示。
(5) 编译、连接和启动调试,步骤同程序 1 的调试。 (6) 连续操作“单步”命令 执行程序,当 PC 指针指向 ACALL delay100ms 指令行时,在图 1-12 寄存器窗口 中观察并记录 sec 的数据,然后再执行一次“单步”命令,即 PC 指针指向 CPL A 指令行时,再观察并记录 sec 的数据, 用 sec2-sec1 计算延时时间是多少? (7) 单击“外围设备”菜单选择 I/O-Ports/Port 1(即 P1 口),如图 1-16 所示。反复执行“单步”命令 ,观察 P1 口的状态变化。
下拉滚动条选择 Atmel/AT89S52
已建立的工程
图 1-3 选择单片机型号
(2) 新建源程序文件 单击“文件”菜单下“新建”,出现“Text1”编辑窗口,在空白区输入源程序,单击工具栏中 保存文件,输 入文件名和文件扩展名(.ASM),如图 1-4 所示,单击“保存”。
文件名后 手动添加 扩展名 ASM
实验一 指令调试练习
【实验目的】
1. 熟悉仿真软件 KEIL3 的操作步骤,掌握调试程序的常用方法; 2. 理解常用指令的作用;
【实验内容】
1. 数据块传送程序的调试 2. 方波信号产生程序的调试
【实验设备】
计算机和 Keil3 仿真软件。
【实验程序和实验操作】 1.数据块传送程序的调试
说明:下面程序完成两个数据块传送,其中: One 部分程序是将十六进制数 0-F 传送到 RAM 的 30H-3FH 地址单元中; Two 部分程序将 RAM 的 30H-3FH 地址单元中的数据传送到 40H-4FH 地址单元中。
数据,并记录于表 1-2 中。
数据存储器地址 30H 数值
数据存储器地址 38H 数值
表 1-2
31H
32H
33H
34H
35H
36H
37H
39H 3A H 3B H 3C H 3D H 3E H 3F H
数据存储器地址 40H
41H
42H
43H
44H
45H
46H
47H
数值
数据存储器地址 48H
49H
(9) 单击 ,程序停止运行,再单击
【实验报告要求】
,退出程序 2 的调试,关闭 Keil3 软件,关闭计算机。
(1)实验题目、实验人姓名、班级、学号、实验时间、实验地点; (2)实验设备和调试软件的名称; (3)实验内容 (4)每一段实验源程序和调试操作的过程、数据记录与实验分析; (5)实验总结:
Dly2:NOP NOP
; ; (1+1+2) us×250×100=100ms
DJNZ R7, Dly2 ; DJNZ R6, Dly1 ; 2 us×100=200us
Baidu Nhomakorabea
RET
; 2 us×1=2us
实验操作:
END
(1) 单击 ,退出程序 1 的调试。 (2) 保留工程目标 1,从源代码组 1 下删除程序 1 的源程序文件,新建程序 2 的源程序文件,如图 1-13 所示。
储器,如图 1-10 所示。在存储器 0H—0017H 单元中显示的数据是本程序的全部机器码,依次读出并记录于表 1-1 中。
字母 c 代表 程序存储器
存储器窗口每一行的 第一个单元的地址
机器代码
图 1-10 程序存储器窗口
表 1-1
程序存储器地址 0000H 0001H 0002H 0003H 0004H
图 1-16 I/O 窗口
(8) 单击逻辑分析仪快捷图标 (工具栏第二行倒数第三个),弹出窗口如图 1-17 所示。单击图中“设置”按钮, 在弹出的设置窗口中输入“P1”,然后,“关闭”。
图 1-17 逻辑分析仪的设置
执行 连续运行命令,即自动连续运行程序,运用逻辑分析仪窗口中的“放大”、“缩小”按钮,调整横坐 标的比例,可以看到程序运行的波形图如图 1-18 所示。观察和记录 P1 口的波形图,读出周期时间并标示在图中。
two: ;下面一段程序是将 RAM 的 30H-3FH 地址单元中的数据传送到 40H-4FH 地址单元中。
MOV R0, #30H ;R0 作为源地址指针,起始地址是 30H
MOV R1, #40H ;R1 作为目的地址指针,起始地址是 40H
MOV R2, #10H ;R2 是数据块的长度
Loop2: MOV A , @R0 ;取源数据(调试时观察 R0 的间接寻址的作用)
图 1-8 调试工具栏
(5) 调试实验程序,记录实验数据 实验操作 1
单击“视图”菜单打开“反汇编窗口”,可以看到经过编译后各条指令对应的机器码和存储地址,如图 1-9 所示。
存储器地址
机器代码
源程序行
源指令
图 1-9 反汇编窗口
实验操作 2
单击“视图”菜单打开“存储器窗口”, 在地址栏里输入 C:0, 回车,此时“Memory#1”窗口表示的是程序存
实验程序:
ORG 0000H ;指明程序的起始地址
one: ;下面一段程序是向 RAM 的 30H-3FH 地址单元中传送 0-F 十六个数;
CLR A
;要传送的数据放 A 里,初始值为 0
MOV R1, #30H ;R1 作为数据块的地址指针,初始值指向 30H 单元
MOV R2, #10H ;R2 是数据块的长度,共 16 个单元
字母 D 代表 数据存储器
存储器窗口每一行的 第一个单元的地址
数据
图 1-11 数据存储器窗口
连续操作“跟踪” 命令,逐条执行 one 到 two 之间的指令,同时通过特殊寄存 图 1-12 特殊寄存器窗口 器窗口(在 Keil3 主界面的左边)如图 1-12 所示,观察 R1、R2、A 等寄存器里数据的变化,
Loop1: MOV @R1, A ;把 A 里的数据传送到 R1 指向的地址单元里(注意观察 R1 间接寻址的作用)
;执行完上条指令时,观察数据存储区 30H-3FH 地址单元里数据的变化,并记录在表 1-2 中
INC R1 ;R1 指向下一个单元地址
INC A ;下一个要传送的数据
DJNZ R2, Loop1 ;控制循环次数和循环位置(注意观察 R2 里数据的变化,R2 减为 0 时循环结束)
„
000CH
机器代码
程序存储器地址 000DH 000EH 000FH 0010H 0011H
„
0017H
机器代码
实验操作 3
在图 1-10 存储器窗口中再打开另一个 Memory#2 窗口,在地址栏中输入 d:0,回车,此时的窗口表示的是“数据
存储器”,可左右拉动边框,调整窗口大小,使之一行显示 16 个单元,如图 1-11 所示。
图 1-18 P1 口波形图
实验分析:
1)概述方波的产生是如何实现的? 2)程序 2 中的循环是由哪条指令实现的?与程序 1 中的循环有什么不同? 3)方波的周期时间如何调整?如果要求 P1 口输出周期为 400ms 的方波,程序如何修改?并运行程序测试延时 时间是否达到要求,记录程序运行的波形图和周期时间。(选作)
图 1-2 新建工程
选定我的文档/文件夹(可自己新建),输入文件名,默认保存类型,单击图 1-2 中“保存”按钮,出现“为‘目 标 1’选择设备”的窗口,如图 1-3 左图所示,要求为新建工程选择单片机型号,下拉滚动条,选中 Atmel/AT89S52 单片机,单击 “确定”按钮,然后在出现的对话窗口中点击“否”,完成新建工程,程序界面如图 1-3 右图所示。
图 1-13 新建程序 2 的源程序文件
(3) 保存并添加文件到源代码组 1 下,方法同程序 1 的调试。 (4) 工程设置。在“工程”菜单下选择“为目标 1 设置选项”,弹出设置选项对话框。在“项目”页中,将“时钟”
改为 12M,如图 1-14 所示。
图 1-14 时钟设置
在图 1-14 中单击“调试”选项页,选中其中的“根据真实时间控制速度”,如图 1-15 所示。单击“确定”。
了解单片机传送数据的工作过程。并通过数据存储器窗口查看 30H-3FH 地址里的数据,并记录于表 1-2 中。
实验操作 4
连续操作“跟踪” 命令,逐条执行 two 到 SJMP $ 之间的指令,在图 1-12 特殊寄存器窗口观察 R0、R1、R2、
A 等寄存器里数据的变化,了解单片机数据块传送的工作过程。在图 1-11 所示的数据存储器窗口中查看 40H-4FH 里的
4AH
4BH
4CH
4DH
4EH
4FH
数值
实验数据分析: 1)根据实验操作 4,结合表 1-2,概述单片机进行数据块的数据传送是如何实现的。
2)表 1-1 中地址单元里的数据和表 1-2 中地址单元里的数据有什么不同?
3)程序中的循环是由哪条指令实现的?其中的第一操作数和第二操作数分别起什么作用?
2.方波信号产生程序的调试
(3) 编译与连接
图 1-5 添加源程序文件到源代码组
单击 或“工程”菜单下“编译”,在输出窗口(Output Window)显示编译结果。如果输入有误,输出窗口 会有错误提示,必须检查和修改错误,重新编译,直至显示 0 个错误,0 个警告,如图 1-6 所示。
图 1-6 输出窗口显示编译和连接信息
说明:(1)下面这段程序是从 P1 口输出一个周期为 200 毫秒的方波信号,周期时间是由延时子程序实现。 (2)延时子程序的延时时间为 100 毫秒,延时时间的时长 = Σ(每条指令的执行时间×执行次数),
其中: 每条指令执行的时间=(机器周期数×一个机器周期时间) 一个机器周期时间= 12 个时钟周期 一个时钟周期= 晶振频率的倒数(本实验晶振频率为 12M)
实验程序:
ORG 0000H MOV SP, #60H MOV A, #00H Loop: MOV P1, A ACALL DELAY100ms CPL A SJMP Loop DELAY100ms: MOV R6, #100 ; 1 us×1=1us Dly1: MOV R7, #250 ; 1 us×100=100us
图 1-4 建立源程序文件
鼠标右键单击“工程窗口”中“源代码组 1”,在弹出的下拉菜单中单击“添加文件到组源代码组 1”。文件 类型选定为 Asm source file,在窗口中查找并选中刚保存的源程序文件,单击“Add (添加)”,然后“Close (关闭)”。 把源代码组 1 前面的+号点开,此时,源代码组 1 下面显示刚添加的文件名,如图 1-5 所示。
1)概述使用仿真软件 Keil3 调试程序的基本操作步骤? 2) 在实验程序调试中,使用了哪些执行程序的方法?使用了哪些窗口,各用来观察哪些数据变化和结果? 3)其它。
MOV @R1, A ;源数据送目的地址单元(调试时观察 R1 的间接寻址的作用)
;执行完上条指令时,观察数据存储区 40H-4FH 单元里数据的变化,并记录在表 1-2 中
INC R0 ;修改源地址指针
INC R1 ;修改目的地址指针
DJNZ R2, Loop2 ;控制循环次数和循环位置(观察 R2 里数据的变化,体会 DJNZ 指令的作用 )
单击 “连接”,创建目标文件,结果显示在输出窗口中,如图 1-6 所示。 单击 是和多个文件连接,创建目标文件。 (4)启动调试 单击 或“调试”菜单下选择“启动/停止调试”,进入程序调试窗口,如图 1-7 所示。
图 1-7 程序调试窗口
调试工具栏如图 1-8 所示。单击 ,程序复位,PC 指针指向程序行的第一条可执行指令。单击 ,跟踪执行每 一条指令,PC 指针指向下一条指令。单击 ,顺序执行一条指令,PC 指针指向下一行指令。单击 ,执行程序到光 标处停止。单击 ,执行完全部程序。
SJMP $ ;原地踏步
END ;程序结束
实验操作:
(1) 新建工程
单击桌面 图标,打开 uVision3 程序,如图 1-1 所示。
主菜单
工具栏
工程窗口
编辑窗口
运行信息显示窗口
图 1-1 uVision3 程序界面
单击“工程”菜单下“新建 uVision 工程”,弹出“产生新工程”对话框,如图 1-2 所示。