单片机实验指导 - 59728

时间:2022-11-24 18:56:31 作者:壹号 字数:3515字

51系列单片机

原理与应用实验

实验1 简单汇编语言实验

1

一、实验目的:掌握汇编语言设计和调试方法,熟悉键盘操作。熟悉汇编语言编程。 二、实验内容:

1.查找相同数据个数:在2000H~200FH的N个单元中填入零,运行本程序后检查2100H中是否为N;

2.清零:把2000H~20FFH的内容清零。 三、实验程序框图:

查找相同数据个数程序实验框图 清零程序框图

四、实验步骤:

1、在2000H~200FH的几个单元中填入零,运行查找相同数据个数程序后检查2100H中是否是几个单元数。

2、用连续或单步方式运行清零程序,检查2000~20FF中执行程序前后的内容变化。 五.思考:

1、修改程序,查找其它内容。

2、修改清零程序,假使把2000H~20FFH中的内容改成FF,如何修改程序。

1/ 查找相同数据个数程序程序清单: ORG 0000H

2

LJMP L5800 ORG 0AA0H

L5800: MOV R0,#10H ;查找16个字节 MOV R1,#00H

MOV DPTR,#2000H L5811: MOVX A,@DPTR

CJNE A,#00H,L5816 ;取出内容与00H相等吗? INC R1 ;取出个数加1 L5816: INC DPTR

DJNZ R0,L5811 ;未完继续 MOV DPTR,#2100H MOV A,R1

MOVX @DPTR,A ;相同数的个数送2100H L581E: SJMP L581E END

2/ 清零程序清单: ORG 0000H

LJMP SE01 ORG 0640H SE01: MOV R0,#00H

MOV DPTR,#2000H ;(0000H)送DPTR LOO1: CLR A

MOVX @DPTR,A ;0送(DPTR) INC DPTR ;DPTR+1 INC R0 ;字节数加1

CJNE R0,#00H,LOO1 ;不到FF个字节再清 LOOP: SJMP LOOP END

实验2 拆字和拼字程序

3

一、实验目的:掌握汇编语言设计和调试方法。 二、实验内容:

1、把2000H的内容拆开,高位送2001H低位,低位送2002H低位,2001H、2002H高位清零,一般本程序用于把数据送显示缓冲区时用;

2、把2000H.2001H的低位分别送入2002H高低位,一般本程序用于把显示缓冲区的数据取出拼装成一字节。 三、实验程序框图:

拆字程序框图 拼字程序框图

四、实验步骤:用连续或单步方式运行程序,检查2000H~2002H中内容变化情况。五、思考:如何用断点方式调试本程序。

1/拆字程序清单: ORG 0000H

4

LJMP SE02 ORG 0660H

SE02: MOV DPTR,#2000H MOVX A,@DPTR

MOV B,A ;(2000)→A→B SWAP A ;交换 ANL A,#0FH ;屏蔽高位 INC DPTR

MOVX @DPTR,A ;送2001H INC DPTR MOV A,B

ANL A,#0FH ;(2000)内容屏蔽高位 MOVX @DPTR,A ;送2002H LOOP: SJMP LOOP END

2/拼字程序清单: ORG 0000H LJMP START ORG 0680H

…… 此处隐藏0字 ……

START: MOV DPTR,#2000H MOVX A,@DPTR

ANL A,#0FH ;(2000H)内容屏蔽高位 SWAP A ;交换 MOV B,A ;保存 INC DPTR

MOVX A,@DPTR ;(2000H)内容送A ANL A,#0FH ;屏蔽高位 ORL A,B ;或 INC DPTR

MOVX @DPTR,A ;送2002H SJMP $ END

实验3 数据排序实验

5