微机实验报告模板.docx
- 文档编号:16830008
- 上传时间:2023-07-17
- 格式:DOCX
- 页数:16
- 大小:328.15KB
微机实验报告模板.docx
《微机实验报告模板.docx》由会员分享,可在线阅读,更多相关《微机实验报告模板.docx(16页珍藏版)》请在冰点文库上搜索。
微机实验报告模板
实验名称
指导教师
专业班级姓名学号
联系电话
一、任务要求
实验目的:
熟练掌握Keil环境下汇编语言程序的调试方法,加深对汇编语言指令、机器码、寻址方式等基本内容的理解,掌握分支程序和简单程序的设计与调试方法,了解并行IO口的使用。
实验内容:
1.设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写程序。
2.利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。
P3.0为低电平时开始计时,为高电平时停止计时。
设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。
提高部分(选做):
a.实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。
利用P3.7状态选择加、减计数方式。
b.利用P3口低四位状态控制开始和停止计数,控制方式自定。
二、设计思路
第一题:
先利用A的最高位判断是否是负数,利用SUBB指令来判断X是否大于40,SUBBA,#40如果cy位为一,说明产生借位,即X<40,若CY=0,则X大于40,同理判断X是否大于40,求一个数的平方,用MUL指令,先将X赋给B,然后MULAB,即为X的平方运算。
第二题:
先设计一个延时子函数,利用LCALL指令调用子函数,秒计数达到60立马清零,此时分计时加一,分计数达到60,清零,小时计数加一。
然后利用DA指令将其变为BCD码输出到相应的引脚。
延时子程序利用循环嵌套以及NOP指令,要求误差在10us以内。
三、资源分配
第一题:
片外2000H为X的值,2001H为Y的值,若Y为两个字节,则2002H存储Y的高八位,2001H存储低八位。
进行商运算时,2001H为商,2002H为余数。
第二题:
R4,R3,R2分别用来暂时储存时钟的秒,分,时,时、分、秒数值分别通过P0、P1、P2端口以BCD码的形式输出,R7,R6,R5,作为延时子程序的循环嵌套,循环置数。
四、流程图
五、源代码(含文件头说明、语句行注释)
第一题:
ORG0000H
LJMPSTART
ORG0100H
START:
CLRC
BBEQU28H
CCEQU14H
MOVDPTR,#2000H
MOVXA,@DPTR;将2000H的内容赋给A
CLRC;将C清零
JBACC.7,FUSHU;判断X是不是负数,若是负数,跳转
SUBBA,#BB;作减法运算
JCNEXT;若CY为1,跳转
ADDA,#BB;CY为0,X>=40
MOVB,A;将A赋给B
MULAB;作乘法运算,即平方运算
INCDPTR;DPTR自加
MOVX@DPTR,A;将结果低位给DPTR指向的地址
INCDPTR;DPTR自加
MOVA,B
MOVX@DPTR,A;将结果低位给DPTR指向的地址
SJMPHERE
NEXT:
ADDA,#BB;恢复A的值
SUBBA,#CC;作减法运算
JCNEXT1;若不大于20,执行NEXT1
ADDA,#CC;大于20,顺序执行,恢复A的值
MOVB,#2;将B的值赋2;
DIVAB;作除法运算
INCDPTR;DPTR自加
MOVX@DPTR,A;商保存在DPTR指向的地址
INCDPTR;DPTR自加
MOVA,B
MOVX@DPTR,A;余数保存在DPTR指向的地址
SJMPHERE
NEXT1:
ADDCA,#CC;若A为正数,小于20,先恢复A的值
CPLA;A取反
INCDPTR;DPTR自加
MOVX@DPTR,A;将A存入DPTR指向的地址
SJMPHERE
FUSHU:
CPLA;取反
INCDPTR;DPTR自加
MOVX@DPTR,A;将A存入DPTR指向的地址
SJMPHERE
HERE:
SJMPHERE;踏步指令,动态停机
END
第二题:
ORG0000H
LJMPSTART
ORG0100H
START:
MOVR2,#0
MOVR3,#0
MOVR4,#0;R2,R3,R4清零
MOVP0,#0;
MOVP1,#0;
MOVP2,#0;P1,P2,P0清零
WAIT:
JBP3.0,WAIT;如果P3.0高电平,继续等待
JNBP3.0,SEC;如果P3.0为低电平,执行计数
NOP
SEC:
LCALLDELAY;调用1S延时子程序
MOVP2,R4;将R4赋给P2
MOVA,R4;将R4赋给A
ADDA,#1;A加一
DAA;BCD码修正
MOVR4,A;将A赋给R4
CJNEA,#0x60,WAIT;如果没达到60S则继续计数,若达到60S则向下执行
MOVP2,#0;秒针清零
MOVR4,#0H;R4清零
MOVP1,R3;将R3赋给P1
MOVA,R3;将R3赋给A
ADDA,#1;分针加一
DAA;BCD修正
MOVR3,A;将A存入R3
CJNEA,#0x60,WAIT;如果分针没达到60,则继续计数,如果达到60,则向下执行
MOVP1,#0;分针清零
MOVR2,#0;R2清零
MOVP0,R2;将R2存入P0
MOVA,R2;将R2存入A
ADDA,#1;时针加一
DAA;BCD码修正
MOVR2,A;将A存入R2
CJNEA,#0x24,WAIT;如果时针没到24,则继续计时,达到24,则向下执行
MOVR2,#0;R2清零
MOVP0,#0;P0清零
DELAY:
MOVR7,#46
DEL1:
MOVR5,#152
DEL2:
MOVR6,#70
DEL3:
DJNZR6,DEL3
DJNZR5,DEL2
DJNZR7,DEL1
RET
END
六、程序测试方法与结果
第一题:
如图所示,当X为29H时,即41,平方得到1681,换算成十六进制即为0691,当X为21H时,即33时,除以二商16余1,当X为10,取反得到DA,当X为AB负数,取反得到54,实验结果与理论一致。
第二题
如图所示,延时函数延时为0.9999950s达到精确要求,图二图三为分针秒针运行过程,满足钟表的运行规则。
六.思考题
1.实现多分支结构程序的主要方法有哪些?
举例说明。
2.在编程上,十进制加1计数器与十六进制加1计数器的区别是什么?
怎样用十进制加法指令实现减1计数?
1.实现多分支结构程序的主要方法有哪些?
举例说明。
I.利用条件转移指令实现,DANE或者JB,JNB等指令
例如求|X|
XDATA20H
ORG0000H
LJMPSTART
START:
MOVSP,#30H
MOVA,X
JNBACC.7,ISPOS
CPLA
INCA
ISPOS:
MOVX,A
HERE:
SJMPHERE
END
II.利用散转结构LJMP,AJMP等指令
例如:
ORG0400H
START:
MOVDPTR,#ENTRY
MOVA,R3
MOVB,#3
MULAB
JMP@A+DPTR
ENTRY:
LJMPR_KEY0
LJMPR_KEY1
LJMPR_KEY2
R_KEY0:
CPLP1.0
SJMPSTART
R_KEY1:
SETBP1.0
SJMPSTART
R_KEY2:
MOVP1,#0AAH
SJMPSTART
END
2.在编程上,十进制加1计数器与十六进制加1计数器的区别是什么?
怎样用十进制加法指令实现减1计数?
十进制加一后需要在计算结果的基础上用DA指令进行BCD修正,而十六进制加一指令所得结果即为最终结果,无需进行修正。
运用ADDA,#99H
DAA
就能实现减一计数
提高部分:
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVR0,#20H;给R0赋20H
MOVR1,#21H;给R1赋21H
MOV@R0,#0;给20H赋0
MOV@R1,#0;给21H赋0
MOVP2,#00H;给P2赋0
MOVP1,#00H;给P1赋0
WAIT:
MOVA,P3;
ANLA,#0FH;
CJNEA,#0FH,WAIT;若P3低四位都为1,则开启计数,若不全为1,则跳转wait等待开启
JBP3.7,JIA;如果P3.7为高电平,作加法运算
LJMPJIAN;如果P3.7为低电平,作减法运算
JIA:
MOVA,@R0;将20H的值给A
ADDA,#1;A加一计数
DAA;BCD码修正
MOV@R0,A;将A存入20H
MOVP1,A;低位从P1输出
JNCWAIT;如果没到100,则继续计数,到100,低位清零,高位加一
MOVA,@R1;存放高位的21H内容赋给A
ADDA,#1;当低位到100A加一
DAA;BCD修正
MOV@R1,A;将A存入21H
MOVP2,A;P2输出高两位
JNCWAIT;如果高位没到100,则继续计数
MOVP1,#00H;
MOVP2,#00H;
LJMPMAIN;返回wait
JIAN:
MOVA,@R0;将20H的值给A
ADDA,#99H;A加99H即减一运算
DAA;BCD码修正
MOV@R0,A;将A存入20H
MOVP1,A;低位从P1输出
JCWAIT;若低位没到0,则继续建议运算,到0,则高位减一
MOVA,@R1;存放高位的21H内容赋给A
ADDA,#99H;若低位减到0,高位减一
DAA;BCD码修正
MOV@R1,A;将A存入21H
MOVP2,A;P2输出高两位
LJMPMAIN;
END
如图所示,截图一表示P3.7为高电平时,加一计数器正常计数,图二表示到达99准备进位的时候,图三表示,加以计数器正常进位
图四表示减法计数器正常减一,图二表示低位达到00,高位准备减一,图三表示高位正常减一,功能与要求符合
本人承诺:
本报告内容真实,无伪造数据,无抄袭他人成果。
本人完全了解学校相关规定,如若违反,愿意承担其后果。
签字:
年月日
其它说明:
1.标题:
黑体,小四号
2.正文:
宋体,五号,1.5倍行距
3.流程图使用SmartDraw7或Visio软件绘制
4.不要加封面
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 实验 报告 模板