单片机实验.docx

上传人:sk****8 文档编号:2188608 上传时间:2019-05-01 格式:DOCX 页数:8 大小:31.57KB
下载 相关 举报
单片机实验.docx_第1页
第1页 / 共8页
单片机实验.docx_第2页
第2页 / 共8页
单片机实验.docx_第3页
第3页 / 共8页
单片机实验.docx_第4页
第4页 / 共8页
单片机实验.docx_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、1实验一、MCS51单片机基本开发环境 1 实验目的: 1) 熟悉软件的集成开发环境 2) 掌握单片机软件设计流程 3) 掌握单片机存贮器结构及各窗口之间的联系 2 实验内容: 1) 用三种方法实现将累加器A 内容改为20H 方法1-MOV A,#20H方法2MOV R0,#20HMOV A,R0方法3MOV R0,#20HXCH A,R0心得:越往下做实验时就越感觉这题根本不能说是题目,但不得不说在没接触过编程软件,刚开始学的汇编,第一次做的实验就光这道题都觉得不知道做什么.所以凡是总有开始,不了解情况的多简单的都会觉得难.2) 将58H 位单元置为 1,观察内部 RAM中2BH内容的变化代

2、码 :SETB 2BH.0JMP $END心得:这是关于内部存储中对单元和字节了解,不理解很容易做错.比如开始写的指令为MOV R0,#58H;MOV R0,#1这是错误的指令。这就需要认真去了解单片机中的字节地址与位地址的关系。80C51中有位寻址区和字节寻址区。题目中58H为位地址,2BH为字节地址,且58H为2B字节的最低位。由于58H属于位寻址区,可用位操作指令 SETB 进行置位,SETB 2BH.0 执行后,2中内容变为3) 如果当前状态为有进位、工作寄存器使用区2,请用 3种方法设置这种状态代码 :ANL PSW,#01HMOV A,PSW CJNE A,#01,LAB2LAB1

3、:JMP LAB1LAB2: SETB PSW.4 MOV P0,#01H MOV R0,#18H CLR PSW.3 MOV C,P0.0 MOV PSW,R0MOV PSW.4,CCPL CMOV PSW.3,C END心得:以上写了三段代码,可分别完成题目要求。不过实验时只是对代码进行了错误调试,没有对结果进行检验。其中值得注意的是对于布尔(位)操作指令的用法,比如传送指令必须经累加器 C,如第二段中 MOV P0,#01H ; MOV C,P0.0 ,以及对于位寻址的方式(如需用到“.”隔开)的应用。24) 编一个小程序将内部RAM中的20H单元的内容送到21H单元并调试代码 :MOV

4、 R0,#20HMOV R0,#10HMOV R1,#21HMOV R1,20HJMP $END5) 用程序将堆栈指针指向 60H,然后在堆栈中依次压入 01,02,03,04,05 五个数,观察哪些单元内容发生了变化,各变为多少?从哪些窗口可以发现这些变化?顺序将堆栈中的五个数放入 30H34H 五个单元中,编程实现之。代码 :MOV R1,#60HMOV SP,R1MOV DPL,#1HLAB1:PUSH DPLINC DPLMOV A,DPLCJNE A,#6,LAB1POP 34HPOP 33HPOP 32HPOP 31HPOP 30HJMP $END6) 将外部数据存贮器1000H1

5、00FH 16个单元中存放00H0FH 代码 :MOV DPTR,#1000HMOV R1,#10HLOOP:MOVX DPTR,#1234HMOVX A,DPTRMOV R1,AINC DPTRINC R1CJNE R1,#40H,LOOPJMP $END心得:此处需要访问片外存储空间,需要借助寄存器,需注意其为位的寄存器,在使用时若与八位寄存器进行数据交换时需分为高八位与低八位来用。37) 若要求程序从0010H单元开始运行,可用两种方法实现?方法一 ORG 0010H方法二 AJMP 0010H 3 选做实验内容:数据传送 目的: 1) 掌握8051单片机内部数据存贮器、外部数据存贮器的

6、数据传送特点和应用2) 掌握MOV,MOVX和MOVC类指令的用法及区别内容: 1) 将片内RAM 数据区20H为首地址的十六个字节传送到 30H为首地址的数据区,即:20H2FH送30H3FH 代码 :ORG 0000HJMP MAINORG 0030HMAIN:MOV R0,#20HMOV R1,#30HLOOP:MOV R0,#1234HMOVA,R0MOV R1,AINC R0INC R1CJNE R1,#30H,LOOPJMP $END2) 将外部数据存储器 2000H200FH单元的十六个数传送至内部数据存储器的30H3FH 代码 :ORG 0000HJMP MAINORG 003

7、0HMAIN: MOV DPTR,#2000HMOV R1,#30HLOOP:MOVX DPTR,#12HMOVX A,DPTRMOV R1,AINC DPTRINC R1CJNE R1,#40H,LOOPJMP $4END总体心得体会:第一次做实验主要是熟悉了解了下单片机编程软件的使用,开始接触时在对其软件不是太了解的情况下实验编程做的确实很乱,不清楚该怎样进行,比如不知如何进行对指令的调试,也不清楚该如何观察结果,没有一个整体的概念,所以在了解其开发环境上花了不少时间。经过一段时间的摸索后也终于了解了其具体的使用,也能够顺利的对指令的编程运用。运行指令时遇到的一些问题需要注意的也在上面各题

8、中做了说明。还有需要注意的是:进入软件仿真时需要对存储空间进行查看的方法是在Address窗口中输入:d:00h 显示内部数据存储器从00h开始的单元; x:1000h 显示外部数据存储器从1000h开始的单元; c:0000H 显示程序存储器内容。还有由于伪指令 END 定义的原因,在程序末需加一条死循环调转指令(如 JMP $ )使程序不会进入其他未知空间执行其他指令。5实验二、加、减法实验 1 实验目的 1) 正确使用单片机的加减运算指令 2) 掌握不同指令对于程序状态字的影响及程序状态字的意义、用处 3) 掌握ADD , ADDC,SUBB 和DA A 等指令的用法4) 学习模块化程序

9、设计方法 2 实验内容 1) 编写3字节二进制加法子程序,并用主程序调用不同的加数和被加数来检测该子程序的正确性。需考虑有进位和无进位情况。程序入口为: 加数:22H,21H,20H三字节, 22H为最高位被加数:32H,31H,30H 三字节,32H为最高位程序出口为: 23H,22H,21H ,20H四字节,23H为最高位例如:地址:23 22 21 20 32 31 30 执行前数据: 01 23 45 FF 01 01 执行后数据:01 00 24 46 代码 :ORG 0000HAJMP MAINORG 30HMAIN:MOV 22H,#01HMOV 21H,#23HMOV 20H,

10、#45HMOV 32H,#0FFHMOV 1H,#01HMOV 30H,#01HACALL ADDI HERE:JMP HEREORG 100HADDI:PUSH PSWMOV R0, #20H ;加数1地址、和的地址MOV R1, #30H ;加数2地址CLR CMOV R2, #3 ;循环3次LOOP:MOV A, R0 ;取ADDC A, R1 ;加MOV R0, A ;存INC R0INC R1DJNZ R2, LOOPCLR A6ADDC A, #0 ;得到进位MOV 23H, A ;保存POP PSWRETEND2) 编写三字节二进制减法子程序 入口:被减数: 52H,51H,50

11、H, 50H为最低位减数: 42H,41H,40H, 40H为最低位出口:差:外部数据存贮器2003H2000H (2000H 为最低位) 用主程序调用多组数据来调试,需考虑无借位和有借位两种情况。 例如: 执行前:地址: 52 51 50 42 41 40 数据: 90 80 70 10 10 10 执行后:地址: 2003 2002 2001 2000 数据: 00 80 70 60代码 :ORG 0000HAJMP MAINORG 30HMAIN:MOV 52H,#90HMOV 51H,#80HMOV 50H,#70HMOV 42H,#10HMOV 41H,#10HMOV 40H,#10

12、HACALL SUB1HERE:JMP HERESUB1:PUSH PSW MOV R0, #50H ;被减数地址MOV R1, #40H ;减数地址MOV DPTR, #2000H ;差的地址CLR CMOV R2, #3 ;循环3次LOOP:MOV A, R0 ;取SUBB A, R1 ;减MOVX DPTR, A ;存INC R0INC R1INC DPTRDJNZ R2, LOOPCLR ASUBB A, #0 ;得到借位7MOVX DPTR, A ;存POP PSWRETEND3) 编写10位十进制加法子程序(十进制数采用压缩 BCD码存放) 入口: 加数:24H20H,低地址放低字

13、节被加数:29H25H,低地址放低字节出口 和:4005H4000H,低地址放低字节要求调用多组数据调试,注意观察PSW的变化,理解DA A指令的含义。例如: 执行前地址:24 23 22 21 20 29 28 27 26 25 数据:12 34 56 78 90 88 99 33 12 74 执行后地址:4005 4004 4003 4002 4001 4000 数据: 01 01 33 89 91 64 代码 :ORG 0000HAJMP MAINORG 30HMAIN:MOV 24H,#12HMOV 23H,#34HMOV 22H,#56HMOV 21H,#78HMOV 20H,#90HMOV 29H,#88HMOV 28H,#99HMOV 27H,#33HMOV 26H,#12HMOV 5H,#74HACALL ADD2HERE:JMP HEREADD2:PUSH PSWMOV R0, #20H ;加数 1 地址MOV R1, #25H ;加数 2 地址MOV DPTR,#4000HCLR CMOV R2, #5 ;循环 5 次LOOP:MOV A, R0 ;取ADDC A, R1 ;加DA A ;调整为 BCD 码MOVX DPTR, A ;存INC R0INC R18INC DPTRDJNZ R2, LOOPPOP PSWRETEND

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

当前位置:首页 > 教育教学资料库 > 课程笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。