分支与循环程序设计实验教程.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
分支与循环程序设计实验教程

实验名称 分支与循环程序设计实验 成 绩 任务要求 1. 设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写完整程序。 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。P3.0为低电平时开始计时,为高电平时停止计时。设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。 提高部分(选做): 1)实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。利用P3.7状态选择加、减计数方式。 2)利用P3口低四位状态控制开始和停止计数,控制方式自定。 设计思路 任务一:机器内存入的数默认为无符号数,所以应该先判断正负性。对于8位有符号数,则范围是-128到127。如果是负数则直接归到取反区间;如果是正数,则使用两次比较转移指令,并根据CY的值进行区分,最后得出结果。 任务二:判断控制位P3.0是否为0,当P3.0=1时原地踏步重复判断,当P3.0=0时开始计时。计时开始,计时采用多重循环嵌套最内层是秒钟计时,然后是分钟计时,最后是时钟计时。先通过一个延时1s的子程序,每运行一次延时子程序秒钟加1,并通过CJNE指令判断是否等于60,等于60则进入分钟计数并将秒钟清零,否则继续循环计时。当分钟数为60时则向时钟进位,并将分钟数清零。当时钟数为24时,则重新开始计时。 任务三(提高部分):先通过检查P3口低四位的状态来控制是否计数,存在高电平则不计数。再检查P3.7端口状态来选择计数模式。加1计数时采用INC A和DA A 指令实现十进制加1计数。减1计数采用与-1(BCD码形式)补码相加即99H相加实现十进制减1计数。其中每计数一次延时1s。 资源分配 任务一:3000H: 8bit符号数; 3001H:平方低位、商、取反 ;3002H:平方高位、余数 任务二:P0:显示小时;P1:显示分钟;P2:显示秒钟;P3.0:时钟开关; R4、R5、R3:存放循环次数 任务三(提高部分):P1:显示千位和百位;P2:显示十位和个位;P3:控制计数; R4、R5、R3:存放延时程序中的循环次数 流程图 任务一: 任务二: 任务三(提高部分): 五、源代码 (含文件头说明、语句行注释) 任务一: File name: text1.asm Description: 分支程序 Source used: 3000H: 8bit符号数 3001H:平方低位、商、取反 3002H:平方高位、余数 MAIN: MOV DPTR,#3000H ;指针赋值,8位有符号数地址 MOVX A,@DPTR ;3000H取数 JNB ACC.7,L1 ;不为负数转L1 COMP1: CPL A ;取反 SJMP SAVE ; L1: CJNE A,#10,L2 ;不等于10转L2 SJMP COMP1 ; L2: JC COMP1 ;小于10转COMP1 CJNE A,#64,L3 ;大于10不等于64转L3 COMP2: MOV B,A ; MUL AB ;求平方 SJMP SAVE ; L3: JNC COMP2 ;大于64转COMP2 MOV B,#2 ; DIV AB ;除以2 SAVE: INC DPTR ; MOVX @DPTR,A ;3001H存:平方低位、商、取反 INC DPTR ; MOV A,B ; MOVX @DPTR,A ;3002H存:平方高位、余数 END 任务二: File name: text2.asm Description: 电子时钟 Source used: P0:显示小时、P1:显示分钟、P2:显示秒钟 R4、R5、R3:存放循环次数 ORG 0000H LJMP MAIN ORG 0200H MAIN: MOV P0,#23H ;时钟初始值 MOV P1,#58H ;分钟初始值 MOV P2,#30H ;秒钟初始值 JISHU: JB P3.0,JISHU ;P3.0引脚低电平开始计时 ACALL DLY ;进入延时1s子程序 MOV A,P2 ADD A,

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档