单片机实验报告 二

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机实验报告二

班级:信息工程(微波通信方向)

姓名:肖丽学号:1195111040

时间:2013.10.29地点:工学院单片机实验室

实验题目:第三章课后习题练习

一、实验目的

1. 掌握Keil集成开发环境基本使用方法;

2. 掌握学林51mini仿真器和下载(编程)器的基本使用方法。

二、实验主要仪器及环境:

硬件:学林51mini仿真器和下载(编程)器

软件:Keil Vision2、XLISP

三、实验内容

P85.6、8、P77有关的极值排序的程序

四、实验步骤

1.将P85.6修改存到自己的文件内,用软件仿真。

2.编写P85.8的程序,然后存到自己的文件里,用软件仿真。

3.编写P77有关的极值排序的程序,然后存到自己的文件里,用软件仿真。

五、实验流程框图、实验程序

P85.6已知程序执行前有A=02H,SP=42H,(41H)=FFH,(42H)=FFH。下述程序执行后, A=(80H);SP=(42H);(41H)=(50H);(42H)=(80H);PC=(001EH)。ORG 0000H

MOV A,#02H

MOV SP,#42H

MOV 41H,#0FFH

MOV 41H,#0FFH

POP DPH

POP DPL

MOV DPTR,#3000H

RL A

MOV B,A

MOVC A,@A+DPTR

PUSH ACC

MOV A,B

INC A

MOVC A,@A+DPTR

PUSH ACC

SJMP $

ORG 3000H

DB 10H,80H,30H,80H,50H,80H

END

P85.8试编写程序,查找在内部RAM的20H~40H单元中出现“00H”这一数据的次数。并将查找到的结果存入41H单元。

ORG 0000H

START: MOV 41H,#00H

MOV R0,#20H

MOV R2,#21H

LOOP: MOV A,@R0

JNZ NEXT

INC 41H

NEXT: INC R0

DJNZ R2,LOOP

SJMP $ END

数据升序排序

ORG 0000H MOV 30H,#14H MOV 31H,#13H MOV 32H,#12H MOV 33H,#11H MOV 34H,#10H MOV 35H,#0FH MOV 36H,#0EH MOV 37H,#0DH MOV 38H,#0CH MOV 39H,#0BH MOV 3AH,#0AH MOV 3BH,#09H MOV 3CH,#08H MOV 3DH,#07H MOV 3EH,#06H MOV 3FH,#05H MOV 40H,#04H

MOV 42H,#02H

MOV 43H,#01H

SORT:MOV R0,#30H

MOV R7,#13H

CLR TR0

LOOP:MOV A,@R0;A=R0

MOV 45H,A;45H=A

INC R0;R0=R0+1

MOV 44H,@R0;44H=R0

CLR C;C清0

SUBB A,@R0;(A)-((R0))-C=A

JC NEXT;C为1跳NEXT

MOV @R0,45H;(R0)=(45H)

DEC R0;R0=R0-1

MOV @R0,44H;(R0)=(44H)

INC R0;R0=R0+1

SETB TR0;TR0置1

NEXT:DJNZ R7,LOOP ;R7-1不等于0,跳LOOP

JB TR0,SORT;TR0=1,跳SORT

HERE:SJMP $

END

六、实验及程序的分析和讨论

P85.6

注释结果

ORG 0000H;汇编语言源程序的开始,通常都用一条ORG伪指

令规定程序的起始地址,目标程序从0000H开始

MOV A,#02H;02H→A (A)=02H

MOV SP,#42H;42H→SP (SP)=42H

MOV 41H,#0FFH;FFH→41H (41H)=FFH

MOV 42H,#0FFH;FFH→42H (42H)=FFH

POP DPH;((SP))→DPH,(SP)-1→SP (DPH)=(42H)=FFH,(SP)=41H

POP DPL;((SP))→DPL,(SP)-1→SP (DPL)=(41H)=FFH,(SP)=40H

(DPTR)=FFFFH

MOV DPTR,#3000H; #3000H→ DPTR (DPTR)=3000H

RL A;A的8位向左循环移动,位7循环移入位0 (A)=04H

MOV B,A;A→B (B)=04H

MOVC A,@A+DPTR; (DPTR)+(A)→A (A)=3004H

PUSH ACC;(SP)+1=41H→SP,A→41H (SP)=41H,(41H)=(3004H)

MOV A,B;B→A (A)=04H

INC A;(A)+1→A (A)=05H

MOVC A,@A+DPTR; (DPTR)+(A)→A (A)=3005H

PUSH ACC;(SP)+1=42H→SP,A→42H (SP)=42H,(42H)=(3005H)

HERE:SJMP HERE;

ORG 3000H;汇编语言源程序的开始,通常都用一条ORG伪指

令规定程序的起始地址,目标程序从3000H开始

DB 10H,80H,30H,80H,50H,80H;DB用于从指定的地址开始, (3000H)=10H

在程序存储器的连续 (3001H)=80H

(3002H)=30H

(3003H)=80H

(3004H)=50H

(3005H)=80H

END

P85.8

注释结果

ORG 0000H;汇编语言源程序的开始,通常都用一条ORG伪指

令规定程序的起始地址,目标程序从0000H开始

START: MOV R0,#20H; #20H→R0R0=20H

MOV R2,#21H; #21H→R2R0=21H

MOV 41H,#00H; #00H→41H41H=00H

LOOP: MOV A,@R0;((R0))→A A=(20H)

JNZ NEXT;若A=00H,则顺序执行,否则转移到LOOP1

INC 41H;(41H)+1→41H

NEXT: INC R0; (R0)+1→R0

DJNZ R2,LOOP;R2减1不为0,则跳LOOP处继续循环

SJMP$;

END

数据升序排序

注释结果

ORG 0000H;汇编语言源程序的开始,通常都用一条ORG伪指

令规定程序的起始地址,目标程序从0000H开始

MOV 30H,#14H;14H→30H (30H)=14H

MOV 31H,#13H;13H→31H (31H)=13H

MOV 32H,#12H;12H→32H (32H)=12H

MOV 33H,#11H;12H→33H (33H)=11H

MOV 34H,#10H;10H→34H (34H)=10H

MOV 35H,#0FH;0FH→35H (35H)=0FH

MOV 36H,#0EH;0EH→36H (36H)=0EH

MOV 37H,#0DH;0DH→37H (37H)=0DH

相关文档
最新文档