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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

分支实验.docx

1、分支实验微机实验报告实验名称 分支程序设计实验 专业班级 姓名 学号 序号 联系方式 一、 任务要求1. 设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写程序。2. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。P3.0为低电平时开始计时,为高电平时停止计时。a. 实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。利用P3.7状态选择加、减计数方式。 b. 利用P3口低四位状态控制开始和停止计数,控制方式自定。二、设计思路 1.分段函数

2、程序:将R1设置为标志位。从外部RAM取出X,先判断X与40的大小,再判断X与20的大小。当X大于等于40时,标志位设置为11H;X小于等于20时,标志位设置为01H;20X40?FLAG=11HNYFLAG=01HX=20?YFLAG=01HNX40,标志位置11H SJMP CALCULAT ;跳转至计算步骤JUDGETW: CJNE A,#20H,LESSTW ;若X小于40,判断是否等于20 MOV FLAG,#01H ;若X=20,标志位置01H SJMP CALCULAT ;跳转至计算步骤LESSTW: JNC MID ;若X不为20,判断是否小于20 MOV FLAG,#01H

3、;若小于20,标志位置01H SJMP CALCULAT ;跳转至计算步骤MID: MOV FLAG,#10H ;若20x40,标志位置10HCALCULAT: CJNE FLAG,#10H,CASE1 ;标志位与10H比较 MOV B,#2 DIV AB ;若为10H,X/2 SJMP STORE1 ;跳转至存储步骤CASE1: JNC CASE2 ;判断标志位是否小于10H CPL A ;若小于10H,A取非 SJMP STORE2 ;跳转至存储步骤CASE2: MOV B,A ;若标志位大于10H,X取平方 MUL ABSTORE1: MOV R2,A ;对乘除法存储 MOV A,B I

4、NC DPTR MOVX DPTR,A ;计算结果Y高位,余数存于1001H MOV A,R2STORE2: INC DPTR MOVX DPTR,A ;取非,低位,商存于1002H SJMP $ ;踏步 END 2.时钟程序: ; R0:时 ; R1:分 ; R2:秒 ; R3-R7:计时循环 ORG 0000H LJMP MAIN ORG 0200HMAIN: MOV R0,#0 ;初始化R0 MOV R1,#0 ;初始化R1 MOV R2,#0 ;初始化R2 MOV P0,#0 ;初始化P0 MOV P1,#0 ;初始化P1 MOV P2,#0 ;初始化P2STAY: JB P3.0,S

5、TAY ;判断P3.0电平SEC: LCALL DELAY ;调用计时函数 INC R2 ;秒加1 MOV P2,R2 ;P2口输出秒 CJNE R2,#3CH,STAY ;判断是否到60秒 MOV R2,#0 ;秒清0 INC R1 ;分加1 MOV P1,R1 ;P1口输出分 CJNE R1,#3CH,STAY ;判断是否到60分 MOV R2,#0 ;分清0 INC R0 ;小时加1 MOV P0,R0 ;P0口输出小时 CJNE R0,#18H,STAY ;判断是否到24小时 MOV R0,#0 ;小时清0 AJMP STAY DELAY: MOV R7,#28H ;延时5usLOOP

6、5: MOV R6,#05H NOP NOP LOOP4: MOV R5,#05H NOP LOOP3: MOV R4,#05H NOP LOOP2: MOV R3,#41H NOP LOOP1: NOP DJNZ R3,LOOP1 DJNZ R4,LOOP2 DJNZ R5,LOOP3 DJNZ R6,LOOP4 DJNZ R7,LOOP5 RET END3. 实现4位十进制加、减1计数程序:; R1:千位,百位; R2:十位,个位; 30H:暂存R2; R4:暂存A; P3.7=0,减,P3.7=1,加 ORG 0000H LJMP MAIN ORG 0200HMAIN: MOV A,#9

7、9H ;四位数赋值 MOV R1,A MOV A,#79H MOV R2,AJUDGE: JB P3.7,ADDUP ;若p3.7=1,加1;否则减1DEDUCE: DEC R2 ;R2减1 CJNE R2,#0FFH,ADJUST ;判断R2是否借位 MOV R2,#99H ;借位则置99 DEC R1 ;R1减1ADJUST: MOV 30H,R2 ;R2存于30H MOV A,#0H ;调整R2低位 ADD A,R2 DA A MOV R4,A CLR C SUBB A,30H ;判断是否调整 JZ NADJ MOV A,R4 SUBB A,#10H ;若调整,则对R2高位减1,低位补4

8、 ADD A,#04H MOV R4,ANADJ: MOV A,R4 MOV R2,A CJNE R1,#0,CONTNUE ;R1为0重置 SJMP MAIN ADDUP:INC R2 ;R2加1 MOV A,#0 ;调整R2 ADD A,R2 DA A MOV R2,A CJNE R2,#00H,CONTNUE ;判断是否进位 INC R1 ;进位则R1加1 MOV A,#0 ;调整R1 ADD A,R1 DA A MOV R1,A CJNE R1,#00H,CONTNUE ;若R1溢出 SJMP MAIN ;重置CONTNUE:MOV P1,R1 MOV P2,R2 SJMP JUDGE

9、 END4.P3口低四位控制计数:; R1:千位,百位; R2:十位,个位; 30H:暂存R2; R4:暂存A; R5:标志位; 若p3.0低二位不全为0且3,4位为0,则加1;低二位为0且3,4位不全为0,则减1;否则不改变 FLAG EQU R5 ORG 0000H LJMP MAIN ORG 0200HMAIN: MOV A,#99H ;四位数赋值 MOV R1,A MOV A,#09H MOV R2,AJUDGE1: MOV A,P3 ANL A,#0FH ;屏蔽P3高四位 CJNE A,#03H,COMP1 ;判断P3口值与3的关系 MOV FLAG,#01H ;若等于3,则标志位置

10、#01H SJMP JUDGE2 ;跳转至标志位判断COMP1: JNC COMP2 ;若小于3,标志位置#01H MOV FLAG,#01H SJMP JUDGE2 ;跳转至标志位判断COMP2: CJNE A,#0CH,COMP3 ;判断P3口值是否等于12 MOV FLAG,#11H ;若相等,则标志位置11H SJMP JUDGE2 ;跳转至标志位判断COMP3: CJNE A,#08H,COMP4 ;判断P3口值是否等于8 MOV FLAG,#11H ;若相等,则标志位置11H SJMP JUDGE2 ;跳转至标志位判断COMP4: CJNE A,#04H,REST ;判断P3口值是

11、否等于4 MOV FLAG,#11H ;若相等,则标志位置11H SJMP JUDGE2 ;跳转至标志位判断REST: MOV FLAG,#10H ;其他情况则标志位置10HJUDGE2: CJNE FLAG,#10H,COMP5;判断标志位与10H关系,相等则不加也不减 SJMP CONTNUE COMP5: JC ADDUP ;若为01H,则进入加法,否则进入减法DEDUCE: DEC R2 ;R2减1 CJNE R2,#0FFH,ADJUST ;判断R2是否借位 MOV R2,#99H ;借位则置99 DEC R1 ;R1减1ADJUST: MOV 30H,R2 ;R2存于30H MOV

12、 A,#0H ;调整R2低位 ADD A,R2 DA A MOV R4,A CLR C SUBB A,30H ;判断是否调整 JZ NADJ MOV A,R4 SUBB A,#10H ;若调整,则对R2高位减1,低位补4 ADD A,#04H MOV R4,ANADJ: MOV A,R4 MOV R2,A CJNE R1,#0,CONTNUE ;R1为0重置 SJMP MAIN ADDUP: INC R2 ;R2加1 MOV A,#0 ;调整R2 ADD A,R2 DA A MOV R2,A CJNE R2,#00H,CONTNUE ;判断是否进位 INC R1 ;进位则R1加1 MOV A,

13、#0 ;调整R1 ADD A,R1 DA A MOV R1,A CJNE R1,#00H,CONTNUE ;若R1溢出 SJMP MAIN ;重置CONTNUE:MOV P1,R1 MOV P2,R2 SJMP JUDGE1 END六、程序测试方法与结果、软件性能分析利用KeilC的单步调试与断点调试观察程序运行结果。程序能够完成预期功能。七、心得与体会 1)思考题:1 实现多分支结构程序的主要方法有哪些?举例说明。答:分支较少时,可以利用条件转移指令判断与临界值关系实现多分支结构。如本实验内容1。分支较多时,采用分支表实现多向分支。例如:根据R3的值控制8个分支程序。可利用如下程序: MOV DPTR,#JMPTAB MOV A,R3 ADD A,R3 JNC NADD INC DPHNADD: JMP A+DPTRJMPTAB:AJMP SUBR0 AJMP SUBR1 AJMP SUBR72 在编程上,十进制加1计数器与十六进制加1计数器的区别是什么?怎样用十进制加法指令实现减1计数?答:十进制加一计数器在运算后需要调用BCD码调整程序对结果进行调整,而十六进制加一计数器则不用。 利用十进制加法指令实现减一计数: 设减数存放于R2中 MOV A,R2 ADD A,#0FFH DA A MOV R2,A2)实验体会:

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

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