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