




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机实验报告 一、任务要求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. 将8bits符号数从外部RAM单元取出至A中,符号位为1的时候为负数,进行取反运算;当符号位为0的时候为正数,因此将A与20进行比较,当A20时跳至取反运算那一步;当A20时将A与40进行比较,如果当A40时则对其进行平方运算那一步,当A40时则进行除法运算那一步。每次算完之后直接储存,最后再分配储存于外部RAM单元的指定位置。 2. 清零R0R2和P0P2,开始先判断控制位P3.0是不是0,当P3.0=1时原地踏步重复判断,当P3.0=0时开始运行程序。计时开始,进行秒钟R0计数,每次计数完成用BCD码子程序转换,然后判断计数后R0值是否到60,若R0的值不足60,就直接输出给P2,若R0的值为60,就把R0和P2进行清零后,开始分钟计数部分。同理,每次分钟计数完之后用BCD码子程序转换,然后判断计数后R1的值是否为60,若不为60,就直接输出给P1,若R1的值为60,就把R1和P1清零后开始时钟计数部分。时钟计数完后同样用BCD码子程序转换,然后判断计数后的R2的值是否为24,若不为24,就直接输出给P0,若R2为24,就把R2和P0清零后直接跳出计数部分,从判断P3.0部分再开始.每两次计数输出之间穿插一个1s的延时程序。就可以达到时钟的功能。 三、资源分配 1.分支程序: 数据指针 DPTR:对片外RAM进行读写操作 2000H:存放8bits符号数X 2010H:存放结果Y(取反后的数,或者平方后的高8位,或者除法后的商) 2011H:存放结果Y(平方后的低8位,或者除法后的余数) 2.时钟程序: R0、R1、R2:分别进行秒钟,分钟,时钟的计数 P2、P1、P0:分别输出秒钟,分钟,时钟 P3.0:是否计数的控制位 R3、R4、R5:为1s延时程序指定循环次数 B:BCD码转换子程序的操作数四、流程图 1.分支程序流程图: 2.时钟程序的流程图:五、源代码 (含文件头说明、语句行注释)1.分支程序代码如下: ORG 0000HSJMP START START: MOV DPTR, #2000H MOV A, #31 MOVX DPTR, A ; 存数 MOV B, 0 ; 寄存器B清零 MOVX A,DPTR ; 从R0中取出数x JNB ACC.7, COMP1; 判断符号位,符号位为0时转到COMP1 LP3: CPL A; 对x取反 SJMP STORE COMP1: CJNE A, #20, COMP2 ; A20时,转到COMP2 SJMP LP3; A=20时,转到LP3取反 COMP2: JC LP3;C=1,A20.当A40时,转到COMP3 LP1: MOV B,A;A=40时,给B赋值为A MUL AB;计算x平方 SJMP STORE COMP3: JNC LP1 ;C=0,A40,转到LP1计算x平方 MOV B,#02H;C=1,A40,赋值B=2 DIV AB;计算x除以2 STORE: MOV DPTR,#2010H MOVX DPTR,A ;存数: INC DPTR ;对于平方,高位在前地位在后 MOV A,B ;对于除法,商在前余数在后 MOVX DPTR,A SJMP $ END 2.时钟程序代码如下: ORG 0000H SJMP MAIN MAIN: MOV R0,#0 ;R0,R1,R2初始化 MOV R1,#0 MOV R2,#0 MOV P0,#0 ;P0,P1,P2置0 MOV P1,#0 MOV P2,#0 INPUT: JB P3.0,INPUT;延时程序 DELAY: MOV R3,#64H ;循环次数100 LOOP: MOV R4,#64H ;循环次数100 LOOP1: MOV R5,#31H;循环次数49 LOOP2: NOP NOP DJNZ R5,LOOP2 ;晶振频率设为23.8836Hz DJNZ R4,LOOP1;(4*49+3)*100+3*100=1990300乘以0.502437us DJNZ R3,LOOP ;差不多1s START: INC R0 ;秒钟计数 MOV A,R0 ACALL OUTPUT ;计算bcd码 CJNE R0,#60,X2 ;60进制判断进1 MOV R0,#0 ;进位之后清0 MOV P2,#0 ;输出清0 INC R1 ;分钟计数 MOV A,R1 ACALL OUTPUT ;计算bcd码 CJNE R1,#60,X1 ;60进制判断 MOV R1,#0 ;进位之后清0 MOV P1,#0 ;输出清0 INC R2 ;时钟计数 MOV A,R2 ACALL OUTPUT ;计算bcd码 CJNE R2,#24, X0 ;判断是不是溢出了 MOV R2,#0 ;溢出之后清0 MOV P0,#0 ;输出清0 SJMP INPUT ;跳出循环 X2:MOV P2, A ;输出 SJMP INPUT X1:MOV P1,A SJMP INPUT X0:MOV P0,A SJMP INPUT OUTPUT:MOV B,#0AH ;BCD码转换程序 DIV AB ;相除得到高位,低位 SWAP A ;得到高位 ORL A,B RET STEP:SJMP STEP END六、程序测试方法与结果实验一:第一次令A为10H,进行运算后得到的结果是EFH,即取反成功 第二次令A为20H,进行运算后得到的结果是10H,即除以2后的结果 第三次取A为50,进行运算后的结果为09C4H=2500,即平方后的结果 因此可以判断程序没有问题实验二:第一次不进行任何操作开始运行程序,程序没有反应 第二次将P3.0改为0后,程序开始运行 第三次将P3.0改为0后再运行程序,经过一段时间后停止,发现此时程序运行的时间为1分41秒,即101秒;而实际经过的时间为100.85897秒,两者误差很小,说明程序设计以及运行正常思考题1实现多分支结构程序的主要方法有哪些?举例说明。主要方法有:分支地址表 如:BRATAB: DW SUBRO DW SUBR1 DW SUBR2 转移地址表 如:JMPTAB: AJMP SUBR0 AJMP SUBR1 AJMP SUBR2 地址偏移量表 如:DISTAB: DB SUBRO-DISTAB DB SUBR1-DISTAB DB SUBR3-DISTAB 2. 在编程上,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江苏苏州2013-2021年中考满分作文90篇
- 部编版历史八年级上册第16课从九一八事变到西安事变训练题(含答案)
- 侵略与反抗教学课件
- 哺乳期乳腺炎护理查房记录
- 2025至2030中国脑乐静市场深度调查与发展趋势分析报告
- 2025至2030中国金融欺诈检测软件行业产业运行态势及投资规划深度研究报告
- 2025至2030中国烟酸酯行业发展分析及投资风险预警与发展策略报告
- 员工行为分析考核试卷
- 非遗传承人范军视频片段364课件
- 幼儿美术雨滴课件
- 地理学的犯罪心理画像
- 保险粉MSDS安全技术说明书
- 动物医学专业
- 个人借条电子版模板
- SIPp 使用手册中文版
- 单位无宿舍证明
- 糖皮质激素性骨质疏松症及其治疗
- GB/T 3036-1994船用中心型蝶阀
- GB/T 19867.5-2008电阻焊焊接工艺规程
- GB/T 1706-2006二氧化钛颜料
- 2023年安徽省国有金融资本投资管理有限公司招聘笔试题库及答案解析
评论
0/150
提交评论