单片机上机

时间:2022-05-20 03:15:17 阅读: 最新文章 文档下载
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。
.

实验一 8051单片机简单编程与调试 实验内容:

1存储块置全“1”源代码:

汇编语言源程序:

ORG 00H

START EQU 30H ;起始地址

MOV R1,#START

MOV R0,#32H ;Rn中设置32字节计数值

MOV A,#0FFH

LOOP: mov @R1,A

INC R1 ;指向下一个地址

DJNZ R0,LOOP ;计数值减1,不为零继续 SJMP $

END

在下划线处填入适当指令。

输入源程序,编译无误后,用单步执行的方法,观察各个相应存储单元和寄存器中内容的变化。

解释START EQU 30H 答:START = 30H



(2) 二进制 ASCII 码转换源代码: 汇编语言源程序: RESULT EQU 30H ORG 00H START:

MOV A,#1AH

LCALL BINTOHEX ; 调用BINTOHEX子程序 LIMP $ BINTOHEX:

MOV DPTR,#ASCIITAB ; 表的首址ASCIITABDPTR MOV B,A SWAP A

ANL A,#0FH ; A的高四位 MOVC A,@A+DPTR ; ASCII MOV RESULT, A

MOV A,B ANL A,#0FH MOVC A,@A+DPTR MOV RESULT+1,A RET

ASCIITAB:

DB '0123456789ABCDEF' END

.


.

答: 注释掉LJMP $ 执行到MOV A,#1AH



2、多路开关指示

OGR 00H

START: MOV A,PR1 ; 读取P1口数据

SWAP A ; 交换A中高四位与低四位的位置 ORL A,0F0H ; 0F0H相或

MOV P1A ; 将开关状态送LED显示 SJMP START ; 转移到START END



答:把上移后的高四位再全装为1,并且屏蔽掉低四位

3、程序调试

1)程序 a.asm

ORG 0000H

MOV 30H,#87H MOV A,#69H ADD A,30H NOP END

答:CY=0 ,(A)=1 ,OV=0 ,P=0 将程序中的指令 NOP改为 指令 DA A

答:CY=1 ,(A)=1 ,OV=0 ,P=0

2)程序 b.asm

ORG 0000H

MOV SP,#60H

MOV DPTR,#0A679H PUSH DPH PUSH DPL MOV A,#80H PUSH ACC POP B POP 30H POP 31H NOP END

答:(SP)=60H ,(A)=80H ,(30H)=79H ,(31H)=0A6H (B)=80H ,(DPH)=0A6H ,(DPL)=79H

3)程序 c.asm

.

,


.

ORG 0000H

MOV A,#02H MOV B,A RL A ADD A,B

MOV DPTR,#TAB JMP @A+DPTR NOP

ORG 0800H TAB: LJMP 1000H LJMP 2000H LJMP 3000H LJMP 4000H END

答:执行完 JMP @A+DPTR以后,PC=0806H

.


本文来源:https://www.wddqw.com/doc/fdf44b07a78da0116c175f0e7cd184254a351be8.html