
keil开发平台.doc
73页目 录实验一 熟悉Keil开发平台 1实验二 片内存储器及特殊功能寄存器实验 4实验三 分支程序实验 11实验四 数据块传送实验 13实验五 流水灯输出控制实验 14实验六 中断服务程序的实验 21实验七 定时显示实验 26实验八 显示实验 28实验九 串行通信实验 35实验十 键盘显示试验 41附录一 keil 51 windows集成开发平台的使用 45附录二 Keil 程序调试 52附录三 通用编程器的使用 59附录四 最小系统原理图 71实验一 熟悉Keil开发平台一、实验目的1. 掌握Keil C51 μVision2集成开发环境的基本使用方法;2. 学会使用汇编语言进行程序编辑、汇编与模拟仿真调试的过程3. 学会下载,调试4. 学会编程器的使用二、实验设备1. 装有Keil C51 μVision2集成开发环境、编程器软件、下载软件的计算机2. 最小系统的实验板3. 通用编程器三、实验内容1. 断电,连接计算机、实验板2. 给计算机、实验板通电3. 打开计算机,进入Keil C51开发环境。
4. 正确设置通信口,连接好开发环境和实验板5. 新建一个项目,并将该项目建立在指定的文件下6. 新建一个文件,其路径与刚才建的项目相同7. 将新建的文件添加到项目中,保存项目,观察项目窗口和编辑窗口的内容8. 在编辑窗口编辑如下程序: ORG 0000H LJMP MAIN ORG 0100HMAIN: MOV A, #34H MOV B, #34H MOV P3, #00H MOV P3, #0FH MOV P3, #0F0H SJMP $ END 9. 对程序进行汇编,观察信息窗口的信息,如果正确,执行下一步;否则检查修改程序错误,重新汇编10. 生成目标代码,观察消息窗口的信息,如果正确,执行下一步;否则检查修改程序错误,重新生成目标代码11. 打开下载软件,将生成的目标代码下载到实验板上的CPU中12. 打开查看窗口,8051SFR窗口和端口窗口观察A、B、P3的初值,并用万用表测试P3口各引脚电平。
13. 单步运行程序,在计算机上观察特殊功能寄存器A、B、P3的变化,测试电路上P3口各引脚的电平变化,分析原因14. 全速运行程序,观察调试环境的变化,观察A、B、P3的结果,分析原因15. 操作流程如图1-1所示;16. 按下面实验一的程序,重新操作一遍,单步运行,并把观察的结果填在表中实验一记录 地址代码行号标号汇编(伪)指令注释1ORG 0000H2SE01:MOV R0, #00H3MOV DPTR, #2000H ;(2000H)送DPTR4LOO1:MOV A, #55H5MOVX @DPTR, A ; 55送(DPTR)6INC R0; 字节数加17INC DPTR; 字节数加18CJNE R0, #00H, LOO1;不到FF个字节再清9LOOP:SJMP LOOP10ENDN启动Keil创建新工程[PROJECT] New Project已有文件夹?建立文件夹选择CPU型号 公司→型号(89S52)创建一个新(源程序)文件[FILE] New File将源文件另存为扩展名为“ASM”的文件对源文件进行汇编出错?(查看*.LST文件)N修改源文件保存源文件退出图1-1由源程序到十六进制机器代码的操作过程实验二 片内存储器及特殊功能寄存器实验一、实验目的1. 掌握Keil C51 μVision2集成开发环境进行汇编语言的编辑、汇编和生成的基本方法。
2. 学会使用Keil C51 μVision2集成开发环境下,观察存储器与修改的方法3. 掌握不同存储器区的特点4. 通过实验掌握51单片机的指令二、实验设备1. 装有Keil C51 μVision2集成开发环境、编程器软件、下载软件的计算机2. 最小系统的实验板3. 通用编程器三、实验内容1. 断电,连接计算机、实验板2. 给计算机、实验板通电3. 打开计算机,进入Keil C51开发环境4. 正确设置通信口,连接好开发环境和实验板5. 新建一个项目,并将该项目建立在指定的文件下6. 新建一个文件,其路径与刚才建的项目相同7. 将新建的文件添加到项目中,保存项目,观察项目窗口和编辑窗口的内容8. 在编辑窗口编辑如下程序,观察结果填入下表2-1 表2—1 机器码表 程 序 在ROM中的地址 机器码 ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV R0,#78H MOV Rl,#65H LJMP MAIN END 9. 对程序进行汇编,观察信息窗口的信息,如果正确,执行下一步;否则检查修改程序错误,重新汇编。
10. 生成目标代码,观察消息窗口的信息,如果正确,执行下一步;否则检查修改程序错误,重新生成目标代码四、实验观察记录填到表中1. 片内RAM工作寄存器区的观察与修改内部RAM工作寄存器区地址为00H—1FH(1) 打开寄存器窗口、RAM窗口和SFR窗口观察2) 把观察结果填入下表2-23) 在RAM区直接修改00H和01H单元内容为99H、78H,观察并记录寄存器R0,R1的变化,说明原因表2-2 寄存器窗口和RAM窗口内容观察结果 程序 寄存器窗口 RAM窗口 SFR一8051窗口执行前执行后执行前执行后执行前执行后 LJMP MAIN(R0)=(R1)=(R0)=(R1)=(00H)=(01H)=(00H)=(01H)=(PC)=(PC)= MAIN:MOV R0,#78H(R0)=(R1)=(R0)=(R1)=(00H)=(0lH)=(00H)=(01H)=(PC)=(PC)= MOV Rl,#59H(RO)=(R1)=(RO)=(R1)=(00H)=(01H)=(00H)=(0lH)=(PC)=(PC)= SJMP MAIN(R0)=(R1)=(RO)=(R1)=(00H)=(01H)=(00H)=(01H)=(PC)=(PC)= END (4)在MOV R0, #78H 指令前加入2条指令,观察变化情况,填入表2—3 表2—3 工作寄存器区观察结果 程序寄存器窗口 RAM窗口执行前执行后 执行前执行后 执行前执行后 MAIN:SETB RSO(R0)=(R1)=(R0)=(R1)=(00H)=(01H)=(00H)=(01H)=(08H)=(09H)=(08H)=(09H)= CLR RSl(R0)=(R1)=(R0)=(R1)=(00H)=(01H)=(00H)=(OlH)=(08H)=(09H)=(08H)=(09H)= MOV R0,#45H(R0)=(R1)=(RO)=(R1)=(00H)=(01H)=(00H)=(01H)=(08H)=(09H)=(08H)=(09H)= MOV Rl,#67H(RO)=(R1)=(R0)=(R1)=(00H)=(01H)=(00H)=(01H)=(08H)=(09H)=(08H)=(09H)= LJMP MAIN2.内部RAM位寻址区的观察结果与内容修改 内部RAM位寻址区的地址为20H—2FH(1) 建一个新项目,建一个新文件放在项目的目录中。
按表2—4 输入程序、编译,打开寄存器窗口、RAM窗口和SFR窗口观察2) 观察调试观察结果,填入表2—4中(3) 执行MOV R0, 20H前,将RAM窗口直接将20H单元内容修改为05H,在执行该指令,结果怎样?表2—4 位寻址区观察表结果 程序RAM区预期结果RAM区实际观察结果 寻址方式执行前执行后位寻址字节寻址ORG 0000H LJMP MAIN 0RG 0100H MAIN:MOV 20H,#00H(20H)=(20H)=(20H)= MOV 21H,#00H(21H)=(21H)=(21H)= SETB 20H.0(20H)=(20H)=(20H)= CLR 20H.0(20H)=(20H)=(20H)= SETB 00H(20H)=(20H)=(20H)= CLR OOH(20H)=(20H)=(20H)= SETB 20H.1(20H)=(20H)=(20H)= CLR 20H.1(20H)=(20H)=(20H)= SETB 01H(20H)=(20H)=(20H)= CLR 01H(20H)=(20H)= (20H)= SETB 21H.7(21H)=(21H)=(21H)= CLR 21H.7(2lH)=(21H)=(21H)= SETB OFH(21H)=(21H)=(21H)= CLR OFH(21H)=(21H)=(21H)= MOV R0, 20H。
