【华中科大光电学院微机实验报告二】分支程序设计_第1页
【华中科大光电学院微机实验报告二】分支程序设计_第2页
【华中科大光电学院微机实验报告二】分支程序设计_第3页
【华中科大光电学院微机实验报告二】分支程序设计_第4页
【华中科大光电学院微机实验报告二】分支程序设计_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、实验名称 分支程序设计实验指导教师 xxx专业班级 光信xxxx班姓名 xx学号 uxxxxxxxxx联系方式 tel:xxxxxxxxxe-mail:xxxxxxxxxxxxx.com2012-10-10【任务要求】熟练掌握keilc环境下汇编语言程序的调试方法,加深对汇编语言指令、机器码、寻址方式等基本内容的理解,掌握分支程序和简单程序的设计与调试方法,了解并行io口的使用。1. 设有8bits无符号数x存于外部ram单元,按以下方式计算后的结果y也存于外部ram单元,请按要求编写程序。2. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过p0、p1、p2端口

2、输出(以压缩bcd码的形式)。p3.0为低电平时开始计时,为高电平时停止计时。【设计思路】1、 分段函数根据变量x的值所处的区间进行相应的计算,可利用比较转移指令cjne来判断x是否等于临界值(20,40),再根据执行cjne指令后进位位cy的值来判断x与临界值的的大小关系(cy=0则x大于临界值,cy=1则x小于临界值),如此,再进行相应计算。另外,除法计算可能产生余数,商和余数分开存储,乘方运算结果大于255,高八位与低八位分开存储。2、 二十四小时制电子时钟此程序须构建两部分循环。首先构建一个三重循环实现“一秒延时”,循环体利用nop指令(单字节指令,1s)调节延时时间。再利用“一秒延时

3、”,构建计时系统的三重循环,秒(059)、分(059)、时(023)。此外,在计时至23:59:59时,返回至00:00:00,程序运行时修改p3.0的值可以实现暂停和继续的功能(利用jb指令进行判断和跳转)。【流程图】1、分段函数2、二十四小时制电子时钟【资源分配】1、 分段函数寄存器dptr用作数据指针。变量x的值存于片外ram的3000h单元,计算结果存于片外ram的3001h3002h单元,按位取反计算结果存于3001h单元,而除法计算结果的商与余数和乘方计算中结果的高、低八位分开存储于3001h3002h单元。2、 二十四小时制电子时钟工作寄存器r0、r1、r2分别用于秒、分、时循环

4、次数的设定,r3、r4分别用于分与时的循环计数,r5r7用于“一秒延时”中三重循环的循环次数设定。秒、分、时数值分别由p0、p1、p2端口输出。【源代码】1、 分段函数org 0000h ljmp 1000h org 1000h mov a,#30h ;x赋值 mov dptr,#3000h movx dptr,a ;存x于片外ram clr c judge1: cjne a,#14h,judge2 ;x20,跳转至judge2account1: cpl a ;x20,计算y,存于片外ram mov dptr,#3001h movx dptr,a sjmp done judge2: jnc j

5、udge3 ;c=0,则x20,跳转至judge3 sjmp account1 ;c=1,则x40,跳转至account2 sjmp account3 ;c=1,20x40,跳转至account3 account3: mov b,#02h ;20x40,计算y,存于片外ram div ab mov dptr,#3001h movx dptr,a mov dptr,#3002h mov a,b movx dptr,a ;商、余数分开储存 sjmp done done: sjmp $ end2、二十四小时制电子时钟org 0000h ljmp 2000h org 2000h mov p0,#00h

6、;输出端口初始化 mov p1,#00h mov p2,#00h mov r0,#3bh ;计时循环次数赋值 mov r1,#3bh mov r2,#18h mov r3,#00h;“分循环”计数 mov r4,#00h;“时循环”计数 clr c clr a mov p3.0,c vol: jb p3.0,pause ;暂停功能跳转入口 vol1: mov r5,#0ah ;“一秒延时”循环次数赋值 vol2: mov r6,#64h vol3: mov r7,#0fah delay: nop ;“一秒延时” nop djnz r7,delay djnz r6,vol3 djnz r5,vo

7、l2 ;“一秒延时”结束 inc a ;“秒”数加1 da a mov p0,a ;通过p0输出“秒”数 djnz r0,vol ;“秒循环”60次 mov r0,#3bh ;“秒循环”循环次数复位 clr a inc r3 mov a,r3 ;“分”数加1 da a mov r3,a ;保存“分”的循环次数 mov p1,#0ffh mov p1,r3 ;通过p1输出“分”数 mov p0,#00h clr a djnz r1,vol mov r1,#3bh mov r3,#00h clr a inc r4 mov a,r4 da a mov r4,a ;保存“时”的循环次数 mov p2,

8、#0ffh mov p2,r4 ;通过p2输出“时”数 mov p0,#00h mov p1,#00h clr a djnz r2,vol mov r4,#00h mov p2,#00h sjmp vol ;时钟计时满二十四小时,跳转至初始时刻 pause: jb p3.0,pause ;暂停功能模块 sjmp vol end【程序测试方法与结果、软件性能分析】1、 分段函数截图:x=16:x=32:x=48: 2、 二十四小时制电子时钟截图: 计时状态暂停状态功能分析:该程序运行后可按正确的二十四小时制时钟进行计时,并通过手动修改p3.0的值来控制暂停与否。程序功能完整可靠。【思考题】实现多分支结构程序的主要方法有哪些?举例说明。答:一是利用条件转移指令实现,如djnz,jnc等等,二是利用分支表来实现,如分支地址表、转移指令表、地址偏移量表。在编程上,十进制加1计数器与十六进制

温馨提示

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

最新文档

评论

0/150

提交评论