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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

单片机报告分支与循环程序设计实验.docx

1、单片机报告分支与循环程序设计实验一、任务要求 实验目的:熟练掌握Keil环境下汇编语言程序的调试方法,加深对汇编语言指令、机器码、寻址方式等基本内容的理解,掌握分支程序和简单程序的设计与调试方法,了解并行IO口的使用。 实验内容: 1. 设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写程序。2. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。P3.0为低电平时开始计时,为高电平时停止计时。设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。提高部分(

2、选做):a. 实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。利用P3.7状态选择加、减计数方式。b. 利用P3口低四位状态控制开始和停止计数,控制方式自定。二、设计思路实验一: X存于片外RAM 0070H单元,先对X的正负进行判断。若为负数,则取反;若为正 数,则用CJNE语句判断其与14H、28H的大小,若小于14H,取反;若小于28H,大于 14H,则除2,;若大于28H,则平方。若大于28H,其结果低四位存在片外RAM 0071H 单元,高四位存在 0072H单元;若小于28H,大于14H,其结果的商存于片外RAM 0071 单元,余数存在0072单元;若

3、小于14H,其结果存于片外RAM 0071单元,片外RAM 0072 单元置零。实验二: 先判断P3.0口的电平高低。若为低电平,则开始计时;若为低电平,则停止计时。 设计一延时1s的程序,每满1s,秒数值加一,每满60s,分数值加一,每满60min, 时数值加一。时数值满24时,重新计数。电子时钟的时、分、秒数值分别通过P0、P1、 P2端口输出(以压缩BCD码的形式)。实验三(提高部分): 此处使P3口低四位全为一时开始计数。先判断P3.7的状态,此处使若P3.7为0 时进行加计数,先C清零,用ADD对P2加一,再用ADDC对P1加进位位,再用DA A对A进行BCD码修正;若P3.7为1时

4、进行减计数,减计数后,再对P0、P1位进行BCD 码修正。特别是当P2为00H时,将P2赋值99H,再将P1减一,而当P1为00H时,将 P1赋值99H即可。三、资源分配实验一: 数据X存于片外RAM 0700单元; 对X分类:若大于28H,其结果低四位存在片外RAM 0071H单元,高四位存在 0072H 单元;若小于28H,大于14H,其结果的商存于片外RAM 0071单元,余数存在0072单元;若小于14H,其结果存于片外RAM 0071单元,片外RAM 0072单元置零。实验二: 时钟时分秒分别存放于P1、P1、P3口,P0口是控制位。 寄存器R1、R2、R3存放1s延时程序的循环次数

5、。 累加器A作为要输出端口的数据缓存。实验三: P3作为控制位,P3.7控制加、减计数,后四位控制是否开始。 P1口显示千、百位,P2口显示十、个位。四、流程图 实验一:实验二:实验三(提高实验): 五、源代码 (含文件头说明、语句行注释)实验一: File name: 实验一 Description: 8bits符号数X存于片外0700H,当X=40时,取平方,高位存于片外 RAM 0701H,低位存于片外0702中;当20X40时,X除二,结果的商存于片外RAM 0701H 中单元,余数存在0702H单元中;当X=20时,对X取反,结果存于片外RAM 0701H 中,0702H单元清零。

6、Date: 2014.10.18 Designed by: 曹紫葳 Source used: 0700H:片外RAM存储的数X 0701H:平方结果的平方的低八位,除2结果的商,取反结果; 0702H:平方结果的高八位,除2结果的余数。 ORG 0000H AJMP MAIN ORG 0100HMAIN: CLR A ;累加器A清零 CLR C ;进位位清零 MOV DPTR,#0700H ;将X的值赋值给片外RAM 0700单元 MOVX A,DPTR JB ACC.7,STEP1 CJNE A,#14H,ON1 ;判断X与20的大小关系STEP1: CPL A ;若X小于20,取反 MOV

7、 B,#0H AJMP DONEON1: JC STEP1 CJNE A,#28H,ON2 ;判断X与40的大小关系STEP2: MOV B,A MUL AB ;若A大于40,取A的平方 AJMP DONEON2: JNC STEP2 MOV B,#2 DIV AB ;若A小于40大于20,取A的一半DONE: INC DPTR MOVX DPTR,A INC DPTR MOV A,B ;将结果的低八位赋值给片外RAM 0701单元 MOVX DPTR,A ;将结果的高八位赋值给片外RAM 0702单元 SJMP $ END实验二: File name: 实验二 Description: 24

8、小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。P3.0为低电平时开始计时,为高电平时停止计时。 Date: 2014.10.18 Designed by: 曹紫葳 Source used: P3.7为0时开始计数,为1时停止 P2显示秒,P1显示分,P0显示时 R3、R4、R5:进行延时装载循环次数 ORG 0000H AJMP MAIN ORG 0100HMAIN: MOV P0,#00H ;全体清零 MOV P1,#00H MOV P2,#00H MOV P3,#00H MOV R0,#00H MOV R1,#00H MOV R2,#00

9、H MOV R3,#00HLOOP: JB P3.0,LOOP ;通过判断P3.0判断是否开始运行时钟SEC: MOV A,R2 MOV P2,A LCALL DELAY ;1s延时 ADD A,#01H DA A MOV P2,A MOV R2,A ;输出秒数到P2 CJNE A,#60H,LOOP ;每60s进1minMIN: MOV P2,#00H MOV R2,#00H MOV A,R1 MOV P1,A ADD A,#01H DA A MOV P1,A MOV R1,A ;输出分钟数到P1 CJNE A,#60H,LOOP ;每60min进1hHOUR: MOV R1,#00H MO

10、V P1,#00H MOV A,R0 ADD A,#01H DA A MOV P0,A ;输出小时数到P0 MOV R0,A CJNE A,#24H,LOOP ;每24h重新启动时钟程序 LJMP MAINDELAY: MOV R3,#90 ;1s延时程序DELAY1: MOV R4,#18DELAY2: MOV R5,#153DELAY3: NOP NOP DJNZ R5,DELAY3 NOP NOP DJNZ R4,DELAY2 NOP NOP DJNZ R3,DELAY1 NOP NOP NOP NOP NOP RET END 实验三(提高部分): File name: 实验一 Desc

11、ription: 实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位 由P2口输出。利用P3.7状态选择加、减计数方式。当P3.7为0时,执行加计数;当 P3.7为1时,执行减计数。利用P3口低四位状态控制开始和停止计数,当P3口低四 位全为1时开始计数。 Date: 2014.10.18 Designed by: 曹紫葳 Source used: P3.7为0时加计数,为1时减计数 P3的底四位全为1时开始计数 P1口输出千位、百位 P2口输出十位、个位 累加器A、工作寄存器R0用于数据储存缓冲单元 ORG 0000H AJMP MAIN ORG 0100HMAIN: MOV P

12、1,#00H MOV P2,#00H MOV P3,#00001111BLOOP: MOV A,P3 ORL A,#11110000B CJNE A,#11111111B,LOOP ;P3低四位为全0时开始计数 JB P3.7,DECX ;P3.7为0时加计数,为1时减计数ADDX: CLR C ;加计数 MOV A,P2 ADD A,#1H DA A MOV P2,A MOV A,P1 ADDC A,#0H DA A ;加计数十进制修正 MOV P1,A AJMP LOOPDECX: MOV A,P2 ;减计数 CJNE A,#0H,DECX1 MOV P2,#99H MOV A,P1 CJ

13、NE A,#0H,DECX2 ;当P1为0时,给其赋值99,再将 P1减一 MOV P1,#99H AJMP LOOPDECX1: CLR C ;减计数十进制修正 MOV A,#9AH SUBB A,#1H MOV R0,A MOV A,P2 ADD A,R0 DA A ;减计数十进制修正 MOV P2,A AJMP LOOPDECX2: CLR C MOV A,#9AH SUBB A,#1H MOV R0,A MOV A,P1 ADD A,R0 DA A ;减计数十进制修正 MOV P1,A AJMP LOOP END六、程序测试方法与结果实验一: 结果如上图。 人为输入令X(即0700H单

14、元)为0C。已知0C小于14H,故0C取反为F3,存入0701H单元,且0702H单元清零;且DPTR中存储0702H这个数。对照上图结果,验证是对的。 继续验证: 令X为17H。已知17H小于28H,大于14H,故结果应为除2,商为0B,余数为01。运行结果如下: 令X为46H。已知46H大于28H,故结果为平方,低四位为24H,高四位为13H。运行结果如下: 令X分别为14H、28H这两个分界值。由函数关系可知,当X为14H时,结果取反,0701H应为EB,0702H应为0;当X为28H时,结果平方,0701H应为40,0702H应为06。实际运行结果如下: X=14H X=28H 对比发现验证结果均是正确。实验二:先将P3口初值赋值00H,使时钟程序能正常启动。在时钟程序正在运行时截图如下:此时显示时间是3分45秒,即225秒

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

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