重庆大学 单片机实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一系统认识及基本程序设计实验
四、实验内容
1. 将BCD 码整数0~255 存入片内RAM 的20H、21H、22H 中,然后转换为二进制整数00H~FFH,保存到寄存器R4 中。修改20H、21H、22H 单元的内容,如:00H,05H,08H;观察实验结果。
参考程序:
;==============================================================
; 文件名称: Asm2-1.asm
; 功能描述: BCD整数转换为二进制整数(8位, 范围从00H--FFH)
;==============================================================
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV R0, #20H ;BCD存放高位地址
MOV R7, #03H ;BCD码0--255, 最多3位
CLR A
MOV R4, A
LP1: MOV A, R4
MOV B, #0AH
MUL AB ;乘10
ADD A, @R0 ;加下一位的值
INC R0 ;指向下一单元
MOV R4, A ;结果存入R4
DJNZ R7, LP1 ;转换未结束则继续
SJMP MAIN ;设置断点, 观察实验结果R4中的内容
END
2. 将16 位二进制整数存入R3R4 寄存器中,转换为十进制整数,以组合BCD 形式存储在RAM 的20H、21H、22H 单元中。
参考程序:
;=============================================================
; 文件名称: Asm2-2.asm
; 功能描述: 二进制整数(16位)转换为十进制整数(组合BCD)
;=============================================================
; 0--FFFFH(R3R4)==>0--65535
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV R0, #22H ;转换结果低位地址
MOV A, R0
PUSH ACC ;ACC表示累加器A的直接地址
MOV R7, #03H
CLR A
LP1: MOV @R0, A ;结果存储地址清零
DEC R0
DJNZ R7, LP1
POP ACC
MOV R0, A
MOV R7, #16
LP2: PUSH ACC
CLR C
MOV A, R4 ;R4中为二进制数的低位
RLC A
MOV R4, A
MOV A, R3 ;R3中为二进制数的高位
RLC A
MOV R3, A
MOV B, #03H
LP3: MOV A, @R0
ADDC A, @R0 ;执行乘2操作
DA A ;十进制调整
MOV @R0, A ;结果保存
DEC R0
DJNZ B, LP3
POP ACC
MOV R0, A
DJNZ R7, LP2
LJMP MAIN ;设置断点观察结果, 可进行下一次转换
END
3. 通过查表的方法将16 进制数转换为ASCII 码;
参考程序:
;============================================================= ; 文件名称: Asm4-1.asm
; 功能描述: 查表程序设计, 将十六进制数0~F通过查表的方法
; 转换为ASCII码
;=============================================================
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV DPTR, #ASCTAB ;表格首地址送DPTR
MOV A, R7 ;R7中为待转换的数
ANL A, #0FH ;取低4位
MOVC A, @A+DPTR ;查表
MOV R5, A ;低4位转换结果送R1
MOV A, R7
ANL A, #0F0H ;取待转换数的高4位
SWAP A ;高4位与低4位交换
MOVC A, @A+DPTR ;查表
MOV R6, A ;高4位转换结果送R2
SJMP MAIN ;设置断点观察结果
ASCTAB: DB 30H, 31H, 32H, 33H, 34H
DB 35H, 36H, 37H, 38H, 39H
DB 41H, 42H, 43H, 44H, 45H, 46H
END
4. 通过查表的方法实现y=x2,其中x为0~9 的十进制数,以BCD码表示,结果仍以BCD 码形式输出。
参考程序:
;==============================================================
; 文件名称: Asm4-2.asm
; 功能描述: 查表程序, 用程序实现Y=X*X, X为0到9的十进制数,
; 用BCD码(00H到09H)表示, 将X的平方, 即Y也以BCD码
; 的形式保存到R1中.
;==============================================================
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV DPTR, #SQR ;取表格首地址
MOV A, R7 ;要计算的值
MOVC A, @A+DPTR ;查表
MOV R6, A ;结果保存
SJMP MAIN
SQR: DB 00H, 01H, 04H, 09H, 16H
DB 25H, 36H, 49H, 64H, 81H
END
实验二片内I/O口及中断应用实验
一、实验目的
了解P1 口作为输入输出方式使用时,CPU 对P1 口的操作方式。了解MCS-51 单片机的中断原理,掌握中断程序的设计方法。