单片机第二次试验报告-分支程序设计_第1页
单片机第二次试验报告-分支程序设计_第2页
单片机第二次试验报告-分支程序设计_第3页
单片机第二次试验报告-分支程序设计_第4页
单片机第二次试验报告-分支程序设计_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《微机试验》报告试验名称分支程序设计试验专业班级姓名 学号序号联系方式一、任务要求娴熟把握KeilC环境下汇编语言程序的调试方法,加深对汇编语程序的设计与调试方法,了解并行IO8bitsXRAM的结果YRAMX2 当X40YX/2 当20X40X 当X20X25124P0、P1、P2〔BCD形式)。P3。0:a.41P1个位由P2P3.7b。利用P3二、设计思路1。分段函数设计X值所处的区间进展相应的计算.由学过的学问知道,可利用比较转移指令CJNE来推断X是否等于临界值20,4CYXCY=0则XCY=1X另外,除法计算中可能产生余数,商和余数应当分开存储,假设乘方运255,高八位与低八位应分开存储。24经屡次循环到达延时一秒的效果。再利用已经构建好的“一秒延时“局部,设计计时59、分—5、时0-2。需要留意的59P3。0加一减一程序先初始化P1P2,然后当P30P3。7012P2A,对A进展ADD然后存进2位从P1A进展ADDCP1.P3.71ADD1299P1P222能。三、资源安排分段函数依据题目的条件,首先,设该8位无符号数为30H,把片外地址4000H4001H4002H得到的结果Y4001H的商与余数和乘方计算中结果的高4001H—4002H单元。用存放器A,B2。二十四小时制时钟工作存放器R0R1R2R3、R4,R5—R7的循环次数设定。秒、分、时数值分别由P2、P1、P03.1将十进制数的千位数和百位数存于P2,P3。0P3.34P3.7为选择加一或减一的计数方式的把握位;R3,R4,R5延时程序指定循环次数.四、流程图1。分段函数1。分段函数开头XA←X设置数据指针〔DPTR〕←AX于片外RAMA≠20NYNY=/XYCY←0(4001H)←ANYY=X/2CY≠1?A≠40?YNY=X(4001H)←A(4002H)←B完毕时钟程序开头PO←0 P1←0P2←0 P3←0P3.0=0?Y N1s秒钟计数,R0加1P2←A N

R0=60H?YR0←0P2←0分钟计数,R1加1NR1=60H? P1←AYR1←0P1←0时钟计数,R21N YP0←A R2=24? R2←0 P0←0五.源代码1.分段函数ORG0000HLJMPMAINORG0100HMAIN:MOVA,#30H 8AMOVDPTR,#4000HMOVX@DPTR,A

;定义数据指针;将X存于片外RAMCLRC ;将进位位清零KIND1:CJNEA,#14H,KIND2 ;将A14H14H,跳转至KIND2OUT1:CPLAMOVDPTR,#4001HMOVX@DPTR,ASJMPDONEKIND2:JNCKIND3

;对A;定义数据指针4001H;推断进位位CY00,跳转至KIND3SJMPOUT1;否则跳转至OUT1KIND3:CLRC;将进位位清零CJNEA,#28H,KIND4;将A28H28H,跳转至KIND4OUT2:MOVB,A;将ABMULABXB,低八位存于AMOVDPTR,#4001H;定义数据指针MOVX@DPTR,A4001HINCDPTR;数据指针加一MOVA,B;将BAMOVX@DPTR,A4002HSJMPDONEKIND4:JNCOUT200,跳转至OUT2SJMPOUT3OUT3:MOVB,#02H

;否则跳转至OUT3DIVABMOVDPTR,#4001HMOVX@DPTR,AINCDPTRMOVA,BMOVX@DPTR,ASJMPDONEDONE:SJMP$END时钟程序ORG0000HLJMPMAINORG0100HMAIN:MOVR0,#00HMOVP0,#00HMOVP1,#00HMOVP2,#00HSTART:JBP3.0,STARTMOVR2,P2CJNER2,#60H,DELMOVP2,#00HMOVA,P1ADDA,#01HDAAMOVP1,AMOVR1,P1CJNER1,#60H,DEL

;计算X/2,将商存于A,余数存于B;定义数据指针4001H14002H;时钟位清零;分钟位清零;秒钟位清零;P3.0;P2的值存入R26060;秒钟清零1;分钟位改为BCD;P1R16060MOVP1,#00H;分钟清零MOVA,R0ADDA,#01H1DAA;时钟位改为BCDMOVR0,AMOVP0,ACJNER0,#24H,DEL2424MOVP0,#00HMOVR0,#00H

;时钟位清零DEL: MOVR7,#24 ;延时程序LOOP1:MOVR6,#61LOOP2:MOVR5,#170LOOP3:NOPNOPDJNZR5,LOOP3DJNZR6,LOOP2DJNZR7,LOOP1MOVA,P2ADDA,#01H1DAAMOVP2,ASJMPSTARTEND加一减一程序ORG0000HLJMPMAINORG0100HMAIN:MOVP1,#00H;P1MOVP2,#00H;P2MOVP3,#7FH;P37FHSTART:JBP3.0,STARTJBP3.1,STARTJBP3。2,STARTJBP3。3,START;推断是否开头计时LJMPDELAY;跳转到延时子程序DELAY:MOVR7,#24DEL1:MOVR6,#61DEL2:MOVR5,#170DEL3:NOPNOPDJNZR5,DEL3DJNZR6,DEL2DJNZR7,DEL11JBP3.7,DOWN;P3.701P3.711数LJMPUPDOWN:MOVA,P2CLRCSUBBA,#01HMOVR1,AANLA,#0FHMOVR7,AMOVA,R1ANLA,#0F0HMOVR1,AMOVA,P1SUBBA,#00HMOVR0,AANLA,#0FHMOVR6,AMOVA,R0ANLA,#0F0HMOVR0,ACJNER7,#0FH,LOOP1MOVR7,#09HLOOP1:CJNER1,#0F0H,LOOP2MOVR1,#90HLOOP2:CJNER6,#0FH,LOOP3MOVR6,#09HLOOP3:CJNER0,#0F0H,LOOP4MOVR0,#90HLOOP4:MOVA,R1ADDA,R7DAAMOVP2,AMOVA,R0ADDA,R6DAAMOVP1,AUP:

LJMPDELAYMOVA,P2ADDA,#01HDAAMOVP2,AMOVA,P1ADDCA,#00HDAAMOVP1,A

1LJMPDELAY 1END六、程序测试方法与结果、软件性能分析1。分段函数对于分段函数的问题,可以将X个存放器及有关地址中内容,进展验证。截图如下:〔1)X=30H(2)X=0AH(3〕X=18H阅历证,全部结果正确,且运行程序过程中并未消灭任何问题,故源程序正确2.24附加:思考题1.实现多分支构造程序的主要方法有哪些?举例说明。1答:1.一是利用条件转移指令实现,如DJNZ,JNC例如:例如,推断两个单字节无符号数的大小〔分别存于片内RAM的40H和41H单元)并把大数存入42H单元。可以用推断CYJNCJUDGE:MOVA,40HCLRCSUBBA,41HJNCLPMOV42H,41HRETLP: MOV42H,40HRET二是利用分支表来实现,如分支地址表、转移指令表、地址偏R3的值把握转向8表实现:MOVDPTR,#BRATAB;取表首地址MOVA,R3ADDA,R3;A←R3×2JNCNADDINCDPH;R3×2进位加到DPHNADD:MOVA,R4 ;暂存AMOVCA,@A+DPTR ;取分支地址高8位XCHA,R4INCAMOVCA,@A+DPTR;取分支地址低8位MOVDPL,A

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论