当前位置:文档之家› 单片机实验报告 二

单片机实验报告 二

单片机实验报告二班级:信息工程(微波通信方向)姓名:肖丽学号: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 0000HMOV A,#02HMOV SP,#42HMOV 41H,#0FFHMOV 41H,#0FFHPOP DPHPOP DPLMOV DPTR,#3000HRL AMOV B,AMOVC A,@A+DPTRPUSH ACCMOV A,BINC AMOVC A,@A+DPTRPUSH ACCSJMP $ORG 3000HDB 10H,80H,30H,80H,50H,80HENDP85.8试编写程序,查找在内部RAM的20H~40H单元中出现“00H”这一数据的次数。

并将查找到的结果存入41H单元。

ORG 0000HSTART: MOV 41H,#00HMOV R0,#20HMOV R2,#21HLOOP: MOV A,@R0JNZ NEXTINC 41HNEXT: INC R0DJNZ R2,LOOPSJMP $ 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,#04HMOV 42H,#02HMOV 43H,#01HSORT:MOV R0,#30HMOV R7,#13HCLR TR0LOOP:MOV A,@R0;A=R0MOV 45H,A;45H=AINC R0;R0=R0+1MOV 44H,@R0;44H=R0CLR C;C清0SUBB A,@R0;(A)-((R0))-C=AJC NEXT;C为1跳NEXTMOV @R0,45H;(R0)=(45H)DEC R0;R0=R0-1MOV @R0,44H;(R0)=(44H)INC R0;R0=R0+1SETB TR0;TR0置1NEXT:DJNZ R7,LOOP ;R7-1不等于0,跳LOOPJB TR0,SORT;TR0=1,跳SORTHERE:SJMP $END六、实验及程序的分析和讨论P85.6注释结果ORG 0000H;汇编语言源程序的开始,通常都用一条ORG伪指令规定程序的起始地址,目标程序从0000H开始MOV A,#02H;02H→A (A)=02HMOV SP,#42H;42H→SP (SP)=42HMOV 41H,#0FFH;FFH→41H (41H)=FFHMOV 42H,#0FFH;FFH→42H (42H)=FFHPOP DPH;((SP))→DPH,(SP)-1→SP (DPH)=(42H)=FFH,(SP)=41HPOP DPL;((SP))→DPL,(SP)-1→SP (DPL)=(41H)=FFH,(SP)=40H(DPTR)=FFFFHMOV DPTR,#3000H; #3000H→ DPTR (DPTR)=3000HRL A;A的8位向左循环移动,位7循环移入位0 (A)=04HMOV B,A;A→B (B)=04HMOVC A,@A+DPTR; (DPTR)+(A)→A (A)=3004HPUSH ACC;(SP)+1=41H→SP,A→41H (SP)=41H,(41H)=(3004H)MOV A,B;B→A (A)=04HINC A;(A)+1→A (A)=05HMOVC A,@A+DPTR; (DPTR)+(A)→A (A)=3005HPUSH 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)=80HENDP85.8注释结果ORG 0000H;汇编语言源程序的开始,通常都用一条ORG伪指令规定程序的起始地址,目标程序从0000H开始START: MOV R0,#20H; #20H→R0R0=20HMOV R2,#21H; #21H→R2R0=21HMOV 41H,#00H; #00H→41H41H=00HLOOP: MOV A,@R0;((R0))→A A=(20H)JNZ NEXT;若A=00H,则顺序执行,否则转移到LOOP1INC 41H;(41H)+1→41HNEXT: INC R0; (R0)+1→R0DJNZ R2,LOOP;R2减1不为0,则跳LOOP处继续循环SJMP$;END数据升序排序注释结果ORG 0000H;汇编语言源程序的开始,通常都用一条ORG伪指令规定程序的起始地址,目标程序从0000H开始MOV 30H,#14H;14H→30H (30H)=14HMOV 31H,#13H;13H→31H (31H)=13HMOV 32H,#12H;12H→32H (32H)=12HMOV 33H,#11H;12H→33H (33H)=11HMOV 34H,#10H;10H→34H (34H)=10HMOV 35H,#0FH;0FH→35H (35H)=0FHMOV 36H,#0EH;0EH→36H (36H)=0EHMOV 37H,#0DH;0DH→37H (37H)=0DHMOV 38H,#0CH;0CH→38H (38H)=0CHMOV 39H,#0BH;0BH→39H (39H)=0BHMOV 3AH,#0AH;0AH→3AH (3AH)=0AHMOV 3BH,#09H;09H→3BH (3BH)=09HMOV 3CH,#08H;08H→3CH (3CH)=08HMOV 3DH,#07H;07H→3DH (3DH)=07HMOV 3EH,#06H;06H→3EH (3EH)=06HMOV 3FH,#05H;05H→3FH (3FH)=05HMOV 40H,#04H;04H→40H (40H)=04HMOV 41H,#03H;03H→41H (41H)=03HMOV 42H,#02H;02H→42H (42H)=02HMOV 43H,#01H;01H→43H (43H)=01HSORT:MOV R0,#30H;30H→R0 (R0)=30HMOV R7,#13H;13H→R7 (R7)=13HCLR TR0;互换状态标志清0 (TR0)=00H LOOP:MOV A,@R0;(R0)→(A) A=R0MOV 45H,A;A→45H 45H=A INC R0; (R0)+1→R0 R0=(R0)+1MOV 44H,@R0;(R0)→(44H) 44H=(R0)CLR C;C清0 C=00HSUBB A,@R0;(A)-((R0))-C→A A=(A)-((R0))-C JC NEXT;TR0为1跳NEXTMOV @R0,45H;(45H)→(R0) R0=(45H)DEC R0;(R0)-1→R0 R0=R0-1 MOV @R0,44H;(44H)→(R0) R0=(44H)INC R0;(R0)+1→R0 R0=(R0)+1 SETB TR0;TR0置1 TR0=01HNEXT:DJNZ R7,LOOP ;R7-1不等于0,跳LOOPJB TR0,SORT;TR0=1,跳SORTHERE:SJMP $END七、实验结果P85.6仿真前P85.8仿真前仿真后数据升序排序仿真前对RAM赋20个值(30H~43H)仿真后八、实验总结这次实验所完成的是程序的软件仿真,其中包括关键字查询、数据极值查询的内容。

在第一个程序中,我们没有给题目要求的数赋值,导致得不到预期结果。

同时,在没有调用子程序的情况下实验RET,使程序变得随机了。

在第二个程序中,学会在存储器窗口改数字,继而进行有关出现“00H”次数的计算。

第三个程序是仿照机极值排序完成的。

相关主题