1、单片机软件实验1清零实验: 学号: 班级: 同组人: 指导老师: 报告日期: 软件设计实验1:清零实验实验目的:掌握汇编语言设计和调试方法。实验容:使用AT89C52单片机对单片机部RAM进行清零操作,实验容如下:1.把 90H-AFH的容置为#55H;2.把90H-9FH的容清零。实验问答:1.清零之后,90H-9FH的容是什么?A0H-AFH的容是什么?答:90H-9FH容:00H; A0H-AFH:#55H2.累加器A、堆栈指针SP的初始状态是什么?答:累加器A:00H, 堆栈指针SP:07H。实验程序:=$NOMOD51$INCLUDE (80C52.MCU);=; DEFINITIO
2、NS;=;=; VARIABLES;=;=; RESET and INTERRUPT VECTORS;= ; Reset Vector org 0000h jmp Start;=; CODE SEGMENT;= org 0100hStart: MOV R0,#90H MOV R3,#20H LOOP1: MOV R0,#55H INC R0 DJNZ R3,LOOP1 MOV R2,#10H MOV R1,#90HCLR0: MOV R1,#00H INC R1 DJNZ R2,CLR0 ; Write your code here Loop: jmp Loop;= END* 单个实验报告容限
3、制在两页之,采用双面打印,所有报告统一装订;表头容需要手工签写。: 学号: 班级: 同组人: 指导老师: 报告日期: 软件设计实验2:拆字拼字实验实验目的:进一步掌握汇编语言设计和调试方法。实验容:使用AT89C52单片机对单片机部RAM存储的数据进行拆字和拼字实验,实验容如下:1. 将40H地址的容设置为#8AH;2. 将40H地址的容进行拆分,高字节保存在31H,低字节保存在32H;3. 将31H、32H地址的容进行合并,保存在30H。实验问答:1.运行程序后30H和40H的最终容是?答:都是#8AH2.如果欲使30H容为0A8H,程序应如何修改?答:将30H值赋予A,再SWAP A,然后
4、将A赋予30H。实验程序:=$NOMOD51$INCLUDE (80C52.MCU);=; DEFINITIONS;=;=; VARIABLES;=;=; RESET and INTERRUPT VECTORS;= ; Reset Vector org 0000h jmp Start;=; CODE SEGMENT;= org 0100hStart: MOV 40H,#8AH MOV A,40H ANL 31H,#0FH ANL 32H,#0FH MOV R1,#32H XCHD A,R1 SWAP A DEC R1 XCHD A,R1 ;拆分结束CLR A MOV R1,#32H XCHD
5、A,R1 DEC R1 SWAP A XCHD A,R1 SWAP A MOV 30H,A ;合并结束 ; Write your code here Loop: jmp Loop;= END: 学号: 班级: 同组人: 指导老师: 报告日期: 软件设计实验3:查找相同数个数实验实验目的:熟悉汇编语言编程,掌握判断与跳转语句的使用。实验容:使用AT89C52单片机对单片机部RAM进行查找相同数,输出其个数的实验,实验容如下:1. 初始化后,B0H-BFH地址的容为#00H,将B9H的容赋值为#01H,将BBH的容赋值为#01H;2. 在B0H-BFH中查找有几个单元存放的容是#00H,把个数放在
6、R7中。实验问答:1.如需使用第2组工作寄存器的R7,需如何修改程序?答:更改起始单元地址,用位操作指令将RS0和RS1分别置为0,12.如需从B0H单元开始,查32个单元的容,需修改程序哪个语句,如何修改?答:将循环计数标志置为#20H实验程序:=$NOMOD51$INCLUDE (80C52.MCU);=; DEFINITIONS;=;=; VARIABLES;=;=; RESET and INTERRUPT VECTORS;= ; Reset Vector org 0000h jmp Start;=; CODE SEGMENT;= org 0100hStart: MOV R2,#0FH
7、MOV R1,#0B0HLOOP1: MOV R1,#00H INC R1 DJNZ R2,LOOP1 MOV R0,#0B9H MOV R0,#01H MOV R1,#0BBH MOV R1,#01H ;初始化结束 MOV R2,#10H ;15次循环 MOV R1,#0B0H MOV R7,#00H RESEARCH: CJNE R1,#00H,NEXT INC R7NEXT: INC R1 DJNZ R2,RESEARCH ; Write your code here Loop: jmp Loop;= END: 学号: 班级: 同组人: 指导老师: 报告日期: 软件设计实验4:二进制转A
8、SCII实验实验目的:熟悉ASCII的编码原理,学习其与二进制之间的转换。实验容:1.将#9FH转为相应的ASCII;2.将结果存放到30H、31H地址;3.查表的方式实现。实验问答:1.简述ASCII、BCD码与二进制之间的关系。BCD: 使用16进制的前10个进行编码,用四位二进制数表示十进制数ASCII:标准信息编码,用二进制表示字符的规定,每一个字符对应一个二进制数2.简述MOVC两条指令,并说明其作用及区别。MOVC A,A+DPTR:以DPTR为基址以A为变址进行寻址,用于查表MOVC A,A+PC:以PC为基址以A为变址进行寻址,PC指向下一条指令,用于查表实验程序:=$NOMO
9、D51$INCLUDE (80C52.MCU);=; DEFINITIONS;=;=; VARIABLES;=;=; RESET and INTERRUPT VECTORS;= ; Reset Vector org 0000h jmp Start;=; CODE SEGMENT;= org 0100hStart: MOV A,#9FH SWAP A ANL A,#0FH ACALL CHECK MOV 30H,A MOV A,#9FH ANL A,#0FH ACALL CHECK MOV 31H,A SJMP $CHECK: INC A MOVC A,A+PC RETTABLE: DB 30H
10、,31H,32H,33H,34H,35H,36H,37H,38H,39H DB 41H,42H,43H,44H,45H,46H ; Write your code here Loop: jmp Loop;= END:学号:班级:同组人:指导老师:报告日期: 软件设计实验5:数据块传送实验实验目的:掌握外部扩展RAM中的数据操作。实验容:1.对2040H地址开始的100个字节进行赋值,值为#5AH;2.将2040H地址开始的20个字节传送到以0030H开始的目的地址。实验问答:3.简述MOVX两组指令,并说明其作用及区别。答:MOVX A,Ri:片外RAM 8位地址送入累加器MOVX A,DPT
11、R: 片外RAM 16位地址送入累加器MOVX Ri, A :累加器送入片外RAM 8位地址MOVX DPTR,A: 累加器送入片外RAM 16位地址4.单片机访问外部RAM时,使用了哪几个控制信号引脚?答:WR,RD,ALE实验程序:=$NOMOD51$INCLUDE (80C52.MCU);=; DEFINITIONS;=;=; VARIABLES;=;=; RESET and INTERRUPT VECTORS;= ; Reset Vector org 0000h jmp Start;=; CODE SEGMENT;= org 0100hStart: MOV R0,#64H MOV DPTR,#2040H MOV A ,#5AH L1:MOVX DPTR,A INC DPTR DJNZ R0,L1 MOV R0,#14H MOV DPTR,#2040H MOV R1,#30H MOV P2,#00H L2: MOVX A,DPTR MOVX R1,A INC DPTR INC R1 DJNZ R0,L2 ; Write your code here Loop: jmp Loop;= END
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1