单片机的实验报告

上传人:壹****1 文档编号:508360223 上传时间:2024-01-19 格式:DOC 页数:26 大小:700.50KB
返回 下载 相关 举报
单片机的实验报告_第1页
第1页 / 共26页
单片机的实验报告_第2页
第2页 / 共26页
单片机的实验报告_第3页
第3页 / 共26页
单片机的实验报告_第4页
第4页 / 共26页
单片机的实验报告_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《单片机的实验报告》由会员分享,可在线阅读,更多相关《单片机的实验报告(26页珍藏版)》请在金锄头文库上搜索。

1、一、 实验目的及要求:(1) 学习Keil C51集成开发工具的操作及调试程序的方法,包括:仿真调试与脱机运行间的切换方法;(2) 熟悉TD-51单片机系统板及实验系统的结构及使用;(3) 进行MCS51单片机指令系统软件编程设计与硬件接口功能设计;(4) 学习并掌握Keil C51与Proteus仿真软件联机进行单片机接口电路的设计与编程调试;(5) 完成指定MCS51单片机综合设计题二、 实验运行环境软件环境:KEIL uv2, PROTEUS7.4硬件环境:PC机, TD-51系统板三、 软件部分实验一清零程序与拆字程序设计(1) 清零程序:把7000H-7FFFH的内容清零。(2) 拆

2、字程序:把7000H的内容拆开,高位送7001H低位,低位送7002H低位。7001H,7002H高位清零,一般本程序用于把数据送显示缓冲区时用。a) 程序流程图 图1 清零程序 图2 拆字程序b) 实验参考程序清零程序:ORG 0000H LJMP MAIN ORG 0100HMAIN: MOV A, #00H MOV DPTR,#7000H ;赋给首地址 MOV R1,#100H ;循环次数,完成对7000H-70FFH的置一 MOV R2, #10HLOOP1: MOVX DPTR,A INC DPTR DJNZ R1,LOOP1 DJNZ R2,LOOP1 ; 因为都是先减一之后再做比

3、较,所以0FFH、0FH个数要100H、10H次 SJMP $ END 拆字程序: ORG 0000H LJMP MAIN ORG 1000HMAIN: MOV DPTR,#7000H MOVX A,DPTR ;赋值 MOV R0,A ANL A,#0F0H ;得到高四位 SWAP A INC DPTR MOVX DPTR,A ;高位给7001H MOV A,R0 ANL A,#0FH ;得到低四位 INC DPTR MOVX DPTR,A ;低位给7002H SJMP $ END实验二拼字程序与数据传送程序设计(1) 拼字程序:把 7000H,7001H 的低位相拼后送人 7002H,一般本

4、程序 用于把显示缓冲区的 数据取出拼装成个字节。(2) 数据传输子程序:把(R2,R3)源 RAM 区首址内的(R6,R7)个字节 数据,传送到(R4,R5) 目的 RAM 区。 a) 程序流程图图3 拼字程序 图4数据传输子程序b) 实验参考程序拼字程序ORG 0000H LJMP MAIN3ORG 1000HMAIN3: MOV DPTR,#7000HMOVX A,DPTR ;原值给A ANL A,#0FH ;取低四位 SWAP A ;将原低四位移到高四位 MOV B,AINC DPTRMOVX A,DPTR ;再取7001H的值 ANL A,#0FH ;取低四位 ADD A,B INC

5、DPTR MOVX DPTR,A ;获得结果 SJMP $END 数据传输程序 ORG 0000H LJMP MAIN ORG 0100HMAIN: MOV R2,#10H ;源RAM区的第一个地址 MOV R3,#19H ;源RAM区的第二个地址 MOV R4,#22H ;目的RAM区的第一个地址 MOV R5,#2BH ;目的RAM区的第二个地址 MOV R6,#02H ;第一次传输的字节数据个数 MOV R7,#03H ;第二次传输的字节数据个数 L1: MOV B,R2 MOV R0,B MOV A,R0 MOV B,R4 MOV R1,B MOV R1,A INC R2 INC R4

6、 DJNZ R6,L1 ;完成第一路的数据传输L2: MOV B,R3 MOV R0,B MOV A,R0 MOV B,R5 MOV R1,B MOV R1,A INC R3 INC R5 DJNZ R7,L2 ;完成整个的数据传输 SJMP $ END实验三排序程序与散转程序设计(1) 散转程序:根据 8032 片内 20H 中的内容(00 或 01 或 02 或 03)进行散转。(2) 排序子程序:其功能为用冒泡法将内部 RAM 中几个单元字节无符号的正整数,按从小到大的次序重新排列。a) 程序流程图返回主程序R1=R1+1,内循环对于n个数完成n-1次外循环即结束排序直到后面的数全与R0

7、比较完成,即完成一次外循环R0=R0+1初始化,赋给起始地址指针R0,R1=R0+1取R0和R1进行对比若R0R1,则交换位置,否则,保持不变入口 图5 散转程序 图6 排序子程序b) 实验参考程序散转程序: ORG 0000H LJMP MAIN ORG 0100HMAIN : MOV A,#01H MOV R2,A RL AADD A,R2MOV DPTR,#PTAB JMP A+DPTRPTAB: LJMP PM0 LJMP PM1 LJMP PM2 LJMP PM3 PM0: 程序体0 PM1: 程序体1PM2: 程序体2PM3: 程序体3 SJMP $ END冒泡排序子程序: ORG

8、 0000H LJMP MAIN ORG 0100H MAIN: MOV R0,#10H ;初始地址 MOV R7,#04H ;外循环次数(参与比较的数的个数-1) ACALL MAOP SJMP $ MAOP: L1: MOV A,R0 ;赋给初始地址 MOV R1,A INC R1 ;取第二个数的地址 MOV A,R7MOV R6,A L2: MOV A,R0 CLR C SUBB A,R1 ;两数进行比较 JC L3 ;前数小于后数则保持位置不变 MOV A,R0 ;否则,交换位置 XCH A,R1 MOV R0,A L3: INC R1 DJNZ R6,L2 ;内循环是否完成 INC

9、R0 DJNZ R7,L1 ;外循环是否完成 RET ;返回主程序 END四、 软件部分设计总结本次软件部分的设计主要运用到了编程软件KEIL uv2,可以方便的对程序进行模拟调试和观察片内或片外存储区的变量变化情况。另外熟悉运用KEIL uv2可以适当简化程序的编写。例如:对于片内或片外存储区域的任何地址赋值。在本次的软件实验中,有很多都需要我们对某部分的地址进行赋值,假如在程序中实现这些赋值的话,会一定程度地导致程序的冗长。而在KEIL uv2中,只要在编辑框左下方的命令行中输入如“E CHAR D:30H= 11H,22H,33H,44H,55H”等,则可以改变片内存储区中从30H开始的

10、五个地址的值。同样,在对程序进行调试时候,也可以打开存储器观察窗口,在该窗口的“Address:”栏中输入“D:30H”或“X:7000H”,则可以显示片内RAM30H后或片外7000H后的内容。其中,D表示显示片内存储器的内容,X表示显示片外部数据存储器的内容,C表示显示代码存储器的内容,I表示显示内部间接寻址RAM的内容。另外,对于KEIL uv2在调试运行过程中,还可以很方便的通过设置断点或是单步运行等方式来查看程序的正确性。五、 硬件部分实验四 静态存储器扩展实验1、 基础部分:编写实验程序,在单片机内部一段连续的RAM空间30H-3FH中写入初值00H-0FH,然后将这16个数据传送

11、到RAM的0000H-000FH中最后将外部RAM的0000H-000FH空间的内容传送到片内RAM的40H-4FH单元中。若发生传输错误,则LED灯闪烁。a) 实验原理图 图7 扩展存储器实验接线路图注:连接线路图时,若使用PIT+实验箱,需将BE3-BE0接GNDb) 实验步骤1. 按原理图7连接线路2. 按实验内容编写实验程序,经编译、链接无误后启动调试3. 打开存储器观察窗口,在存储器#1的Address中输入D:0x30,在存储器#2的Address中输入X:0x0000来监视存储器空间。4. 可单步运行程序,观察存储器内容的变化或设置断点再运行程序。c) 实验参考程序 ORG 0000HAJMPMAINMAIN:MOV R0,#30H;将00H-0FH写入RAM内30H-3FH MOVA,#00HMOVR1,#10HL1:MOVR0,AINCR0 INCADJNZR1,L1MOVR1,#10H;写入外部RAM0000H-000FH中 MOVDPTR,#0000HMOVR0,#30HL2:MOVA,R0MOVXDPTR,A

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 幼儿教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号