ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:251.70KB ,
资源ID:12489724      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12489724.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(分支与循环程序的设计.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

分支与循环程序的设计.docx

1、分支与循环程序的设计实验名称 分支与循环程序设计 成 绩 指导教师 * 专业班级 * 姓 名 白* 学 号 * 联系 * 一、任务要求1. 熟练掌握Keil环境下汇编语言程序的调试方法,加深对汇编语言指令、机器码、寻址方式等基本容的理解,掌握分支程序和简单程序的设计与调试方法,了解并行IO口的使用。2. 设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写完整程序。 3. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。P3.0为低电平时开始计时,为高电平时停止计时。

2、设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。4. 1)实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。利用P3.7状态选择加、减计数方式。2)利用P3口低四位状态控制开始和停止计数,控制方式自定。二、设计思路1. 先在外部RAM取数,然后判断该符号数是否为负数,若为负数,则取相反数并存数;若为正数,则接着判断该数是否大于等于64,若满足,则求平方并存数,先存低位,后存高位;若小于64,则接着判断该数是否大于10,若满足,则求该数的一半并存数;若小于等于10,则取相反数并存数。2. 第一步先编可以延时1S的子程序DELAY;接着判断P3.O是否满足

3、开始计数条件,若不满足,则重复判断;若满足,则对时分秒分别赋值,调用延时子程序,判断是否满足计时条件,若不满足,则重复判断直至满足;若满足,则秒钟自加一,循环,判断秒钟循环满60次后出循环,对分钟自加一,然后继续循环,最后判断分钟循环满60次后出循环,对时钟自加一,然后判断时钟循环满24则回到初值,时分秒重新赋值并重新开始循环。3. 判断P3.7,若为1,则进行加一计数,若为0,则跳转至另一程序进行减一计数;加一计数中,先取低位P1送A,自加一,送P1,判断是否有溢出,若有,则取高位P2送A,自加一,送P2,然后回判断循环;减一计数同理,即先取低位P1送A,自减一,送P1,判断是否有进位,若有

4、,则取高位P2送A,自减一,送P2,然后回判断继续循环。三、资源分配12000H 片外RAM存数 2001H 存结果低八位 2002H 存结果高八位 B寄存器 暂存结果高八位2P3.0 存计时判断位 R0、R1、R2 存延时子程序中各重循环的循环次数 R3、R4、R5 存时分秒的循环次数 P0、P1、P2 存时分秒的输出值3P1、P2 分别存十进制计数的低两位、高两位 P3.7 存计数方式的控制位四、流程图1、8 bit符号数的判断与计算 2、时钟设计 3十进制加减一计数器 五、源代码 (含文件头说明、语句行注释)18 bit符号数的判断与计算 ORG 0000H LJMP START ORG

5、 1000HSTART: MOV DPTR,#2000H;地址指针赋初值 MOV A,#22 MOVX DPTR,A MOVX A,DPTR;取数 JB ACC.7,DD CJNE A,#64,AA;若A64,则转AAAA: JC BB;若A64,则转BB MOV B,A MUL AB;求A的平方 INC DPTR MOVX DPTR,A;存结果低八位 INC DPTR MOV A,B MOVX DPTR,A;存结果高八位 SJMP $BB: CJNE A,#10,CC;若A10,则转CC CPL AEE: INC DPTR MOVX DPTR,A SJMP $CC: JC DD;若A10,则

6、转DD RR A;若A10,则右移一位 SJMP EEDD: CPL A INC A SJMP EE END2时钟设计 ORG 0000H LJMP START ORG 1000HSTART: JB P3.0,START;若为0,则开始计时RESTA: MOV R3,#24 MOV P0,#00H ;时钟赋初值LOOP3: MOV R4,#60 MOV P1,#00H ;分钟赋初值LOOP2: MOV R5,#60 MOV P2,#00H ;秒钟赋初值LOOP1: ACALL DELAY;调用延时1S子程序LOOP: JB P3.0,LOOP;若为1,则停止计时 MOV A,P2 ADD A,

7、#01H DA A MOV P2,A DJNZ R5,LOOP1;判断秒钟是否结束循环 MOV A,P1 ADD A,#01H DA A MOV P1,A DJNZ R4,LOOP2;判断分钟是否结束循环 MOV A,P0 ADD A,#01H DA A MOV P0,A DJNZ R3,LOOP3;判断时钟是否结束循环 LJMP RESTADELAY: MOV R0,#12 NOPDELAY3:MOV R1,#130DELAY2:MOV R2,#212 NOP NOPDELAY1:NOP DJNZ R2,DELAY1 DJNZ R1,DELAY2 DJNZ R0,DELAY3 RET END

8、3十进制加减计数器 ORG 0000H LJMP START ORG 1000HSTART:MOV P1,#12H MOV P2,#92HLOOP: ACALL DELAY MOV A,P2 JB P3.7,AA;若为1,则转AA实现记数加1 ADD A,#99H DA A;实现十进制减1 MOV P2,A JC BB;判断是否产生借位,若产生,则对高位减1 MOV A,P1 ADD A,#99H DA A MOV P1,A AJMP LOOPAA: ADD A,#01H DA A;实现十进制加1 MOV P2,A JNC BB;判断是否产生进位,若产生,则对高位加1 MOV A,P1 ADD

9、 A,#01H DA A MOV P1,ABB: AJMP LOOPDELAY: MOV R0,#12 NOPDELAY3:MOV R1,#130DELAY2:MOV R2,#212 NOP NOPDELAY1:NOP DJNZ R2,DELAY1 DJNZ R1,DELAY2 DJNZ R0,DELAY3 RET END六、程序测试方法与结果18 bit符号数的判断与计算1)令片外RAM中数据为642)令片外RAM中数据为223)令片外RAM数据为14)令片外RAM数据为-22时钟设计1)令P3.0=0,程序按十进制正常运行2)令P3.0=0,暂停计数3)设置断点观察延时子程序的延时时间,刚

10、好为1s3十进制加减1计数器1)将P3.7置1,计数器实现加一计数2)将P3.7置0,计数器实现减一计数七、思考题1 实现多分支结构程序的主要方法有哪些?举例说明。a) 分支地址表法b) 转移指令表法c) 地址偏移量表法2 在编程上,十进制加1计数器与十六进制加1计数器的区别是什么?怎样用十进制加法指令实现减1计数?a) 十进制加1计数器满十进1,十六进制加1计数器满16进1,十进制加法需用DA A指令进行调整b) 用ADD A,#99HDA A 指令,即可实现减1计数本人承诺:本报告内容真实,无伪造数据,无抄袭他人成果。本人完全了解学校相关规定,如若违反,愿意承担其后果。签字: 白如海 2017 年 10 月 20 日 其它说明:1.标题:黑体,小四号2. 正文:宋体,五号,1.5倍行距3.流程图使用 SmartDraw7 或Visio软件绘制4.不要加封面

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1