单片机实验报告

时间:2024.5.8

单片机实验报告

  

目录

软件实验一 2

软件实验二 4

软件实验三 6

软件实验四 9

软件实验五 13

硬件实验一 17

硬件实验二 23

硬件实验三 29

硬件实验四 33

          软件实验一  数据传送实验

一、实验内容

1.编写程序,将内部RAM中30H-5FH中的数据设置为55H。

2.编写程序,将内部RAM中30H-5FH中的内容传送到90H开始的内部RAM中去。

3.编写程序,将内部RAM中30H-5FH中的内容传送到200H开始的外部RAM中去(注意实际系统中为扩展的内部RAM)。

二、实验目的与要求

1.学习与掌握针对不同区域RAM的操作方法。

2.学习与掌握指针的使用与循环程序的编写方法。

3.学习与掌握如何查看各个部分存储器的内容。

三、实验说明

对于不同区域的RAM操作需要使用不同的寻址方式与指令。对于内部RAM的低128字节,可以使用直接寻址也可以使用间接寻址;对于内部RAM的高128字节,只能使用间接寻址;对于外部RAM,只能使用指针DPTR进行间接寻址。对于数据块的操作一般使用循环程序完成。

编写程序并编译(build)检查语法错误。编译通过后进入调试环境,单步执行程序检查程序的正确性。最后连续执行程序并检查RAM内容是否正确。

椭圆:  开始注意主程序的最后应该加一条SJMP $ 指令,以避免由于连续执行时无法停机而造成无法预料的后果。

四、实验程序流程图

 

流程图: 决策: 传送结束?                                                                                                         N

 

五、实验程序

        ORG  0000H

        LJMP  MAIN

        ORG  0100H

MAIN:        MOV  SP,#70H

        MOV  A,#55H

            MOV  R7,#30H

MOV  R0,#30H

LOOP1:       MOV  @R0,A

              INC  R0

DJNZ  R7,LOOP1

;

MOV  R6,#30H

MOV  R0,#30H

MOV  R1,#90H

LOOP2 :     MOV  A,@R0

             MOV  @R1,A

INC  R0

INC  R1

DJNZ  R6,LOOP2

;

MOV  R7,#30H

                  MOV  R0,#30H

                   MOV  DPTR,#0200H

LOOP3:       MOV  A,@R0

                  MOVX  @DPTR,A

                   INC  R0

                  INC  DPTR

                  DJNZ  R7,LOOP3

WAIT: SJMP  WAIT

      END

实验一第1题结果图:

 

实验一第2题结果图:

 

实验一第3题结果图:

 

软件实验二  数据分类与校验实验

一、实验内容:

1.编写程序,将内部RAM中30H-5FH中的数据设置为1-48。

2.编写程序,将内部RAM中30H-5FH中的奇数传送到90H开始的内部RAM中去。

3.编写程序,将内部RAM中30H-5FH中的数据按照奇校验设置最高位。

二、实验目的与要求:

1.学习与掌握判断数据奇偶性的方法。

2.学习与掌握分支程序的编写方法。

3.学习与掌握如何给存储器中的数据增加校验位。

三、实验说明:

汇编语言中判断数据的奇偶性很简单,数据的最低位为1为奇数,否则为偶数。分支处理是程序设计中的基本技巧,是根据某一条件是否成立执行或不执行规定操作的方法。数据的奇偶校验不是判断数据的奇偶性,而是判断数据中有奇数个1还是偶数个1。如果是奇校验,则增加校验位后的数据应该具有奇数个1。

编写程序并编译(build)检查语法错误。编译通过后进入调试环境,单步执行程序检查程序的正确性。最后连续执行程序并检查RAM内容是否正确。

椭圆: 开始四、实验程序流程图:

    (传送奇数)

 

流程图: 决策: 是奇数?

                                                        Y

 

流程图: 决策: 传送结束?                                                                                                         N

 

五、实验程序 

       ORG  0000H

       LJMP  MAIN

       ORG  0100H

MAIN : MOV  SP,#70H

       MOV  R0,#30H

       MOV  R1,#30H

LOOP1:MOV  A,#31H

       SUBB  A,R0

       MOV  @R1,A

       INC  R1

       DJNZ  R0,LOOP1

;

       MOV  R7,#30H

       MOV  R0,#30H

       MOV  R1,#90H

LOOP2:MOV  A,@R0

       ANL  A,#01H

       JZ  L2

       JNZ  L1

L1: MOV  A,@R0

MOV  @R1,A

INC  R1

SJMP  L2

L2: INC  R0

       DJNZ  R7,LOOP2

;

MOV  R7,#30H

MOV  R0,#30H

LOOP3: MOV  A,@R0

JNB  P,L3

JB  P,L4

    L3:SETB  0E7H

       MOV  @R0,A

    L4:INC  R0

       DJNZ  R7,LOOP3

WAIT : SJMP  WAIT

       END

实验2第一、三题.png实验二第1、3题结果图:

实验2第二题.png实验二第2题结果图:

软件实验三  简单算术运算实验

一、实验内容:

1.编写程序,计算Z=X+Y+30。X、Y为位于内部RAM 30H、31H单元的单字节BCD变量。Z位于32H33H,低位字节在前。

2.编写程序,计算Z=X*10+Y/5-10。X、Y为位于内部RAM 30H、31H单元的单字节变量,Z位于32H33H,低位字节在前。

3.编写程序,计算1-100的累加和。结果存放于内部RAM的30H、31H中。低位字节在前。

二、实验目的与要求:

1.学习与掌握算术运算指令的使用方法。

2.学习与掌握BCD数据运算的处理方法。

3.学习与掌握多字节数据的运算方法。

三、实验说明:

MCS-51单片机的算术运算指令比较简单,因此功能也比较差。所有的算术运算必须使用累加器进行。如果数据和运算结果都是8位,则处理要简单得多。如果数据和结果高于8位,则必须做多字节运算的处理。

应该使用不同的数据对程序进行检验。在第一个程序中,可 分别令X=10、Y=20和X=100、Y=200。在第二个程序中,可分别令X=10、Y=30和X=100、Y=200。

编写程序并编译(build)检查语法错误。编译通过后进入调试环境,单步执行程序检查程序的正确性。最后连续执行程序并检查RAM内容是否正确。

四、实验程序流程图:

    (数据累加)

 

椭圆: 停止                                                                                     N

 

五、编程内容

 ORG  0000H

      LJMP  MAIN

      ORG  0100H

MAIN:MOV  SP,#70H

      MOV  30H,#99H

       MOV  31H,#99H

       MOV  A,30H

       ADD  A,31H

       DA  A

       MOV  32H,A

       MOV  A,#0

       ADDC  A,#0

       DA  A

       MOV  33H,A

       MOV  A,32H

       ADD  A,#30H

       DA  A

       MOV  32H,A

       MOV  A,33H

       ADDC  A,#0

       DA  A

       MOV  33H,A

;

       MOV  30H,#100

       MOV  31H,#100

       MOV  A,#10

       MOV  B,A

       MOV  A,30H

       MUL  AB

       MOV  32H,A

       MOV  33H,B

       MOV  A,#5

       MOV  B,A

       MOV  A,31H

       DIV  AB

       ADD  A,32H

       SUBB  A,#10

       MOV  32H,A

       MOV  A,33H

       ADDC  A,#0

       MOV  33H,A

;

       MOV  R7,#100

       MOV  R0,#1

       MOV  30H,#0

       MOV  31H,#0

       MOV  A,#0

LOOP1:MOV  A,30H

       ADD  A,R0

       MOV  30H,A

       MOV  A,31H

       ADDC  A,#0

       MOV  31H,A

       INC  R0

       DJNZ  R7,LOOP1

;

  WAIT:SJMP  WAIT

          END

实验三第1题结果图:

实验六第一题.png

实验三第2题结果图:

 

实验三第3题结果图:

 

软件实验四  定点数算术运算实验

一、实验内容:

1.编写2字节乘2字节子程序。乘数位于R2R3,被乘数位于R4R5。结果存放于R4R5R6R7内。

2.编写2字节除以2字节子程序。除数位于R2R3,被除数位于R4R5。结果存放于R4R5,余数存放于R6R7内。

二、实验目的与要求:

1.学习与掌握常用基本子程序的编写方法。

2.学习与掌握多字节算术运算程序的编写方法。

3.学习与掌握主程序调用子程序的方法。

三、实验说明:

将常用的基本子程序编写出来,以后直接调用,可以提高编程的效率。商业软件中都提供这些基本子程序库,自己编写可以进一步了解其功能与使用方法。

多字节的加减法程序比较容易编写,只是要注意进位问题。多字节乘法可以利用单字节乘法来实现,有关教材中已经有所介绍。多字节除法不能用单字节除法实现,只能用移位相减的方法实现。进行除法前必须进行除0检验。

编译通过后进入调试环境,单步执行程序并检查程序的正确性。最后连续执行程序并检查RAM中运算是否正确。应该多使用几组数据进行检验,以确保程序的正确性。

椭圆: 开始四、实验程序流程图:

       (多字节除法)

 

流程图: 决策: 余数>除数?                                                        Y

 

流程图: 决策: 移位结束?                                                                                                         N

 

五、实验程序

1、

       ORG  0000H

       LJMP  MAIN

       ORG  0100H

MAIN : MOV  SP,#70H

MOV  R2,#1

       MOV  R3,#1

       MOV  R4,#2

       MOV  R5,#2

       MOV  A,R2

       MOV  B,R4

       MUL  AB

       MOV  30H,A

       MOV  31H,B

       MOV  A,R3

       MOV  B,R4

       MUL  AB

       ADD  A,31H

       MOV  31H,A

       MOV  A,B

       ADDC  A,#0

       MOV  32H,A

       MOV  A,#0

       ADDC  A,#0

       MOV  33H,A

    

       MOV  A,R2

       MOV  B,R5

       MUL  AB

       MOV  40H,A

       MOV  41H,B

       MOV  A,R3

       MOV  B,R5

       MUL  AB

       ADD  A,41H

       MOV  41H,A

       MOV  A,B

       ADDC  A,#0

       MOV  42H,A

       MOV  R4,30H

       MOV  A,31H

       ADD  A,40H

       MOV  R5,A

       MOV  A,32H

       ADDC  A,41H

       MOV  R6,A

       MOV  A,42H

       ADDC  A,33H

       MOV  R7,A

WAIT : SJMP WAIT

       END   

2、

       ORG  0000H

       LJMP  MAIN

       ORG  0100H

MAIN : MOV  SP,#70H

       MOV  R2,#12H

       MOV  R3,#34H

       MOV  R4,#56H

       MOV  R5,#78H

       MOV  A,#0

       MOV  R6,A

       MOV  R7,A

       MOV  50H,#16

LOOP1:CLR  C

       MOV  A,R5

       RLC  A

       MOV  R5,A

       MOV  A,R4

       RLC  A

       MOV  R4,A

       MOV  A,R7

       RLC  A

       MOV  R7,A

       MOV  A,R6

       RLC  A

       MOV  R6,A

       MOV  A,R7

       SUBB  A,R3

       MOV  R0,A

       MOV  A,R6

       SUBB  A,R2

       MOV  R1,A

       JNB  CY,L1

       JB  CY,L2

    L1:INC  R5

       MOV  A,R0

       MOV  R7,A

       MOV  A,R1

      MOV  R6,

   L2:DJNZ  50H,LOOP1

WAIT: SJMP  WAIT

      END

实验四第1题结果图:

实验四第一题(乘法).png

实验四第2题结果图:

实验四第二题(除法).png

软件实验五  数制转换实验

一、实验内容:

1.编写程序,将内部RAM中30H中的二进制数据转换为十进制数据并存放在31H、32H、33H中。

2.编写程序,将内部RAM中30H-3FH中的16进制数据(0-F)转换为ASCII码并存放在40H-4FH中。

3.编写程序,将内部RAM中30H31H中的双字节二进制数据转换为十进制数据的ASCII码并存放在40H开始的单元中。

二、实验目的与要求:

1.学习与掌握基本的数制转换程序的编写方法。

2.学习与掌握ASCII码数据的处理方法。

3.学习与掌握多字节二进制数据的转换方法。

三、实验说明:

数据在各种不同数制与编码之间的转换是经常要使用的处理过程。不同数制之间的转换有多种方法,也有一定的技巧,可以参考教材中的程序例子。应该使用不同的数据对程序进行检验。在第一个程序中,可以令所转换的数据为10,99,250。在第二个程序中,应该令数据为0-15。在第三个程序中,可以令所转换的数据为10,255,2000,65535等。

程序编译通过后进入调试环境,单步执行程序检查程序的正确性。最后连续执行程序并检查RAM中的转换结果是否正确。

椭圆: 开始四、实验程序流程图:

(二进制到十进制数据转换)

 

五、实验程序

1、

       ORG  0000H

       LJMP  MAIN

       ORG  0100H

MAIN : MOV  SP,#70H

       MOV  30H,#71H

       MOV  A,30H

       MOV  B,#100

       DIV  AB

       MOV  31H,A

       MOV  A,B

       MOV  B,#10

       DIV  AB

       MOV  32H,A

       MOV  33H,B

WAIT : SJMP  WAIT

          END

2、

       ORG  0000H

       LJMP  MAIN

       ORG  0100H

MAIN : MOV  SP,#70H

       MOV  R7,#16

       MOV  R0,#30H

       CLR  A

LOOP1:MOV  @R0,A

       INC  A

       INC  R0

       DJNZ  R7,LOOP1

;

       MOV  R7,#16

       MOV  R0,#30H

       MOV  R1,#40H

       MOV  R2,#9

LOOP2:MOV  A,@R0

          SUBB  A,R2

          JB  CY,L1

          JNB  CY,L2

       L1:MOV  A,#30H

ADD  A,@R0

MOV  @R1,A

SJMP  L3

       L2: MOV  A,#37H

ADD  A,@R0

MOV  @R1,A

SJMP  L3

L3: INC  R0

INC  R1

DJNZ  R7,LOOP2

WAIT: SJMP  WAIT

          END

3、

ORG  0000H

LJMP  MAIN

ORG  0100H

MAIN : MOV  SP,#70H

MOV  30H,#11H

MOV  31H,#22H

MOV  40H,#0

MOV  41H,#0

           MOV  42H,#0

          CLR  C

    

       MOV  R7,#16

LOOP1:MOV  A,31H

       RLC  A

       MOV  31H,A

       MOV  A,30H

       RLC  A

       MOV  30H,A

       MOV  A,42H

       ADDC  A,42H

       DA  A

       MOV  42H,A

       MOV  A,41H

       ADDC  A,41H

       DA  A

       MOV  41H,A

       MOV  A,40H

       ADDC  A,40H

       DA  A

       MOV  40H,A

       DJNZ  R7,LOOP1

WAIT: SJMP WAIT

       END

     

实验五第1题实验结果图:

实验六第一题.png

实验五第2题结果图:

实验6第二题.png

实验五第3题结果图:

实验6第三题.png

硬件实验一  P1口输出控制实验

一、实验内容

1、在数码管上显示出自己的生日。

2、编写程序,使P1各个端口轮流输出低电平。从而驱动连接在该端口上的LED指示灯轮流点亮。

3、改变程序中的延时时间,使LED指示灯不均匀的点亮。

4、改变LED指示灯的点亮组合与次序,使其产生类似彩灯的艺术效果(例如,先由低到高循环点亮,再按照相反的循序点亮;同时由两侧向中间循环点亮,再按照相反的循序由中间向两边循环点亮;间隔循环点亮等)。

二、实验程序

1、

ORG  0000H

LJMP  MAIN

ORG  0100H

MAIN:MOV  SP,#70H

      MOV  A,#88H

      MOV  DPTR,#8000H

      MOVX  @DPTR,A

      MOV  A,#86H

      MOV  DPTR,#8100H

      MOVX  @DPTR,A

      MOV  A,#0AFH

      MOV  DPTR,#8200H

      MOVX  @DPTR,A

      MOV  A,#8FH

      MOV  DPTR,#8300H

      MOVX  @DPTR,A

    

      CLR  P3.5

      MOV  R7,#1

      MOV  B,#0

LOOP:CPL  P3.5

      LCALL  DELAY

         INC  B

         SJMP  LOOP

    

DELAY:MOV  A,R7

ADD  A,B

          MOV  R7,A

 DLY0: MOV  R6,#10

 DLY1: MOV  R5,#10

    L1:NOP

          DJNZ  R5,L1

          DJNZ  R6,DLY1

          DJNZ  R7,DLY0

          RET

       END

2、   ORG  0000H

      LJMP  MAIN

      ORG  0100H

MAIN:MOV  SP,#70H

   L1:CLR  P1.0

      LCALL  DELAY

         CPL P1.0

   L2:CLR  P1.1

      LCALL  DELAY

         CPL P1.1

   L3:CLR  P1.2

      LCALL  DELAY

         CPL P1.2

   L4:CLR  P1.3

      LCALL  DELAY

         CPL P1.3

   L5:CLR  P1.4

      LCALL  DELAY

         CPL P1.4

   L6:CLR  P1.5

      LCALL  DELAY

         CPL P1.5

   L7:CLR  P1.6

      LCALL  DELAY

         CPL P1.6

   L8:CLR  P1.7

      LCALL  DELAY

         CPL P1.7

         SJMP L1

     DELAY:MOV  R7,#200

     DLY0:MOV  R6,#200

     DLY1:MOV  R5,#10

     DLY2:NOP

          DJNZ  R5,DLY2

             DJNZ  R6,DLY1

             DJNZ  R7,DLY0

             RET   

          END

3、

      ORG  0000H

      LJMP  MAIN

      ORG  0100H

MAIN:MOV  SP,#70H

   L1:CLR  P1.0

      LCALL  DELAY

         CPL  P1.0

   L2:CLR  P1.1

      LCALL  DELAY

CPL  P1.1

   L3:CLR  P1.2

      LCALL  DELAY

         CPL  P1.2

   L4:CLR  P1.3

      LCALL  DELAY

         CPL  P1.3

   L5:CLR  P1.4

      LCALL  DELAY

         CPL P1.4

   L6:CLR  P1.5

      LCALL  DELAY

         CPL  P1.5

   L7:CLR  P1.6

      LCALL  DELAY

         CPL  P1.6

   L8:CLR  P1.7

      LCALL  DELAY

         CPL  P1.7

         SJMP  L1 

     DELAY:MOV R7,#200

     DLY0:MOV R6,#200

     DLY1:MOV R5,#10

     DLY2:NOP

          DJNZ R5,DLY2

         DJNZ R6,DLY1

             DJNZ R7,DLY0

             RET

          END

4、

      ORG  0000H

      LJMP  MAIN

      ORG  0100H

MAIN:MOV  SP,#70H

      MOV  R4,#8

      MOV  B,#0FFH

      CLR  CY

   L1: MOV  A,B

RLC  A

MOV  B,A

MOV  90H,A

LCALL  DELAY

MOV  A,#0FFH

MOV  90H,A

DJNZ  R4,L1

      

       MOV  B,#0FFH

       MOV  R4,#8

       CLR  CY

    L2:MOV  A,B

       RRC  A

       MOV  B,A

       MOV  90H,A

       LCALL  DELAY

       MOV  A,#0FFH

       MOV  90H,A

       DJNZ  R4,L2

    L3:CLR  P1.0

       CLR  P1.7

          LCALL  DELAY

          MOV 90H,#0FFH

       

          CLR  P1.1

          CLR  P1.6

          LCALL  DELAY

          MOV  90H,#0FFH

          CLR  P1.2

          CLR  P1.5

          LCALL  DELAY

          MOV  90H,#0FFH

       CLR  P1.3

          CLR  P1.4

          LCALL  DELAY

          MOV  90H,#0FFH

L4:CLR  P1.2

          CL  P1.5

          LCALL  DELAY

          MOV  90H,#0FFH

          CLR  P1.1

          CLR  P1.6

          LCALL  DELAY

          MOV  90H,#0FFH

       CLR  P1.0

          CLR  P1.7

          LCALL  DELAY

          MOV  90H,#0FFH

       MOV  R4,#8

       CLR  CY

          MOV  A,0FFH

    L5: RLC  A

          RLC  A

          MOV  90H,A

          LCALL  DELAY

          MOV  90H,#0FFH

          DJNZ  R4,L5

          MOV  R4,#8

       CLR  CY

          MOV  A,0FFH

    L6: RRC  A

          RRC  A

          MOV  90H,A

          LCALL  DELAY

       LCALL  DELAY

          MOV  90H,#0FFH

          DJNZ  R4,L6

           

   DELAY:MOV  R7,#200

   DLY0:MOV  R6,#200

   DLY1:MOV  R5,#10

   DLY2:NOP

        DJNZ  R5,DLY2

           DJNZ  R6,DLY1

           DJNZ  R7,DLY0

           RET

        END

IMG_3648.JPG

硬件实验二  A/D应用实验

一、实验内容:

1.编写程序,通过实验板上的ADC0809检测一路电压信号并显示结果。

2.编写程序,轮流检测实验板上8个电位器信号并显示相应的结果。

3.编写检测实验板上8个电位器信号的程序,并根据按键显示定标后对应的测量结果(最低电压显示0℃,最高电压显示100℃)。

二、实验目的与要求:

1.学习与掌握对于ADC0809电路的使用与编程方法。

2.进一步掌握ADC应用程序的编写方法。

三、实验说明:

实验板上ADC0809的地址为0800H-0F00H,分别对应8路模拟输入端口。向该地址写入任意数据,就可以选通该路模拟信号并启动A/D转换。经过一定时间后(该时间可以根据时钟频率计算出来),可以从该地址读出转换结果。也可以通过查询接在INT1端口的EOC信号状态判断A/D转换是否结束。

A/D转换的结果不仅与输入电压有关,还与参考电压有关。实验板上的参考电压大约为4.5V,

编写程序并编译通过后进入调试环境,单步执行程序检查程序的正确性。最后连续执行程序并用电压表检查结果是否正确。

四、实验程序流程图:

(单路信号A/D采样)

 

1、

ORG  0000H

LJMP  MAIN

ORG  0100H

MAIN:MOV  SP,#70H

      MOV  A,#1

      MOV  DPTR,#TABLE

      MOVC  A,@A+DPTR

      MOV  DPTR,#8000H

      MOVX  @DPTR,A

   L1:MOV  DPTR,#0900H

      MOVX  @DPTR,A

      JB  P3.3,$

      MOVX  A,@DPTR

      MOV  B,#100

      DIV  AB

      MOV  DPTR,#TABLE

      MOVC  A,@A+DPTR

      MOV  DPTR,#8100H

      MOVX  @DPTR,A

    

      MOV  A,B

      MOV  B,#10

      DIV  AB

    

      MOV  DPTR,#TABLE

      MOVC  A,@A+DPTR

      MOV  DPTR,#8200H

      MOVX  @DPTR,A

   

      MOV  A,B

      MOV  DPTR,#TABLE

      MOVC  A,@A+DPTR

      MOV  DPTR,#8300H

      MOVX  @DPTR,A

    

      JB  P3.3,$

      SJMP  L1

WAIT: SJMP  WAIT

TABLE: DB 88H,0AFH,0C4H,86H,0A3H,92H,90H,8FH,80H,83H

       END

2、

  ORG  0000H

LJMP  MAIN

ORG  0100H

MAIN:MOV  SP,#70H

LOOP:MOV  R4,#8

      MOV  R3,#0

LOOP1:MOV  A,R3

      MOV  DPTR,#TABLE

      MOVC  A,@A+DPTR

      MOV  DPTR,#8000H

      MOVX  @DPTR,A

   L1:MOV  A,#08H

      ADD  A,R3

      MOV  DPH,A

      MOV  DPL,#0

      MOVX  @DPTR,A

      JB  P3.3,$

      MOVX  A,@DPTR

      MOV  B,#100

      DIV  AB

      MOV  DPTR,#TABLE

      MOVC  A,@A+DPTR

      MOV  DPTR,#8100H

      MOVX  @DPTR,A

    

      MOV  A,B

      MOV  B,#10

      DIV  AB

    

      MOV  DPTR,#TABLE

      MOVC  A,@A+DPTR

      MOV  DPTR,#8200H

      MOVX  @DPTR,A

   

      MOV  A,B

      MOV  DPTR,#TABLE

      MOVC  A,@A+DPTR

      MOV  DPTR,#8300H

      MOVX  @DPTR,A

      

      LCALL  DELAY

      INC  R3

      DJNZ  R4,LOOP1

      LJMP  LOOP

   DELAY:MOV  R7,#200

   DLY0:MOV  R6,#200

   DLY1:MOV  R5,#10

   DLY2:NOP

        DJNZ  R5,DLY2

      DJNZ  R6,DLY1

      DJNZ  R7,DLY0

      RET

WAIT:SJMP  WAIT

TABLE: DB 88H,0AFH,0C4H,86H,0A3H,92H,90H,8FH,80H,83H

       END

            

3、

PNUM    EQU  502

CHANEL  EQU  30H

       ORG  0000H

       LJMP  MAIN

       ORG  0100H

MAIN:MOV  SP,#70H

       MOV CHANEL,#0

LOOP:MOV A,CHANEL

       ANL A,#07H

       MOV CHANEL,A

       ORL A,#08H

       MOV DPH,A

       MOV DPL,#0

       MOVX @DPTR,A

       JB P3.3,$

       MOVX A,@DPTR

;

       MOV  R4,A

       MOV  R2,#HIGH(PNUM)

       MOV  R3,#LOW(PNUM)

       LCALL  MULPNUM

       LCALL  CHGBCD

       LCALL  DISPLAY

       LCALL  DELAY

       INC  CHANEL

       LJMP  LOOP

;

MULPNUM:MOV  A,R4

       MOV  B,R3

       MUL  AB

       MOV  R6,A

       MOV  R5,B

       MOV  A,R4

       MOV  B,R2

       MUL  AB

       ADD  A,R5

        MOV  R5,A

        MOV  A,B

        ADDC  A,#0

        MOV  R4,A

        RET

;

CHGBCD:MOV  R6,#0

         MOV  R7,#0

         MOV  R2,#16

      L1:MOV  A,R5

         RLC  A

         MOV  R5,A

      

         MOV  A,R4

         RLC  A

         MOV  R4,A

      

         MOV  A,R7

         ADDC  A,R7

         DA  A

         MOV  R7,A

         MOV  A,R6

         ADDC  A,R6

         DA  A

         MOV  R6,A

         DJNZ  R2,L1

         RET

;

DISPLAY:MOV  A,CHANEL

         MOV  DPTR,#TABLE

            MOVC  A,@A+DPTR

            MOV  DPTR,#8000H

            MOVX  @DPTR,A

         MOV  A,R6

         MOV  DPTR,#TABLE1

         MOVC  A,@A+DPTR

         MOV  DPTR,#8100H

         MOVX  @DPTR,A

       

         MOV  A,R7

         ANL  A,#0F0H

         SWAP  A

         MOV  DPTR,#TABLE

         MOVC  A,@A+DPTR

            MOV  DPTR,#8200H

         MOVX  @DPTR,A

       

         MOV  A,R7

         ANL  A,#0FH

         MOV  DPTR,#TABLE

         MOVC  A,@A+DPTR

            MOV  DPTR,#8300H

         MOVX  @DPTR,A

         RET

         

   DELAY:MOV  R7,#200

   DLY0:MOV  R6,#200

   DLY1:MOV  R5,#10

   DLY2:NOP

        DJNZ  R5,DLY2

           DJNZ  R6,DLY1

           DJNZ  R7,DLY0

           RET

WAIT:SJMP  WAIT

TABLE: DB 88H,0AFH,0C4H,86H,0A3H,92H,90H,8FH,80H,83H

TABLE1:DB 08H,2FH,44H,06H,23H,12H,10H,0FH,00H,13H

        END

硬件实验三  综合应用实验(一)

一、实验内容

1.利用按键对检测程序进行控制,每按一次INT0键进行下一个检测项目。

二、实验目的与要求:

1.学习与掌握硬件检测程序的编写方法。

2.进一步掌握综合应用程序的编写方法。

三、试验程序

PNUM   EQU  502

CHANEL EQU  30H

         ORG  0000H

         LJMP  MAIN

         ORG  0100H

MAIN:MOV  SP,#70H

         MOV  CHANEL,#0

LOOP:MOV  A,CHANEL

         ANL  A,#07H

         MOV  CHANEL,A

         ORL  A,#08H

         MOV  DPH,A

         MOV  DPL,#0

         MOVX  @DPTR,A

         JB  P3.3,$

         MOVX  A,@DPTR

         MOV  31H,A

         SJMP  L2

    

LOOP2:MOV  DPTR,#8000H

         MOVX  A,@DPTR

         CJNE  A,#0FFH,L3

         SJMP  L2

    

L3: MOV  R2,#8

        CLR  CY

 LOOP1:RLC  A

        JNB  CY,L1

        DJNZ  R2,LOOP1

        SJMP  L2

  

     L1:MOV  A,#8

SUBB  A,R2

MOV  CHANEL,A

        ORL  A,#08H

        MOV  DPH,A

        MOV  DPL,#0

        MOVX  @DPTR,A

        JB  P3.3,$

        MOVX  A,@DPTR

        MOV  31H,A

;

     L2: MOV  A,31H

        MOV  R4,A

        MOV  R2,#HIGH(PNUM)

        MOV  R3,#LOW(PNUM)

        LCALL  MULPNUM

        LCALL  CHGBCD

        LCALL  DISPLAY 

        LJMP  LOOP2

;

MULPNUM:MOV  A,R4

           MOV  B,R3

           MUL  AB

           MOV  R6,A

           MOV  R5,B

           MOV  A,R4

           MOV  B,R2

           MUL  AB

           ADD  A,R5

           MOV  R5,A

           MOV  A,B

           ADDC  A,#0

           MOV  R4,A

           RET

;

CHGBCD:MOV  R6,#0

          MOV  R7,#0

          MOV  R2,#16

       L4:MOV  A,R5

          RLC  A

          MOV  R5,A

      

          MOV  A,R4

          RLC  A

          MOV  R4,A

      

          MOV  A,R7

          ADDC  A,R7

          DA  A

          MOV  R7,A

          MOV  A,R6

          ADDC  A,R6

          DA  A

          MOV  R6,A

          DJNZ  R2,L4

          RET

;

DISPLAY: MOV  A,CHANEL

MOV  DPTR,#TABLE

             MOVC  A,@A+DPTR

             MOV  DPTR,#8000H

             MOVX  @DPTR,A

MOV  A,R6

MOV  DPTR,#TABLE1

MOVC  A,@A+DPTR

MOV  DPTR,#8100H

MOVX  @DPTR,A

       

          MOV  A,R7

          ANL  A,#0F0H

          SWAP  A

          MOV  DPTR,#TABLE

          MOVC  A,@A+DPTR

MOV  DPTR,#8200H

          MOVX  @DPTR,A

       

          MOV  A,R7

          ANL  A,#0FH

          MOV  DPTR,#TABLE

          MOVC  A,@A+DPTR

MOV  DPTR,#8300H

          MOVX  @DPTR,A

          RET

       

    DELAY:MOV  R7,#200

    DLY0:MOV  R6,#200

    DLY1:MOV  R5,#10

    DLY2:NOP

          DJNZ  R5,DLY2

JNZ  R6,DLY1

             R7,DLY0

             RET

WAIT:SJMP  WAIT

TABLE: DB 88H,0AFH,0C4H,86H,0A3H,92H,90H,8FH,80H,83H

TABLE1:DB 08H,2FH,44H,06H,23H,12H,10H,0FH,00H,13H

       END

     

硬件实验四

一、实验内容

1.秒表实验

用To的方式2产生时基为250us的定时中断,用软件计数分别在数码管后2位显示0.01秒数,前2位显示秒数。

要求:按K1键开始计数,K2键停止计数,K3键清零计数,按键不分先后。

三、实验程序

SYST  EQU  30H

CNT1  EQU  31H

CNT2  EQU  32H

         ORG  0000H

         LJMP  MAIN

         ORG  000BH

         LJMP  INTT0

         ORG  0100H

MAIN : MOV  SP,#70H

INI_TF0 : MOV  A,TMOD

         ANL  A,#0F0H

         ADD  A,#00000010B

         MOV  TMOD,A

         MOV  TH0,#26

         MOV  TL0,#26

         MOV  SYST,#0

         MOV  CNT1,#0

         MOV  CNT2,#0

         MOV  A,#10000010B

         MOV  IE,A

;

LOOP:LCALL  DISPLAY

      L0: MOV  A,SYST

         CJNE  A,#40,READ

         MOV  SYST,#0

         MOV  A,CNT1

         ADD  A,#1

         DA  A

         MOV  CNT1,A

         MOV  A,CNT2

         ADDC  A,#0

         DA  A

         MOV  CNT2,A

READ:MOV  DPTR,#8000H

         MOVX  A,@DPTR

         CJNE  A,#0FFH,LOOP1

        SJMP  LOOP

LOOP1:MOV  R7,#8

      L1:RLC  A

         JNB  CY,L2

         DJNZ  R7,L1

    

      L2:MOV  A,#8

         SUBB  A,R7

         CJNE  A,#0,L3

         SETB  TR0

         SJMP  L5

      L3:CJNE  A,#1,L4

         CLR  TR0

         SJMP  L5

      L4:CJNE  A,#2,L5

         MOV  SYST,#0

         MOV  CNT1,#0

         MOV  CNT2,#0

  L5:LJMP  LOOP

INTT0:PUSH  ACC

         PUSH  PSW

         INC  SYST

         POP  PSW

         POP  ACC

         RETI

DISPLAY: MOV  A,CNT1

         ANL  A,#0F0H

         SWAP  A

         MOV  DPTR,#TABLE

         MOVC  A,@A+DPTR

         MOV  DPTR,#8200H

         MOVX  @DPTR,A

         MOV  A,CNT1

         ANL  A,#0FH

         MOV  DPTR,#TABLE

         MOVC  A,@A+DPTR

         MOV  DPTR,#8300H

         MOVX  @DPTR,A

            MOV  A,CNT2

ANL  A,#0F0H

         SWAP  A

         MOV  DPTR,#TABLE

         MOVC  A,@A+DPTR

         MOV  DPTR,#8000H

         MOVX  @DPTR,A

         MOV  A,CNT2

         ANL  A,#0FH

         MOV  DPTR,#TABLE

         MOVC  A,@A+DPTR

         MOV  DPTR,#8100H

         MOVX  @DPTR,A

         RET

TABLE:DB 88H,0AFH,0C4H,86H,0A3H,92H,90H,8FH,80H,83H

      END

更多相关推荐:
单片机实验报告

单片机实验报告学生姓名学号专业指导教师学院信息与电气工程学院20xx年11月单片机实验报告实验一MCS51指令系统实验数据排序1实验目的熟悉MCS51指令系统掌握程序设计方法加深对内部存储器读写的认识熟悉仿真开...

单片机实验报告

通信与信息工程学院20xx20xx学年第二学期实验报告课程名称单片机原理及应用专业班级学号学生姓名指导教师日期20xx年4月15日1实验一单片机汇编语言程序设计一实验目的1学习MedWin或Keilc51仿真软...

单片机实验报告

题目单片机组成原理实验报告学院计算机科学与工程学院专业信息安全姓名学号20xx年12月8日实验一输入输出接口编程一实验目的1掌握Keil软件的基本使用12掌握单片机汇编语言基本编程二实验内容1学习用Keil软件...

51单片机课程设计实验报告

51单片机课程设计报告学院:专业班级:姓名:指导教师:设计时间:51单片机课程设计一、设计任务与要求1.任务:制作并调试51单片机学习板2.要求:(1)了解并能识别学习板上的各种元器件,会读元器件标示;(2)会…

单片机实验报告

海南大学届单片机实验报告4份论文题目学生姓名学号所在院系专业班级授课教师完成时间蜂鸣器实验实验目的1熟悉实验板中蜂鸣器工作原理掌握汇编编程控制蜂鸣器播放音乐2掌握单片机编程控制蜂鸣器发出不同频率声音的方法3了解...

单片机实验报告

单片机课程设计报告实验五系别物理与电子工程学院年级专业班级学号学生姓名指导教师设计时间常熟理工学院课程设计报告目录1题目22实验要求221实验目的222实验内容23总体设计231硬件设计232软件设计44运行结...

51单片机实验报告

08424020xx单片微型计算机原理学院班级学号姓名指导教师成绩120xx年6月08424020xx硬件实验实验一定时器中断实验实验内容fosc110592MHzT0方式2产生定时中断实现秒表功能数码管后两位...

单片机实验报告

成绩计算机原理实验室实验报告课程单片机原理及接口技术姓名聂建建专业计算机科学与技术学号1120xx206日期20xx年6月10日太原工业学院计算机工程系计算机原理实验室实验报告实验一循环程序实验排序1234计算...

单片机实验报告

单片机与嵌入式系统实验报告1一软件模拟调试实验本部分实验内容主要为指令系统和汇编语言程序设计采用软件模拟调试的方法目的在于通过这些实验使学生巩固所学知识加深对MCS51单片机内部结构指令系统的理解更进一步掌握汇...

单片机实验报告

单片机实验报告学院信息工程学院专业班级生物医学工程111班姓名学号南昌大学实验报告实验一IO口输入输出实验学生姓名学号班级生医111班实验类型验证综合设计创新实验日期20xx1126实验成绩一实验目的掌握单片机...

单片机实验报告

实验一LED流水灯一实验目的1学习单片机并口的使用方法2学习延时子程序的编写和使用3学习集成开发环境MedWin的安装与使用4学习STC单片机在线下载软件STCISP的使用二实验内容所谓流水灯就是8个发光二极管...

单片机实验报告

目录一实验一1二实验二7三实验三11四实验四15实验一定时计数器验证实验一实验目的熟悉定时计数器T0的特点学会合理选择定时方式并能根据具体情况结合软件的方式定时二实验设备及器件IBMPC机一台PROTEUS硬件...

单片机实验报告(42篇)