华中科大光电学院微机实验报告二分支程序设计Word格式文档下载.docx
- 文档编号:19224933
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:8
- 大小:131.31KB
华中科大光电学院微机实验报告二分支程序设计Word格式文档下载.docx
《华中科大光电学院微机实验报告二分支程序设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《华中科大光电学院微机实验报告二分支程序设计Word格式文档下载.docx(8页珍藏版)》请在冰豆网上搜索。
根据变量X的值所处的区间进行相应的计算,可利用比较转移指令CJNE来判断X是否等于临界值(20,40),再根据执行CJNE指令后进位位CY的值来判断X与临界值的的大小关系(CY=0则X大于临界值,CY=1则X小于临界值),如此,再进行相应计算。
另外,除法计算可能产生余数,商和余数分开存储,乘方运算结果大于255,高八位与低八位分开存储。
2、二十四小时制电子时钟
此程序须构建两部分循环。
首先构建一个三重循环实现“一秒延时”,循环体利用NOP指令(单字节指令,1µ
s)调节延时时间。
再利用“一秒延时”,构建计时系统的三重循环,秒(0~59)、分(0~59)、时(0~23)。
此外,在计时至23:
59:
59时,返回至00:
00:
00,程序运行时修改P3.0的值可以实现暂停和继续的功能(利用JB指令进行判断和跳转)。
【流程图】
【资源分配】
寄存器DPTR用作数据指针。
变量X的值存于片外RAM的3000H单元,计算结果存于片外RAM的3001H~3002H单元,按位取反计算结果存于3001H单元,而除法计算结果的商与余数和乘方计算中结果的高、低八位分开存储于3001H~3002H单元。
工作寄存器R0、R1、R2分别用于秒、分、时循环次数的设定,R3、R4分别用于分与时的循环计数,R5~R7用于“一秒延时”中三重循环的循环次数设定。
秒、分、时数值分别由P0、P1、P2端口输出。
【源代码】
ORG0000H
LJMP1000H
ORG1000H
MOVA,#30H;
X赋值
MOVDPTR,#3000H
MOVX@DPTR,A;
存X于片外RAM
CLRC
JUDGE1:
CJNEA,#14H,JUDGE2;
X≠20,跳转至JUDGE2
ACCOUNT1:
CPLA;
X≤20,计算Y,存于片外RAM
MOVDPTR,#3001H
MOVX@DPTR,A
SJMPDONE
JUDGE2:
JNCJUDGE3;
C=0,则X>
20,跳转至JUDGE3
SJMPACCOUNT1;
C=1,则X<
20,跳转至ACCOUNT1
JUDGE3:
CLRC
CJNEA,#28H,JUDGE4;
X≠40,跳转至JUDGE4
ACCOUNT2:
MOVB,A;
X≥40,计算Y,存于片外RAM,高、低八位分开
MULAB
MOVX@DPTR,A
MOVDPTR,#3002H
MOVA,B
MOVX@DPTR,A;
高、低八位分开储存
JUDGE4:
JNCACCOUNT2;
C=0,X>
40,跳转至ACCOUNT2
SJMPACCOUNT3;
C=1,20<
X<
40,跳转至ACCOUNT3
ACCOUNT3:
MOVB,#02H;
20<
40,计算Y,存于片外RAM
DIVAB
MOVDPTR,#3001H
商、余数分开储存
SJMPDONE
DONE:
SJMP$
END
LJMP2000H
ORG2000H
MOVP0,#00H;
输出端口初始化
MOVP1,#00H
MOVP2,#00H
MOVR0,#3BH;
计时循环次数赋值
MOVR1,#3BH
MOVR2,#18H
MOVR3,#00H;
“分循环”计数
MOVR4,#00H;
“时循环”计数
CLRC
CLRA
MOVP3.0,C
VOL:
JBP3.0,PAUSE;
暂停功能跳转入口
VOL1:
MOVR5,#0AH;
“一秒延时”循环次数赋值
VOL2:
MOVR6,#64H
VOL3:
MOVR7,#0FAH
DELAY:
NOP;
“一秒延时”
NOP
DJNZR7,DELAY
DJNZR6,VOL3
DJNZR5,VOL2;
“一秒延时”结束
INCA;
“秒”数加1
DAA
MOVP0,A;
通过P0输出“秒”数
DJNZR0,VOL;
“秒循环”60次
MOVR0,#3BH;
“秒循环”循环次数复位
INCR3
MOVA,R3;
“分”数加1
MOVR3,A;
保存“分”的循环次数
MOVP1,#0FFH
MOVP1,R3;
通过P1输出“分”数
MOVP0,#00H
DJNZR1,VOL
MOVR3,#00H
INCR4
MOVA,R4
MOVR4,A;
保存“时”的循环次数
MOVP2,#0FFH
MOVP2,R4;
通过P2输出“时”数
MOVP1,#00H
DJNZR2,VOL
MOVR4,#00H
MOVP2,#00H
SJMPVOL;
时钟计时满二十四小时,跳转至初始时刻
PAUSE:
JBP3.0,PAUSE;
暂停功能模块
SJMPVOL
END
【程序测试方法与结果、软件性能分析】
截图:
X=16:
X=32:
X=48:
计时状态
暂停状态
功能分析:
该程序运行后可按正确的二十四小时制时钟进行计时,并通过手动修改P3.0
的值来控制暂停与否。
程序功能完整可靠。
【思考题】
●实现多分支结构程序的主要方法有哪些?
举例说明。
答:
一是利用条件转移指令实现,如DJNZ,JNC等等,二是利用分支表来实现,如分支地址表、转移指令表、地址偏移量表。
●在编程上,十进制加1计数器与十六进制加1计数器的区别是什么?
怎样用十进制加法指令实现减1计数?
十进制加一后需要在计算结果的基础上进行修正,运用DA指令,而十六进制加一指令所得结果即为最终结果,无需进行修正。
用十进制加法指令实现减1计数,可通过以下代码实现:
……
ADDA,#63H
DAA
……
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华中 光电 学院 微机 实验 报告 二分 程序设计