微机实验报告模板201Xword范文模板 11页Word文件下载.docx
《微机实验报告模板201Xword范文模板 11页Word文件下载.docx》由会员分享,可在线阅读,更多相关《微机实验报告模板201Xword范文模板 11页Word文件下载.docx(9页珍藏版)》请在冰豆网上搜索。
十位、个位由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以内。
三、资源分配
片外201XH为X的值,201XH为Y的值,若Y为两个字节,则201XH存储Y的高八位,201XH存储低八位。
进行商运算时,201XH为商,201XH为余数。
R4,R3,R2分别用来暂时储存时钟的秒,分,时,时、分、秒数值分别通过P0、P1、P2端口以BCD码的形式输出,R7,R6,R5,作为延时子程序的循环嵌套,循环置数。
四、流程图
五、源代码(含文件头说明、语句行注释)
ORG0000H
LJMPSTART
ORG0100H
START:
CLRC
BBEQU28H
CCEQU14H
MOVDPTR,#201XH
MOVXA,@DPTR;
将201XH的内容赋给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指向的地址
MOVA,B
MOVX@DPTR,A;
SJMPHERE
NEXT:
ADDA,#BB;
恢复A的值
SUBBA,#CC;
JCNEXT1;
若不大于20,执行NEXT1
ADDA,#CC;
大于20,顺序执行,恢复A的值
MOVB,#2;
将B的值赋2;
DIVAB;
作除法运算
INCDPTR;
DPTR自加
商保存在DPTR指向的地址
余数保存在DPTR指向的地址
NEXT1:
ADDCA,#CC;
若A为正数,小于20,先恢复A的值CPLA;
A取反
MOVX@DPTR,A;
将A存入DPTR指向的地址
FUSHU:
CPLA;
取反
HERE:
SJMPHERE;
踏步指令,动态停机
END
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;
分针加一
BCD修正
MOVR3,A;
将A存入R3
CJNEA,#0x60,WAIT;
如果分针没达到60,则继续计数,如果达到60,则向下执行
MOVP1,#0;
分针清零
MOVR2,#0;
R2清零
MOVP0,R2;
将R2存入P0
MOVA,R2;
将R2存入A
时针加一
DAA;
BCD码修正
MOVR2,A;
将A存入R2
CJNEA,#0x24,WAIT;
如果时针没到24,则继续计时,达到24,则向下执行MOVR2,#0;
R2清零
P0清零
DELAY:
MOVR7,#46
DEL1:
MOVR5,#152
DEL2:
MOVR6,#70
DEL3:
DJNZR6,DEL3
DJNZR5,DEL2
DJNZR7,DEL1
RET
六、程序测试方法与结果
6
如图所示,当X为29H时,即41,平方得到1681,换算成十六进制即为0691,当X为21H时,即33时,除以二商16余1,当X为10,取反得到DA,当X为AB负数,取反得到54,实验结果与理论一致。
第二题
7
如图所示,延时函数延时为0.9999950s达到精确要求,图二图三为分针秒针运行过程,满足钟表的运行规则。
六.思考题
1.实现多分支结构程序的主要方法有哪些?
举例说明。
2.在编程上,十进制加1计数器与十六进制加1计数器的区别是什么?
怎样用十进制加法指令实现减1计数?
8
1.实现多分支结构程序的主要方法有哪些?
I.利用条件转移指令实现,DANE或者JB,JNB等指令
例如求|X|
XDATA20H
MOVSP,#30H
MOVA,X
JNBACC.7,ISPOS
CPLA
INCA
ISPOS:
MOVX,A
HERE:
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
9
SJMPSTART
R_KEY1:
SETBP1.0
R_KEY2:
MOVP1,#0AAH
END《微机实验》报告
2.在编程上,十进制加1计数器与十六进制加1计数器的区别是什么?
十进制加一后需要在计算结果的基础上用DA指令进行BCD修正,而十六进制加一指令所得结果即为最终结果,无需进行修正。
运用ADDA,#99H
DAA
就能实现减一计数
提高部分:
LJMPMAIN
MAIN:
MOVR0,#20H;
给R0赋20H
MOVR1,#21H;
给R1赋21H
MOV@R0,#0;
给20H赋0MOV@R1,#0;
给21H赋0
MOVP2,#00H;
给P2赋0
MOVP1,#00H;
给P1赋0
;
WAIT:
MOVA,P3
ANLA,#0FH;
CJNEA,#0FH,WAIT;
若P3低四位都为1,则开启计数,若不全为1,则跳转wait等待开启
10
JBP3.7,JIA;
如果P3.7为高电平,作加法运算
LJMPJIAN
如果P3.7为低电平,作减法运算
JIA:
MOVA,@R0;
DAA
将20H的值给A
A加一计数BCD码修正
将A存入20H
MOV@R0,A;
MOVP1,A;
JNCWAIT;
低位从P1输出
如果没到100,则继续计数,到100,低位清零,
高位加一
MOVA,@R1ADDA,#1DAA
存放高位的21H内容赋给A
当低位到100A加一
BCD修正将A存入21H
MOV@R1,A;
MOVP2,A;
P2输出高两位JNCWAIT;
MOVP1,#00H;
MOVP2,#00H;
LJMPMAIN
返回wait
如果高位没到100,则继续计数
JIAN:
MOVA,@R0;
将20H的值给A
ADDA,#99H;
A加99H即减一运算DAA;
MOV@R0,A
将A存入20H
低位从P1输出
JCWAIT;
若低位没到0,则继续建议运算,到0,则高位减一MOVA,@R1
存放高位的21H内容赋给A
LJMPMAIN;
若低位减到0,高位减一BCD码修正
将A存入21H
P2输出高两位
如图所示,截图一表示P3.7为高电平时,加一计数器正常计数,图二表示到达99准备进位的时候,图三表示,加以计数器正常进位
图四表示减法计数器正常减一,图二表示低位达到00,高位准备减一,图三表示高位正常减一,功能与要求符合
其它说明:
1.标题:
黑体,小四号
2.正文:
宋体,五号,1.5倍行距
3.流程图使用SmartDraw7或Visio软件绘制4.不要加封面
∙荐计算机上机实验内容及实验报告要求
∙荐构建学校德育管理与评价体系的实验报告
∙荐化学实验报告格式
∙荐大学物理实验课程设计实验报告
∙荐电路实验报告要求