单片机实验报告

单片机与嵌入式系统

实验报告

  


一、  软件模拟调试实验:

本部分实验内容主要为指令系统和汇编语言程序设计。采用软件模拟调试的方法,目的在于通过这些实验使学生巩固所学知识,加深对MCS-51单片机内部结构、指令系统的理解,更进一步掌握汇编语言程序设计的方法和技巧。

实验一 数据传送实验

实验目的

1、熟悉软件模拟调试环境。

2、掌握汇编语言程序设计的方法,加深对指令的理解。

3、学会软件模拟调试和察看、验证结果方法。

4、印证数据传送指令的功能、寻址方式以及PC指针、SP指针、DPTR指针、Ri指针分别对代码段、堆栈段、外扩数据存储器段、位寻址区等不同存储器的访问方式。

实验步骤

1、进入调试软件环境,输入源程序;

2、汇编源程序;

3、用单步方式运行程序;

4、检查并记录各寄存器和存储单元内容的变化。

实验内容:

将8031内部RAM 40­H—4FH单元置初值A0­H—AFH,然后将片内RAM 40­H—4FH单元中的数据传送到片内RAM 50­H—5FH单元。将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。

源程序清单:

                       ORG 0000H

         RESET:AJMP MAIN

                            ORG 003FH

         MAIN:   MOV         R0,#40H

                           MOV         R2,#10H

                            MOV         A,#0A0H

         A1:         MOV         @R0,A

                            INC            R0

                            INC            A

                            DJNZ         R2,  A1                    

            MOV    R1,#10H                

                            MOV         R0, #50H

                            MOV         R2,  #10H

         A3:            MOV         A,  @R1

                            MOV         @R0,  A

                            INC R1

                            INC R2

                            DJNZ         R2,  A3

                            SJMP $

            END

实验结果与分析:

1、 按照实验内容补全程序。

2、对源程序进行编译并查看相应程序存储器的内容,将源程序对应的机器码记录入下表,掌握ORG伪指令及汇编的过程。

ORG的作用及相关注意事项:

 ORG表示之后的语句从哪里开始,有的单片机里面的固定区域是用来做堆栈或者是子程序跳转地址的入口

PC表示:  下一条要执行的指令           

PSW表示:  程序状态字             ,其各位的含义为: cy进位标志位    AC辅助进位标志位                                                             

 Ov溢出标志位   p校验位    

SP表示:       堆栈指针                                                        

R0~R7的物理位置:     0000H-0007H                                                           

3、运行机器码,查看片内数据区、CPU内寄存器的变化情况,按要求将结果记录入下表。

单片机上电复位之后,PC= 0000    ,PSW= 00H     SP=   07H      则单片机用       第一组工作寄存器组,R0~R7的物理位置为:   0000-0007H

用单步方式运行程序,观察实验过程中PC、A、 R0、R2中内容的变化情况,程序执行结束后,将相应的RAM中各单元的内容补充完整。 

实验二  多字节十进制加法实验

实验目的

1、掌握数据块的传送操作和算术运算指令的应用。

2、掌握BCD码加法的使用。

实验步骤

1、进入调试软件环境,输入源程序;

2、汇编源程序;

3、用单步方式运行程序;

4、检查并记录各寄存器和存储单元内容的变化。

实验内容:

多字节十进制加法。加数首地址由 R0 指出,被加数和结果的存储单元首地址由R1指出,字节数由R2 指出。将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。

源程序清单:

         ORG 0000H

         RESET:      AJMP        MAIN

                            ORG 0100H

         MAIN:  MOV SP,  #60H

                            MOV         R0,  #31H

                            MOV         @R0,  #22H

                            DEC R0

                            MOV         @R0,  #33H

                            MOV         R1,  #21H

                            MOV         @R1,  #44H

                            DEC R1

                            MOV         @R1,  #55H

                            MOV         R2,  #02H

                            ACALL       DACN

         HERE:       AJMP        HERE

         DACN:      CLR           C

         DAL: MOV         A,  @R0

                            ADDC       A,  @R1

                            DA     A

                            MOV         @R1,  A

                            INC            R0

                            INC            R1

                             DJNZ R2,DAL   

                            CLR           A

                            MOV         ACC.0 ,  C

                            RET

实验结果与分析

1、按照实验内容补全程序。

2、加数单元、被加数单元和结果单元的地址和内容为? (按十进制加法格式,高位在左,低位在右,将实验数据填入下图相应的单元中)

此时(PSW)=      0000     

3、如何检查双字节相加的最高位溢出?

看PSW的CY位是否为1

4、改变加数和被加数,测试程序的执行结果。

(1)操作数改为:     5678      +          2345 

  此时(PSW)=       0000        

(2)操作数改为:     5201H      +  8301H         

  此时(PSW)=        80H      

(3)操作数改为:      7733     +   5888        

  此时(PSW)=       81        


实验三  数据排序实验

实验目的

1、进一步熟悉MCS-51指令系统,了解汇编语言程序设计的基本结构。

2、掌握循环结构程序设计的方法,弄清单重及多重循环控制过程。

实验步骤

1、进入调试软件环境,输入源程序;

2、汇编源程序;

3、用单步方式运行程序;

4、检查并记录各寄存器和存储单元内容的变化。

实验内容:

将内部RAM 50H—59H中的数据按从小到大的次序排列。将程序经模拟调试通过后,运行程序,检查相应的存储单元的数据是否为排序状态。

源程序清单:

                       ORG 0000H

         RESET:      AJMP        MAIN

                            ORG 0100H

         MAIN:      MOV         SP,  #60H

                            MOV         R0,  #50H

                            MOV         @R0, #6FH

                            INC            R0

                            MOV         @R0, #6EH

                            INC            R0

                            MOV         @R0, #6AH

                            INC            R0

                            MOV         @R0, #6CH

                            INC            R0

                            MOV         @R0, #6DH

                            INC            R0

                            MOV         @R0,  #5BH

                            INC            R0

                            MOV         @R0, #67H

                            INC            R0

                            MOV         @R0, #69H

                            INC            R0

                            MOV         @R0, #68H

                            INC            R0

                            MOV         @R0,  #64H

                            ACALL       QUE

         HERE:       AJMP        HERE

         QUE:         CLR           00H

                            MOV         R7, #09H

                            MOV         R0,  #50H

                            MOV         A ,  @R0

         L2:             INC            R0

                            MOV         R2,  A

                            SUBB        A, @R0

                            MOV         A,  R2

                            JC              L1

                            SETB         00H

                            XCH A, @R0

                            DEC R0

                            XCH A, @R0

                            INC            R0

         L1:             MOV         A,  @R0

                            DJNZ         R7, L2

                            JB              00H, QUE

                            RET

实验结果与分析:

1、按照实验内容补全程序。

2、说明该排序算法的基本原理和过程。

先将10个数放到50~59H中,然后调用QUE进行排序。两个数比较,前者大的则交换。

3、检查程序执行结果。

排序前

排序后

3、若对实验数据按从大到小次序排序,则需要对源程序做哪些修改?

JC L1 变为JNC L1

实验结果与分析

排序前

排序后

实验四  统计数的个数

实验目的

1、进一步熟悉MCS-51指令系统,了解汇编语言程序设计的基本结构。

2、掌握分支结构程序设计的方法。

3、学会用条件转移指令、CJNE、及其配合使用来编写二分支、三分支程序。

实验内容:

片内RAM从20H单元开始存有10个带符号数,求统计出其中大于0,小于0和等于0的个数,并存放于片内RAM 30H,31H,32H三个单元中。

源程序清单(补充完整)

ORG 0100H

    MOV 30H,#00H

    MOV 31H,#00H

    MOV 32H,#00H

    MOV R0,#10

    MOV R1,#20H

    MOV 20H,#1

    MOV 21H,#2

    MOV 22H,#3

    MOV 23H,#-1

    MOV 24H,#-2

    MOV 25H,#0

    MOV 26H,#0

    MOV 27H,#-1

    MOV 28H,#-2

    MOV 29H,#2

LOP:   MOV A,@R1

    JZ L1

    JB ACC.7,L2

    INC 31H

    SJMP STOP

L2: INC 30H

    SJMP STOP

L1: INC 32H

STOP:  INC R1

    DJNZ R0,LOP

    SJMP $

    END

实验数据

二、  硬件在线仿真实验:

   

实验五  电子钟实验

  

实验目的:

1、学会用MOVC指令编写查表程序。

2、掌握MCS-51单片机中定时器的工作原理及综合应用。

3、熟悉集成软件调试环境,并掌握调试程序的方法和硬件在线仿真技术。

实验内容:

    熟悉单片机在线仿真调试方法。将仿真头插入实验板的CPU插座中,再打开电源,输入程序进行调试。程序运行时,按下S0键,蜂鸣器发出响声,两个数码管开始从零显示时间,定时器定时时间为一分钟,定时时间到,蜂鸣器再次发出响声,重新按下S0键,重复上述过程。

源程序清单:

           ORG 0000H

  START:

           AJMP MAIN

           ORG            000BH

           AJMP PIT0

           ORG            0100H

    MAIN: 

           MOV           SP,#60H

           MOV           50H,#00H

           MOV           51H,#00H

           ACALL         DISPLAY

           MOV           TMOD,#01H

           MOV           TL0,#0B0H

           MOV           TH0,#3CH

           ACALL         KEY         

           CLR              P2.7

           ACALL         LONGDELAY

           SETB            P2.7

           SETB            00H

           SETB            TR0

           SETB            EA

           SETB            ET0

           MOV           30H,#20

    ML0:

           ACALL         DISPLAY

           MOV           C,00H

           JC                 ML0

           CLR              P2.7

           ACALL         LONGDELAY

           SETB            P2.7

                            CLR TR0

           AJMP          MAIN

    PIT0:

           PUSH PSW

           PUSH ACC

           SETB            PSW.3

           MOV           TL0,#0B0H

           MOV           TH0,#3CH

           MOV           A,30H

           DEC             A

           MOV           30H,A

           JNZ              RET0

           MOV           30H,#20

           MOV           R0,#51H

           ACALL         DAAD1

           MOV           A,R2

           XRL              A,#60H

           JNZ              RET0

           ACALL         CLR0

           CLR              00H

      RET0:

           POP             ACC

           POP             PSW

           RETI

     DAAD1:

           MOV           A,@R0

           DEC             R0

           SWAP A

           ORL             A,@R0

           ADD            A,#01H

           DA               A

           MOV           R2,A

           ANL             A,#0FH

           MOV           @R0,A

           MOV           A,R2

           INC              R0

           ANL             A,#0F0H

           SWAP A

           MOV           @R0,A

           RET

     CLR0:

           CLR              A

           MOV           @R0,A

           DEC             R0

           MOV           @R0,A

           RET

     DISPLAY:

           MOV           A,50H

           MOV           DPTR,#TABLE

           MOVC         A,@A+DPTR

           MOV           P2,A

           MOV           A,51H

           MOV           DPTR,#TABLE

           MOVC         A,@A+DPTR

           MOV           P0,A

           CLR              P0.7

           LCALL DELAY

           RET

     KEY:

           MOV           C,P3.0

           JC                 KEY

           ACALL         DELAY

      KEY1:

           MOV           C,P3.0

           JNC              KEY1

           ACALL         DELAY

           RET    

      DELAY:

           MOV           R1,#250

       LOOP:

           DJNZ           R1,LOOP

           RET

  LONGDELAY:

           MOV           A,R0

           PUSH ACC

           MOV           A,R1

           PUSH ACC

           MOV           R1,#250

     LOOP1:

           MOV           R0,#250

     LOOP2:

           NOP

           NOP

           NOP

           NOP

           NOP

           DJNZ           R0,LOOP2

           DJNZ           R1,LOOP1    

           POP             ACC

           MOV           R1,A

           POP             ACC

           MOV           R0,A

           RET

     TABLE:

           DB      0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H  

     END                                                                                     

实验结果与分析

1、程序中哪部分为显示程序?

DISPLAY为显示程序

2、程序中如何秒钟的实现一定时?

每次定50毫米,20次就是1秒

3、写出各段子程序的作用。

KEY:检测按键

DELAY:延时

LONGDELAY:长延时

DISPLAY:显示

DAAD1:

PIT0:定时器0的中断处理函数

4、根据实验要求画出简要的电路连接

 

第二篇:单片机实验报告习题

1. KeilC51开发环境的学习的实验

1. 简述建立一个工程的步奏

2. 画出调试状态下仿真器存储空间分配图,并根据该图说明内部MON51监控程序的

作用,并说明ORG指令的作用。

3. 简述DPflash程序的作用。

4. Keilc 51软件将用户调试程序在线下载到仿真器中准备开始调试运行的菜单命令式

什么?

2. 串转并的I/O口实验

以下是74HC164芯片的内部原理图:

单片机实验报告习题

2.1.简单说明串转并的作用。

2.2画出74HC164芯片的真值表,根据真值表说明:

A: clock引脚为低电平时的作用?

B: 为什么实验中要将B引脚设置为高电平?(参考内部原理图)

2.3.实验中如果需要输出的数据为 #CCH , Q0~Q7输出引脚分别为什么信号(用2进制数据标示)?

2.4 简单说明CLEAR引脚的作用

2.5 简单说明RLC指令的作用

3. 并转串的I/O口实验

以下是74HC165芯片的内部原理图:

单片机实验报告习题

3.1简单说明并转串的作用 3.2根据内部原理图,说明该165器件内部使用的是什么触发器? 3.3根据该触发器的类型,说明SER引脚的作用。 3.4 说明PL引脚的作用? 3.5 如果拨线开关状态为 11001100B ,那么并转串完毕后得到的值为多少?

4. 串行模数转换实验

4.1画出实验电路原理图。

4.2说明参考高电平和参考低电平的作用。

4.3 计算该电路图A/D转换的分辨率。

4.4 查阅相关资料,说明A/D转换芯片的3个性能指标(分辨率,误差,转换时间)的意义。

5. 时钟中断实验

5.1简述时钟的4种工作模式

5.2 说明如计算时钟定时器初值的方法

5.3 根据该实验内容,说明TMOD寄存器、TCON寄存器的控制方式。

5.3 简单说明CPU要响应中断的条件

6. 串口通讯实验

6.1 简述 TTL电平规范和RS232电平规范的差异,以及MAX232芯片的作用。

6.2 简述 产生9600波特率定时器初值的计算方法,并计算。

6.3 简述3种串口通讯方式的差异。

7. 数码管

7.1 简述共阴级和共阳级数码管的区别。

7.2. 分别计算共阴极和共阳极数码管显示数字5时的驱动码。

7.3. 简述数码管的静态显示和动态显示的方法。

相关推荐