一、实验目的
1.熟练使用Keil、Protues两款软件
2.通过上机操作,增强个人动手实践能力
3.加深对理论知识的理解
4.培养运用汇编语言进行初步编写程序的能力
二、实验内容
1.将片外RAM3050-306FH中数据转移至片内70-8FH中。
要求:可以从Keil或Protues上看到RAM的数据转移结果。
2.设计一个外部中断触发流水灯系统:当外部中断来临时,启动流水灯,即令P2口的LED轮流循环点亮。
要求:开发板或Prrotues演示
3.将片内存储器80H中存放的BCD码转换为ASCII码,要求使用表格查询技术。
要求:在Keil或Protues上看到数据转换结果。
4.各使用中断方式和查询方式设计一个方波发生器,频率为50HZ。
要求:Protues使软件间示波器显示方波。
三、实验程序
1. \\\\将片外RAM3050-306FH中数据转移至片内70-8FH中
ORG 0000H
AJMP MAIN \\\\上电,转向主程序
ORG 0030H \\\\主程序入口
MAIN: MOV DPTR,#3050H \\\\数据指针指向地址3050H
MOV A,#04H \\\\将立即数04H送A寄存器
MOV R0,#20H
NEXT: MOVX @DPTR,A
INC DPTR \\\\数据指针DPTR自加一
DJNZ R0,NEXT \\\\判断是否跳转到NEXT或继续向下执行
MOV DPTR,#3050H
MOV R0,#70H
MOV R2,#20H
NEXT1:
MOVX A,@DPTR
MOV @R0,A
INC DPTR
INC R0
DJNZ R2,NEXT1
SJMP $ \\\\等待
END
2. \\\\设计一个外部中断触发流水灯系统:当外部中断来临时,启动流水灯,即令P2口的LED轮流循环点亮
ORG 0000H
SJMP MAIN \\\\上电,转向主程序
ORG 0003H \\\\外部中断0向量入口
AJMP INSER
ORG 0030H \\\\主程序入口
MAIN: SETB EX0 \\\\允许外部中断0中断
SETB IT0 \\\\选择边沿触发方式
SETB EA \\\\CPU开中断
HERE: SJMP HERE \\\\等待中断
ORG 0200H
INSER: MOV R2,#08H \\\\设置循环次数
MOV A,#01H \\\\赋初值,设置高电平亮
NEXT: MOV P2,A \\\\将初值送往P2口
LCALL DELAY \\\\ 延时
RL A \\\\左移一位
DJNZ R2,NEXT \\\\判断循环次数,是否跳转到NEXT或继续向下执行
RETI \\\\中断返回
DELAY: MOV R3,#0FFH \\\\延时程序
DEL2: MOV R4,#0FFH
DEL1: NOP
DJNZ R4,DEL1
DJNZ R3,DEL2
RET
END
3.\\\\将片内存储器80H中存放的BCD码转换为ASCII码,要求使用表格查询技术
ORG 0000H
LJMP MAIN
ORG 0030H\\\\主程序起始地址
MAIN:
MOV 80H,#05H \\\\将立即数50H转送内存单元80H
MOV A,80H \\\\将内存单元80H中的内容送寄存器A
MOV DPTR,#TAB
MOVC A,@A+DPTR \\\\A寄存器内容加指针偏移量后送A寄存器
MOV 80H,A
RET
TAB: DB 30H,31H,32H,33H,34H
DB 35H,36H,37H,38H,39H
4.1\\\\中断方式产生50HZ方波
ORG 0000H
AJMP MAIN
ORG 0030H \\\\主程序入口
MAIN: MOV TMOD,#10H \\\\设置定时器工作模式为模式1
MOV TH1,#0D8H \\\\装入T1计数初值
MOV TL1,#0F0H
SETB ET1 \\\\开中断
SETB EA \\\\CPU开中断
SETB TR1 \\\\启动定时器T1
HERE: SJMP HERE \\\\等待中断
ORG 001BH \\\\T1中断向量地址
CLR TF1 \\\\将TF1清零
CPL P2.0 \\\\P2.0取反输出
MOV TH1,#0D8H \\\\重装初值
MOV TH0,#0F0H
RETI;中断返回
END
4.2 \\\\查询方式产生50HZ方波
ORG 0000H
AJMP MAIN
ORG 0030H \\\\主程序入口
MAIN: MOV TMOD,#10H \\\\设置定时器的工作模式为模式1
SETB TR1 \\\\启动定时器T1
LOOP: MOV TH1,#0D8H \\\\装入T1计数初值
MOV TH0,#0F0H
JNB TF1,$ \\\\T1没有溢出则等待
CLR TF1 \\\\产生溢出,清标志位
CPL P2.0 \\\\P2.0取反输出
SJMP LOOP \\\\循环
END
四、实验结果截图
1.
2
3.
4.1
4.2
因篇幅问题不能全部显示,请点此查看更多更全内容