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

单片机实验报告

实验报告
专业:计算机科学与技术班级:C093
姓名:孙丽君
学号:098677
实验一:数据传送实验
1.实验内容:
将8031内部RAM 40H—4FH单元置初值A0H—A FH,然后将片内RAM 40H—4FH单元中的数据传送到片内RAM 50H—5FH单元。

将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。

2. 源程序清单:
ORG 0000H
RESET:AJMP MAIN
ORG 003FH
MAIN:MOV R0,#40H
MOV R2,#10H
MOV A,#0A0H
A1:MOV@R0,A
INC R0
INC A
DJNZ R2, A1
MOV R1,#40H
MOV R0, #50H
MOV R2, #10H
A3: MOV A, @R1
MOV @R0, A
INC R0
INC R1
DJNZ R2, A3
LJMP 0000H
3.实验结果:
4. CPU 对8031内部RAM存储器有哪些寻址方式?
答:直接寻址,寄存器寻址,寄存器间接寻址,位寻址。

5. 执行程序后下列各单元的内容是什么?
内部RAM 40H~4FH内容:A0~AF
内部RAM 50H~5FH内容:A0~AF
实验二多字节十进制加法实验
1.实验内容:
多字节十进制加法。

加数首地址由R0 指出,被加数和结果的存储单元首地址由R1指出,字节数由R2 指出。

将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。

2. 源程序清单:
ORG0000H
RESET: AJMP MAIN
ORG0100H
MAIN: MOV SP, #60H
MOV R0, #31H
MOV@R0, #22H
DEC R0
MOV@R0, #33H
MOV R1, #21H
MOV@R1, #44H
DEC R1
MOV@R1, #55H
MOV R2, #02H
ACALL DACN
HERE: AJMP HERE
DACN: CLR C
DAL: MOV A, @R0
ADDC A, @R1
DA A
MOV@R1, A
INC R0
INC R1
JMP DAL
CLR A
MOV ACC.0 , C
RET
3.实验结果:
4. 加数单元、被加数单元和结果单元的地址和内容为?答:加数单元地址:31H,30H
加数单元内容:22H,33H
被加数单元地址:21H,20H
被加数单元内容44H,55H
结果单元地址:21H,20H
结果单元内容:88H,66H
5. 如何检查双字节相加的最高位溢出?
答:看PSW中的OV位,OV为1,则证明溢出;OV为0,则证明未溢出
实验三数据排序实验
1.实验内容:
将内部RAM 50H—59H中的数据按从小到大的次序排列。

将程序经模拟调试通过后,运行程序,检查相应的存储单元的数据是否为排序状态。

2.源程序清单:
ORG0000H
RESET:AJMP MAIN
ORG0100H
MAIN:MOV SP, #60H
MOV R0, #50H
MOV @R0, #6FH
INC R0
MOV @R0, #6EH
INC R0
MOV @R0, #6AH
INC R0
MOV @R0, #6CH
INC R0
MOV @R0, #6DH
INC R0
MOV @R0, #5BH
INC R0
MOV @R0, #67H
INC R0
MOV @R0, #69H
INC R0
MOV @R0, #68H
INC R0
MOV @R0, #64H
ACALL QUE HERE: AJMP HERE QUE: CLR 00H
MOV R7, #0AH
MOV R0, #50H
MOV A , @R0 L2: INC R0
MOV R2, A
SUBB A, @R0
MOV A, R2
JC L1
SETB 00H
XCH A, @R0
DEC R0
XCH A, @R0
INC R0
L1: MOV A, @R0
DJNZ R7, L2
JB 00H,QUE RET
3.结果
4. 修改程序,按从大到小次序排序后结果:
实验五电子钟实验
实验内容:
熟悉单片机在线仿真调试方法。

将仿真头插入实验板的CPU插座中,再打开电源,输入程序进行调试。

程序运行时,按下S0键,蜂鸣器发出响声,两个数码管开始从零
显示时间,定时器定时时间为一分钟,定时时间到,蜂鸣器再次发出响声,重新按下S0键,重复上述过程。

源程序清单:
ORG 0000H
START:
AJMP MAIN
ORG000BH
AJMP PIT0
ORG0100H
MAIN:
MOV SP,#60H
MOV50H,#00H
MOV51H,#00H
ACALL DISPLAY
MOV TMOD,#01H
MOV TL0,#0B0H
MOV TL1,#3CH
ACALL KEY
CLR P2.7
ACALL LONGDELAY
SETB P2.7
SETB00H
SETB TR0
SETB EA
SETB ET0
MOV30H,#20
ML0:
ACALL DISPLAY
MOV C,00H
JC ML0
CLR P2.7
ACALL LONGDELAY
SETB P2.7
AJMP MAIN
PIT0:
PUSH PSW
PUSH ACC
SETB PSW.3
MOV TL0,#0B0H MOV TH0,#3CH MOV A,30H
DEC A
MOV30H,A
JNZ RET0
MOV30H,#20
MOV R0,#51H
ACALL DAAD1
MOV A,R2
XRL A,#60H
JNZ RET0
ACALL CLR0
CLR00H
RET0:
POP ACC
POP PSW
RETI
DAAD1:
MOV A,@R0
DEC R0
SWAP A
ORL A,@R0
ADD A,#01H
DA A
MOV R2,A
ANL A,#0FH
MOV@R0,A
MOV A,R2
INC R0
ANL A,#0F0H
SWAP A
MOV@R0,A
RET
CLR0:
CLR A
MOV@R0,A
DEC R0
MOV@R0,A
RET
DISPLAY:
MOV A,50H
MOV DPTR,#TABLE MOVC A,@A+DPTR
MOV P2,A
MOV A,51H
MOV DPTR,#TABLE MOVC A,@A+DPTR
MOV P0,A
CLR P0.7
LCALL DELAY
RET
KEY:
MOV C,P3.0
JC KEY
ACALL DELAY
KEY1:
MOV C,P3.0
JNC KEY1
ACALL DELAY
RET
DELAY:
MOV R1,#250
LOOP:
DJNZ R1,LOOP
RET
LONGDELAY:
MOV A,R0
PUSH ACC
MOV A,R1
PUSH ACC
MOV R1,#250
LOOP1:
MOV R0,#250
LOOP2:
NOP
NOP
NOP
NOP
NOP
DJNZ R0,LOOP2
DJNZ R1,LOOP1
POP ACC
MOV R1,A
POP ACC
MOV R0,A
RET
TABLE:
DB
0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END
3.程序中哪部分为显示程序?
答:是程序中的DISPLAY子程序。

4.程序中如何实现一秒钟的定时?
程序中的用的是方式一来定时的,即T0的十六位来定时的,当加到65536时溢出变为0时,即为定时一次。

现在的振荡频率是12MHz,所以一个机器周期是1微秒,1秒钟即有1000000个机器周期,方式一即为从15536开始加50000,最后定时二十次,完成了一秒钟的定时。

5. 写出各段子程序的作用
答:MAIN函数是定时器的初值设置,而之后的各段子程序作用为:
ML0:二极管的小数点的控制。

PIT0:保存现场,再次设定定时器的初值,使之避免从0开始计时。

RET0:断点弹出,返回中断的地方。

DISPLAY:显示程序。

DELAY:是延时程序。

TABLE:放光二极管显示数字。

相关主题