版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录实验一熟悉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. 学会
2、在线下载,调试。4. 学会编程器的使用二、实验设备1. 装有Keil C51卩Vision2集成开发环境、编程器软件、在线下载软件的计算机。2. 最小系统的实验板。3. 通用编程器三、实验内容1. 断电,连接计算机、实验板2. 给计算机、实验板通电。3. 打开计算机,进入 Keil C51 开发环境。4. 正确设置通信口,连接好开发环境和实验板。5. 新建一个项目,并将该项目建立在指定的文件下。6. 新建一个文件,其路径与刚才建的项目相同。7. 将新建的文件添加到项目中,保存项目,观察项目窗口和编辑窗口的内容。8. 在编辑窗口编辑如下程序:MAIN:ORG0000HLJMPMAINORG010
3、0HMOVA, #34HMOVB, #34HMOVP3, #00HMOVP3, #0FHMOVP3, #0F0HSJMP$END9. 对程序进行汇编,观察信息窗口的信息,如果正确,执行下一步;否则检查修改程序 错误,重新汇编。10. 生成目标代码,观察消息窗口的信息,如果正确,执行下一步;否则检查修改程序错误,重新生成目标代码。11. 打开下载软件,将生成的目标代码下载到实验板上的CPU中。12.打开查看窗口,8051SFR窗口和端口窗口。观察A、B、P3的初值,并用万用表测试16P3 口各引脚电平。13.单步运行程序,在计算机上观察特殊功能寄存器A、B、P3的变化,测试电路上 P3口各引脚的
4、电平变化,分析原因。14. 全速运行程序,观察调试环境的变化,观察A、B、P3的结果,分析原因。15. 操作流程如图1-1所示;16. 按下面实验一的程序,重新操作一遍,单步运行,并把观察的结果填在表中。实验一记录地址代码行号号 标汇编(伪)指令注释1ORG 0000H2SE01 :MOVRO,#00H3MOVDPTR, #2000H;(2000H )送 DPTR4LOO1 :MOVA, #55H5MOVX DPTR, A;55 送(DPTR)6INC R0字节数加17INC DPTR字节数加18CJNE R0,#00H, LOO1不到FF个字节再清9LOOP :SJMP LOOP10END图
5、1-1由源程序到十六进制机器代码的操作过程实验二片内存储器及特殊功能寄存器实验一、实验目的1. 掌握Keil C51Vision2集成开发环境进行汇编语言的编辑、汇编和生成的基本方法。2. 学会使用Keil C511 Vision2集成开发环境下,观察存储器与修改的方法。3. 掌握不同存储器区的特点。4. 通过实验掌握51单片机的指令。二、实验设备1. 装有Keil C51 i Vision2集成开发环境、编程器软件、在线下载软件的计算机。2. 最小系统的实验板。3. 通用编程器三、实验内容1断电,连接计算机、实验板2. 给计算机、实验板通电。3. 打开计算机,进入 Keil C51开发环境。
6、4. 正确设置通信口,连接好开发环境和实验板。5. 新建一个项目,并将该项目建立在指定的文件下。6. 新建一个文件,其路径与刚才建的项目相同。7. 将新建的文件添加到项目中,保存项目,观察项目窗口和编辑窗口的内容。8. 在编辑窗口编辑如下程序,观察结果填入下表2-1。表2 1机器码表程序在RO中的地址机器码ORG 0000HLJMP MAINORG 0100HMAIN: MOV R0,#78HMOV Rl,#65HLJMP MAINEND9. 对程序进行汇编,观察信息窗口的信息,如果正确,执行下一步;否则检查修改程序 错误,重新汇编。10. 生成目标代码,观察消息窗口的信息,如果正确,执行下一
7、步;否则检查修改程序错 误,重新生成目标代码。四、实验观察记录填到表中1. 片内RAM工作寄存器区的观察与修改内部RAM工作寄存器区地址为 OOH 1FH(1) 打开寄存器窗口、RAM窗口和SFR窗口观察。(2) 把观察结果填入下表 2-2。 在RAM区直接修改00H和01H单元内容为99H 78H,观察并记录寄存器 R0,R1的变 化,说明原因。表2-2寄存器窗口和 RAM窗口内容观察结果程序寄存器窗口RAM 窗口SFR 一8051 窗口执行前执行后执行前执行后执行前执行后LJMP MAIN(R0)=(R1)=(R0)=(R1)=(00H)=(01H)=(00H)=(01H)=(PC)=(P
8、C)=MAIN:MOVR0, #78卜(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 RO, #78H指令前加入2条指令,观察变化情况,填入表 2-3表2 3工作寄存器区观察结果程序寄存器窗口RAM窗口执行前执行后执行前执行后执行前执行后(R0)=(R0)=
9、(00H)=(00H)=(08H)=(08H)=MAIN:SETB RSO(R1)=(R1)=(01H)=(01H)=(09H)=(09H)=(R0)=(R0)=(00H)=(00H)=(08H)=(08H)=CLR RSl(R1)=(R1)=(01H)=(OlH)=(09H)=(09H)=(R0)=(RO)=(00H)=(00H)=(08H)=(08H)=MOVR0 , #45H(R1)=(R1)=(01H)=(01H)=(09H)=(09H)=(RO)=(R0)=(00H)=(00H)=(08H)=(08H)=MOVRl , #67H(R1)=(R1)=(01H)=(01H)=(09H)=
10、(09H)=LJMPMAIN2. 内部RAM位寻址区的观察结果与内容修改内部RAM位寻址区的地址为 20H 2FH(1) 建一个新项目,建一个新文件放在项目的目录中。按表2 4输入程序、编译,打开寄存器窗口、RAM窗口和SFR窗口观察。(2) 观察调试观察结果,填入表2 4中(3) 执行MOV RO, 20H前,将RAM窗口直接将20H单元内容修改为 05H,在执行该指 令,结果怎样?表2 4位寻址区观察表结果程序RA区预期结果RAMS实际观察结果寻址方式执行前执行后位寻址字节寻址ORG 0000HLJMP MAINORG 0100HMAIN: MOV 20H, #00H(20H)=(20H)
11、=(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)=(
12、21H)=SETB OFH(21H)=(21H)=(21H)=CLR OFH(21H)=(21H)=(21H)=MOV R0, 20H(Ro)=(RO)=(R0)=LJMP MAINEND3. RAM间接与直接寄存器区的观察与修改内部RAM直接和间接寻址区地址为 30H-7FH(1) 在指定路径中建立一个新项目,新建一个文件,将文件添加到此项目中。(2)按表2 5输入程序(3) 执行程序后,预期结果和寻址方式填入表2 5中(4) 程序经汇编、生成、下载后,打开RAM窗口,观察执行前和单步执行后的结果。如 果预期结果和实际执行后不一致,分析原因,体会直接寻址和间接寻址方法。(5) 在程序中添加指
13、令, 将数99H送地址为60H的RAM单元中,要求用直接寻址和间接 寻址两种方法,并进行调试,验证程序的正确性。表2-5直接和间接寻址区观察结果程序预期结果实际观察结果寻址方式执行前执行后直接寻址间接寻址ORG 0000HLJMP MAINORG 0100HMAIN:MOV 30H,#00H(30H)=(30H)=(30H)=MOV 30H, #87H(30H)=(30H)=(30H)=MOV R0,#30H(R0)=(R0)=(R0)=MOV R0,#00H(30H)=(30H)=(30H)=MOV R0,#87H(RO)=(RO)=(30H)=(30H)=(R0)=MOV 7FH,#44H
14、(7FH)=(7FH)=(7FH)=MOV R0, #7FH(R0)=(R0)=(RO)=MOV R0,#55H(7FH)=(7FH)=(7FH)=LJMP MAINEND4. 内部RAM间接寻址区地址为 80H OFFH。(1)在指定路径中建立一个新项目,新建一个文件,将文件添加到此项目中。(2)按表2 6输入程序(3) 执行程序后,预期结果和寻址方式填入表2 6中(4) 程序经汇编、生成、下载后,打开RAM窗口,观察执行前和单步执行后的结果。如 果预期结果和实际执行后不一致,分析原因,体会直接寻址和间接寻址方法。(5) 在程序中添加指令, 用间接寻址方式将数 99H送地址为90H的RAM单
15、元中,进行调 试,验证程序的正确性表2 6间接寻址区观察结果程序预期结果实际观察结果寻址方式执行前执行后直接寻址间接寻址0RG 0000HLJMP MAINORG 0100HMAIN: MOV R0 #0EOHMOV R0, #00H(RO)=(OEOH)=(RO)=(0EOH)=(R0)=(0EoH)=MOV R0, #87H(R0)=(0EOH)=(R0)=(OEOH)=(RO)=(0EOH)=MOV R0 , #0FFHMOV R0, #00H(RO)=(0FFH)=(R0)=(OFFH)=(R0)=(OFFH)=MOV R0, #87H(RO)=(OFFH)=(RO)=(OFFH)=(
16、RO)=(OFFH)=LJMP MAINEND5.内部RAM持殊功能寄存器区的观察与内容修改内部RAM特殊功能寄存器区地址也是 80HOFFH=(1) 在指定路径中建立一个新项目,新建一个文件,将文件添加到此项目中。(2) 按表2 7输入程序(3) 执行程序后,预期结果和寻址方式填入表2 7中(4) 程序经汇编、生成、下载后,打开RAM窗口,寄存器窗口、观察每条指令执行前和 单步执行后的结果。如果预期结果和实际执行后不一致,分析原因,体会直接寻址和间 接寻址方法。(5) 执行加法指令后,PSW各个位的变化规律掌握否?(6) 是否所有指令都影响 PSW的C AC OV P?(7) 在程序中添加写
17、指令“ MOV OFQH#66H和“ MOV R0 #0FOH、“ MOV R0, #66H,判断这两组指令的执行结果有何不同。表2 7 SFR区观察结果程序预期结果执行后结果寻址方式SFR区RAMSSFR区RAMS直接间接ORG 0000HLJMP MAINORG 0100HMAIN: MOV A,#81H(A)=(PSW)=(0EOH)=(0DOH)=(A)=(PSW)=(0EOH)=(0DOH)=MOV 0EOH #82H(A)=(PSW)=(0EOH)=(0DOH)=(A)=(PSW)=(0EOH)=(0DOH)=MOV R0, #0EOHMOV R0 #45H(R0)=(A)=(PS
18、W)=(00H)=(0EOH)=(0DOH)=(R0)=(A)=(PSW)=(00H)=(0EOH)=(0DOH)=MOV B,#00H(B)=(PSW)=(0FOH)=(0DOH)=(B)=(PSW)=(0FOH)=(0DOH)=MOV 0FOH , #02H(B)=(PSW)=(0FOH)=(ODOH)=(B)=(PSW)一(OFOH)=(0DOH)=MOV DPTR,#1234H(DPTR)=(PSW)=(83H)=(82H)=(0DOH)=(DPTR)=(PSW)=(83H)=(82H)=(0DOH)=MOV DPH, #05H(DPH)=(PSW)=(83H)=(0DOH)=(DPH
19、)=(PSW)=(83H)=(0DOH)=MOV DPL, #48H(DPL)=(PSW)=(82H)=(0DOH)=(DPL)=(PSW)=(82H)=(0DOH)=ADD A,#81H(A)=(PSW)=(0EOH)=(0DOH)=(A)=(PSW)=(0EOH)=(0DOH)=MOV A,#48H(A)=(PSW)=(0EOH)=(0DOH)=(A)=(PSW)=(0EOH)=(0DOH)=ADD A,#59H(A)=(PSW)=(OEOH)=(0DOH)=(A)=(PSW)=(OEOH)=(ODOH)=SETB ACC.5(A)=(PSW)=(0EOH)=(0DOH)=(A)=(PSW
20、)=(0EOH)=(ODOH)=CLR ACC.5(A)=(PSW)=(0EOH)=(0DOH)=(A)=(PSW)=(0EOH)=0DOH)=LJMP MAINEND6. 外部RAM区(XRAM)的观察与内容修改(1) 指定路径中新建一个项目,新建一个文件名,将该文件添加到此项中。(2) 按照表2 8输入程序。(3) 程序经汇编、生成、下载后,打开SFR- 8051窗口、寄存器窗口、RAM窗口,观察每条指令执行前和单步执行后的结果。(4) 将XRAM的1001H单元内容预置为 65H,写出每条指令执行后的预期结果。(5) 观察指令执行前和单步执行后的实际结果并记录在表2- 8中。(6) 为什
21、么第2条指令“ MOV A #81H 和第 3条指令“ MOV OEQH #82H都修改A 的内容和 PSW内容,却不修改 0EOH RAM单元的内容?表2 8 XRA M区观察结果程序预期结果执行后结果寻址方式ORG 0000HLJMP MAINORG 0100HMAIN: MOV A #81HMOV DPTR, #1000HMOVX DPTR AMOV DPTR, #1001HMOVX A,DPTRLJMP MAINEND实验三分支程序实验一、实验目的:1. 熟悉指令系统,正确选择编程指令,掌握分支程序结构流程图的画法,正确使用(转 移)条件;2. 掌握分支程序设计的基本方法和技巧。二、实
22、验要求:1. 实验前,按要求画出流程图;2. 按要求使用汇编语言独立编写源程序;3. 使用单步方法运行程序,观察程序运行前、运行中和运行后相关寄存器的变化(尤其三、实验相关知识:程序状态字是一个 8位寄存器,用来存放程序的状态信息,表征指令的执行状态, 供程序查询和判别之用。其格式如下:进/借位辅助进位标志0工作寄存器区选择溢出不用奇偶CYACF0RS1RS0OV-P各位说明如下:1. CY : (PSW.7)进/借位标志在执行加/减法指令时,如果操作结果D 7位有进/借位,CY置“ 1 ”,否则清“ 0”。2. AC : (PSW.6)辅助进位标志或称为半进位,当进行加法操作而产生由低4位数
23、(十进数的1位数)向高4位数进位时,AC将被硬件置“1”,否则被清“ 0”。AC被用于BCD码加法调整(详见 DA指令)。3. F0: (PSW.5)标志 0由用户定义的一个状态标志。可以用软件来使它置“1”或清“ 0”,也可以由软件测试F0来控制程序流向。RS1、RS0: (PSW.4、PSW.3)工作寄存器区选择控制位可由软件来改变 RS1和RS0的组合以确定当前工作寄存器区。4. OV : (PSW.2)溢出标志用于补码运算,以指示溢出状态。溢出标志常用于对有符号补码数作加减运算。(-128 +127)。OV=1表示加减运算的结果己超出一个字节所能表示的范围在 MCS-51 中,无符号数
24、乘法指令 MUL 的执行结果也会影响溢出标志, 若累加器 A 和寄存器 B 的乘积超过 255时, OV=1 ,否则 OV=0 。此积的高 8 位放在 B 中,低 8位放 在A中,故OV=0意味着只要从 A中取得乘积即可,否则要从BA寄存器对中取得乘积。除法指令 DIV 也会影响溢出标志,当除数为 0时, OV=1 ,否则 OV=0。5. P: (PSW.O)奇偶标志每个指令周期都由硬件来置位或清零, 以表示累加器 A 中值为“1”的位数的奇偶性。 若P=1,则A中“1”的位数为奇数,否则 P=0。该标志对串行数据通讯中的信息传输有重要意义。在串行通讯中,常用奇偶校验的方法来检验数据传输的可靠
25、性。在发送时可根据P值对数据的奇偶位置位或清除。四、实验内容设X存放在内部RAM的40单元中,判断X的值大于0,结果送1, X小于0送-1,X 等于 0 送 0,要求画出流程图,观察结果。五、实验步骤1. 指定路径中新建一个项目,新建一个文件名,将该文件添加到此项中。2. 程序经汇编、生成、下载后,打开 SFR- 8051窗口、寄存器窗口、 RAM窗口,观察 每条指令执行前和单步执行后的结果。3. 在 40H 单元输入一个小于 20 的数,单步运行程序,观察寄存器是否为分析结果; 程序跳向哪个分支。4. 在 40H 单元输入一个大于 20 的数,单步运行程序,观察寄存器是否为分析结果; 程序跳
26、向哪个分支。六、参考程序ORG0000HSTART:MOV A, 40HJZ COMPJNBACC.7, POSTMOVA, #81HSJMPCOMPPOST:MOVA, #01HCOMP :MOV41H, AEND实验四 数据块传送实验一、实验目的1. 熟悉指令系统,正确选择编程指令。2. 掌握循环程序设计的基本方法和技巧。3. 掌握单步、断点调试程序的方法和技巧。二、实验内容将内部数据区 30H 3FH 单元内容,传送到外部 1000H 为首的外部数据区 XRAM 中。三、实验步骤1. 指定路径中新建一个项目,新建一个文件名,将该文件添加到此项目中。2. 在编辑窗口输入程序,程序经汇编、生
27、成HEX文件。3. 进入调试界面,在内部数据区窗口,把光标放在 30H 单元,输入数据,在 16 个单 元中分别输入数据,最好输入 16 进制数。4. 打开SFR-8051窗口、寄存器窗口、 RAM窗口,XRAM窗口,观察每条指令执行前和 单步执行后的结果。5. 修改程序,把将内部数据区 30H3FH 单元内容,传送到内部 50H 为首的数据区。四、参考程序:参考程序:传送数据块程序ORG0000HJMPSTARTORG1000HSTART:MOVR0, #30HMOVDPTR, #1000HMOVR2, #100LP:MOVA, R0MOVXDPTR, AINCR0INCDPTRDJNZR2
28、, LPEND实验五流水灯输出控制实验一、实验目的使用单片机对负载进行控制时,单片机组成的控制电路不同,只需要根据输入信号 和输出负载设计接口电路,控制系统的逻辑关系使用软件编程的方法实现即可。如果输 入、输出信号不变而逻辑关系变化时,只需要修改程序,硬件基本不变。因此单片机控 制电路使用非常灵活。1 掌握单片机中输出端口的控制方法。2 掌握循环的分析方法。3 了解编程器的使用方法。二、实验原理用单片机控制8只并排的发光二极管(D1-D8 ),使各发光二极管从 D1开始点亮并 延时熄灭,然后再点亮下一个发光二极管,8只发光二极管循环点亮后再从 D1开始重复循环。这种显示方式下的发光二极管通俗地
29、称为流水灯,其亮、灭规则见表5-1。表5-1简单流水灯显示规则D1灯D2灯D3灯D4灯D5灯D6灯D7灯D8灯点亮熄灭熄灭熄灭熄灭熄灭熄灭熄灭熄灭点亮熄灭熄灭熄灭熄灭熄灭熄灭熄灭熄灭点亮熄灭熄灭熄灭熄灭熄灭熄灭熄灭熄灭点亮熄灭熄灭熄灭熄灭熄灭熄灭熄灭熄灭点亮熄灭熄灭熄灭熄灭熄灭熄灭熄灭熄灭点亮熄灭熄灭熄灭熄灭熄灭熄灭熄灭熄灭点亮熄灭熄灭熄灭熄灭熄灭熄灭熄灭熄灭点亮三、实验内容8个发光二级管从右到左流水变化实验。本实验以一个简单的流水灯为例介绍单片 机控制系统对输出端口进行控制的方法。四、实验步骤1. 指定路径中新建一个项目,新建一个文件名,将该文件添加到此项目中。2. 在编辑窗口输入参考程序
30、1,程序经汇编、生成 HEX文件。3. 进入调试界面,打开端口P1,单步运行,观察 P1端口的变化,如图示 5-1所示。4. 修改程序,把延时时间延长,重新生成HEX文件。5. 把KEIL软件最小化,将下载专用线 AT-ISP的IDC10插头正确与最小系统板左侧的 IDC10插座连接,另一端与 PC机的并口连接,然后,给最小系统板接上电源。6. 打开下载软件,如图示5-2所示。7. 双击目录下的文件lspPgm.exe,打开软件进入如图 5-3所示的界面(1)芯片选择:左击界面右面芯片选择窗口的下拉箭标,选择编程芯片的型号。(2) 导入hex文件到缓冲区:左击界面上的Open File ”按钮
31、,选择本目录下 的hex文件。(3)向芯片写入文件:左击界面上的“ Write ”按钮,开始编程向芯片写入程序。(4)出现如图5-4所示的界面表示完成写入编程。:4File Edit Viira Frojact Debug Flaxh h.ph打TqIe 5VTS V:rid-:* 11 dip(5) 退出程序:左击界面右上角的“x”按钮,退出此程序。骷圆刊帀弋中莊 駁也即昌厂|自TKIV乩利FUT;#叽昨胖加谿A口:R0V:JB加跖人中内容送就口TOV:料箇窃存跖;3:HQVR6304:料送BE気存诙|詔:D翻叭時俪話*内容-1 *牯罢苕1转兽至応D卿:审奋再内容-1 *牯罢苕1转也至口A:
32、呆JtnSSA中内咨左格一也11:坤務至14E盹:馆sKQ00CIH自E讥苜单片也谍fK星小歪蛛克腔岀丄血X1Loid E:XS单歼机滦件最小系统实龜沁輸出“ 百X虫血“!: |c:(nooHC:0zD0D0: 74 FE F5 90 7F 02 7E 04 DE :FE C:0eD010: 7F E4 F6 08 FD 75 31 07 02 0DHJJ图5-1调试界面17文件迥 坍相S 收矗 IM 辖韵血J t /* L.:如:Th:乜二U _匚!= mi舰如snT S氣 w口氐皿宣直I、KTSflSSJUCF咂ift弍说明 仇 HOO, C烛改E奥3MB年B月何日,V |?0|v zf
33、Docujicm匸:亠丄丄xL占岂LwJ i_IxpPfSDt. st10文件3 EB图5-2下载软件界面图5-3下载软件操作界面34图5-4 下载软件操作完成界面8. 观察最小系统实验板上 8个发光二极管的变化。9. 如果实现8个数码管从左到右流水,硬件电路如何连接?如何修改程序,并下载到 用户板,观察数码管的变化?10. 如果将命令L2: DJNZ R6, L2 ;修改为L2 : DJNZR6, L3 ;会出现什么结果?五、实验参考程序连接硬件电路,将最小系统P1 口上排和P1 口中排连接ORG0000HMOVA, #0FEH;#01H送累加器AL1: MOVP1, A;累加器A中内容送P
34、1 口MOVR7,#0;#0送R7寄存器L3: MOVR6,#0;#0送R6寄存器L2: DJNZR6, L2;R6寄存内容-1,结果工0转移至L2DJNZR7, L3;R7寄存内容-1,结果工0转移至L3RLA;累加器A中内容左移一位SJMPL1;转移至L1END;结束LED )闪光。闪光灯闪六、思考题1组装一个单片机的最小系统,用来控制一只发光二极管(烁时间为 0.2 秒。或在最小系统实验板上实现如上功能。2. 本实验参考程序中, P1 和 P1.0 有什么区别,为什么这样用? 3计算延时时间,并编写一个延时 2ms 的程序。4参考程序ORG0000HL1:CPLP1.0MOVR6, #0
35、HL2:MOVR7, #0HL3:NOPDJNZR7, L3DJNZR6, L2SJMPL1END5请编写程序,每按一次按键流水灯的流动方向改变一次。硬件连接:将最小系统P1 口上排和P1 口中排连接,P2.7接ORG0000H;定义程序的起始地址MOVA, #01H ;#01H 送累加器 AL1:MOVP1, A;累加器 A 中内容送 P1 口MOVR7, #0FFH ;调用延时子程序前,准备延时值ACALLDELAY;调用延时子程序JBKEY, K1;按键未按下转 K1MOVR7, #20;调用延时子程序前,准备延时值ACALLDELAY;调用延时子程序JBKEY, K1;按键未按下转 K
36、1JBCL, K3;已处理过(处理标志 =1 )转 K2CPLFX;按键确认,改变 FX 状态SETBCL;设置处理标志SJMPK3;转移至 K3SW8 , P3.3 接 KEYK1:CLRCL;清处理标志K3:JNBFX, L4;FX=0时转移到L4RLA;累加器A中内容左移一位SJMPL1;转移至L1L4:RRA;累加器A中内容右移一位SJMPL1;转移至L1DELAY:MOV R6,#0FFH;#0FFH送R6寄存器DJNZ R6,$;R6寄存内容-1,直到结果=0DJNZ R7,DELAY;R7寄存内容-1,结果工0转移至 DELAYRET;子程序结束,返回调用指令的下一条指令继续执行
37、FXBITOOH;定义一个位变量,CLBIT01H;定义处理标志KEYBITP3.3;定义按键端口变量END;结束6 将流水灯的流动方式改为表5-2所示方式编程并实现。表5-2流水灯的流动方式步D0D1D2D3D4D5D6D71亮灭灭灭灭灭灭灭2亮亮灭灭灭灭灭灭3亮亮亮灭灭灭灭灭4亮亮亮亮灭灭灭灭5亮亮亮亮亮灭灭灭6亮亮亮亮亮亮灭灭7亮亮亮亮亮亮亮灭8亮亮亮亮亮亮亮亮参考程序ORG 0000hL1:MOV 30H, #0FFHCLRCL2:MOVA, 30HRRCAJNCL1CLRCMOV30H, AMOVP1, AACALLDELAYSJMPL2ORG0200HDELAY:MOVR5, #0
38、6HL5:MOVR7, #0FFHL4:MOVR6, #0FFHL3:DJNZR6, L3DJNZR7, L4DJNZR5, L5RETEND7. 如果需要加快流水灯的流动速度,需要如何修改程序?如何修改程序使流水灯的流动方向相反。如果要降低流动速度,需要如何修改程序实验六 中断服务程序的实验一、实验目的 在上个实验中, 为了检测按键状态, 需要不停地进行检测, 占用了 CPU 的大量时间, 工作效率非常低。计算机中常采用中断技术处理此类问题,本实验通过一个高效率的流 水灯来介绍如何使用中断技术处理按键。1掌握单片机中中断系统的结构。2掌握外部中断 0和外部中断 1 的中断方法和编程的基本方法
39、、技巧。 3掌握中断处理程序的组成以及中断向量的概念。4通过实验,掌握单片机中中断的处理方法。二、实验设备1. 装有Keil C51卩Vision2集成开发环境、编程器软件、在线下载软件的计算机。2. 最小系统的实验板。3. 通用编程器三、实验内容 采用中断方法控制灯的亮灭, 由中断服务程序控制 I/O 口置高, 置低,即可控制灯的 全亮和全灭。四、实验原理P2.7接按键SW8,外部中断INT1接KEY,作为中断申请信号,开机 8个发光二极 管从左到右流水,产生中断后, 8个发光管全亮、全灭,延时后,在循环。五、实验参考程序硬件连接:P2.7 接 SW8,P3.3 接 KEY参考程序ORG00
40、00h;伪指令LJMPSTART;跳转到单片机的主程序ORG0013H;外部中断 1 的入口地址LJMPEXT1;跳转到中断服务程序ORG0100H;伪指令,单片机主程序的开始START:MOVIE , #10000100bMOVIP , #00000100bMOVTCON, #00000000b;定时器初始化MOVSP, #40HMOVP1, #0FFHMOVMOVP2,P3,#00H#0FFHLOOP:MOVA,#0FFHCLRCMOVR2,#08HLOOP1: RLCAMOVP1, ALCALLDELAYDJNZR2,LOOP1JMPLOOPEXT1:PUSHACCPUSHPSWMOVA
41、, #00HMOVR3,#0AHLOOP2:MOVP1,ALCALLDELAYCPLADJNZR3,LOOP2POPPSWPOPACCRETIDELAY:MOVR5,#20D1:MOVR6,#20D2:MOVR7,#248DJNZR7,$DJNZR6,D2DJNZR5,D1RETEND;设置 P1、 P2、P3 口状态;小灯循环点亮;中断服务程序;小灯全亮;延时程序六、实验步骤1. 断电,连接计算机、实验板2. 给计算机、实验板通电。3. 打开计算机,进入 Keil C51 开发环境。4. 正确设置通信口,连接好开发环境和实验板。5. 新建一个项目,并将该项目建立在指定的文件下。6. 新建一个
42、文件,存储器的路径与刚才建的项目相同。7. 将新建的文件添加到项目中,保存项目。8. 在编辑窗口输入程序,对程序进行汇编、生成和下载。9. 全速运行程序,观察 8 个发光管的变化情况和变化时间。10. 按键产生中断后,从新开始,发光二极管的位置从什么地方开始,说明原因。七、思考题1. 请编写程序,要求每按一次键,发光二极管位置右移1 次。ORG0000HLJMPMAINORG0013HLJMPZHORG0100HMAIN:MOVSP, #50HSETBIT1 ;外部中断 1SETBEA ;CPU 开中断SETBEX1MOVA, #07FHLP:MOVP1, A;输出JB P3.3, ZHSJM
43、PLPZH: RR AMOVP1,ALCALLDELRETIDEL: MOVR5,#20D1:MOVR6,#20D2:MOVR7,#250DJNZR7, $DJNZR6, D2DJNZR5, D1RETEND2. 请编写程序, 每按一次按键流水灯的流动方向改变一次, 要求使用中断技术处理按键。ORG0000H;定义下一条指令的地址LJMPMAIN;转向主程序ORG0013H;安排外部中断 1 处理程序的第一条指令LJMPKEYS;直接转移到中断处理程序ORG0100H;主程序起点MAIN:MOVSP,#40H;设置堆栈栈底指针SETBIT1;设置外部中断 1 的中断方式为下降沿中断SETBEX
44、1;开放外部中断 1SETBEA;开放总中断MOVA, #01H;#01H 送累加器 AL1:MOVP2, A;累加器 A 中内容送 P2 口MOVR7, #0FFH;#0FFH 送 R7 寄存器L3:MOVR6, #0FFH;#0FFH 送 R6 寄存器L2:DJNZR6, L2;R6寄存内容-1,结果工0转移至L2DJNZR7, L3;R7寄存内容-1,结果工0转移至L3JNBFX, L4;FX=0 时转移到 L4RLA;累加器 A 中内容左移一位SJMPL5;转移至 L5L4:RRA;累加器 A 中内容右移一位L5:SJMPL1;转移至 L1;按键中断程序;入口 :外部中断 1;功能 :
45、确认按键后改变方向标志 FX 的状态KEYS:;中断处理程序入口MOVR7,#20H;首先延时去抖K1:MOVR6, #0FFHDJNZR6, $JBKEY,K2;延时完成后再检测按键CPLFX;确认按键按下 , 改变方向标志位状态K2: RETI;中断结束返回KEYBITP3.3;定义按键变量FXBIT00H;定义位变量 ,用于判断方向END;结束DJNZR7,K1实验七 定时显示实验一、实验目的1. 掌握利用中断方式和查询方式实现定时的基本方法和技巧。2. 熟练掌握程序调试的基本方法和技巧。二、实验设备1. 装有Keil C51卩Vision2集成开发环境、编程器软件、在线下载软件的计算机。2. 最小系统的实验板。3. 通用编程器三、实验内容利用定时器0,方式1,通过P1 口连接的数码管每隔1S显示数字加1。四、实验原理定时器0、工作方式1,20mS循环50次即可达到1S。因为:t =(216 - x )机器周期
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年三只熊的早餐说课稿
- 2025-2026学年北师大版数学初一说课稿
- 2025-2026学年大班特别的名字说课稿
- 2025-2026学年1到2岁做糖果的说课稿
- 2025-2026学年多声部合唱说课稿
- 2026下半年下半年小学数学教资面试乘除专项题库
- 2026下半年小学英语教资面试语法试讲
- 《德信诚学习》课件
- 解决问题二年级上册解决问题专项复习
- 虽有佳肴我的课件
- 《DB65-T 8003-2023 建设工程电子文件与电子档案管理标准》
- 2026年软件正版化工作实施方案
- 健身房投资入股协议书样本
- 钢板仓工程专项施工方案
- GB/T 45939-2025光伏组件封装用共挤胶膜
- NBT 11127-2023 在用钢丝绳芯输送带报废检测技术规范
- 母婴同室院感管理课件
- 农村初中生大五人格与生命意义感的内在关联探究
- 基层治保会培训课件
- 2025至2030年中国杭州房地产行业市场竞争现状及未来趋势研判报告
- TD/T 1024-2010县级土地利用总体规划编制规程
评论
0/150
提交评论