微机实验报告实验二

上传人:夏** 文档编号:431792229 上传时间:2023-06-09 格式:DOC 页数:18 大小:299.50KB
返回 下载 相关 举报
微机实验报告实验二_第1页
第1页 / 共18页
微机实验报告实验二_第2页
第2页 / 共18页
微机实验报告实验二_第3页
第3页 / 共18页
微机实验报告实验二_第4页
第4页 / 共18页
微机实验报告实验二_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《微机实验报告实验二》由会员分享,可在线阅读,更多相关《微机实验报告实验二(18页珍藏版)》请在金锄头文库上搜索。

1、实验名称 实验二 分支与循环程序设计实验 指导教师 专业班级 姓名 学号 联系电话 一、 任务要求1. 设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写程序。 2. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。P3.0为低电平时开始计时,为高电平时停止计时。设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。提高部分(选做): a. 实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。利用P3.7状态选择加、减计数方式。b.

2、 利用P3口低四位状态控制开始和停止计数,控制方式自定。 二、设计思路1.任务一:先判断输入自变量的正负性。如果是负数则直接归到取反区间;如果是正数,则与20,40进行大小比较,即和20,40分别做减法,然后根据比较结果归到各个区间。2. 任务二:先设置好进位计数器数值,再将R3、R4和P0、P1、P2、P3清零。开始先判断控制位P3.0是否为0,当P3.0=1时原地踏步重复判断,当P3.0=0时开始计时。计时开始,进行秒钟B计数,计数后R0减一,每次计数完成用BCD码子程序转换,然后由P2输出秒钟,判断计数后R0值是否为0,若R0的值不为0,就跳转回秒钟继续计数,若R0的值为0,就把R0和P

3、2进行清零后,开始分钟计数部分。同理,每次分钟计数完之后用BCD码子程序转换,然后由P1输出分钟,判断计数后R1值是否为0,若R1的值不为0,就跳转回秒钟继续计数,若R1的值为0,就把R1和P1清零后开始时钟计数部分。时钟计数完后同样用BCD码子程序转换,然后判断计数后的R2的值是否为0,若不为0,就跳转回秒钟计数,若R2为0,就吧R2和P0清零后直接跳出计数部分,从判断P3.0部分再开始.每两次计数输出之间穿插一个1s的延时程序。就可以达到时钟的功能。3. 加、减1计数程序:将十进制数的千位数和百位数存于P1,将十进制数的十位数和个位数存放于P2,P3.0至P3.3全为低电平则开始计数,否则

4、停止计数。P3.7为选择加一或减一的计数方式的控制位,P3.7为0时加1计数,P3.7为1时减1计数;R3,R4,R5为计数中的延时程序指定循环次数。 三、资源分配1.任务一: 2000H: 输入的自变量 2001H:若X20,则为取反结果 若20X40,则为X除以二的整数部分 若X40,则为平方后的低八位 2002H:若20X40,则为X除以二的余数部分 若X40,则为平方后的高八位 DPTR:数据指针2. 任务二: R0、R1、R2:秒、分、时进位计数器B:秒钟计数R3:分钟计数R4:时钟计数P0:时钟输出P1:分钟输出P2:秒钟输出P3:电子钟开关控制 3.加、减1计数程序:P1:十进制

5、数的千位数和百位数P2:十进制数的十位数和个位数P3.0-P3.3:是否进行计数的4个控制位P3.7:选择加一或减一的计数方式的控制位R3,R4,R5:计数中的延时程序指定循环次数。 四、流程图 1.任务一:2. 任务二:3.加、减1计数程序:五、 源代码 1.任务一:File name: 1.asmDescription: 多分支程序设计Date: 2014/10/8Designed by: LXQSource used: 2000H: 输入的自变量 2001H:若X20,则为取反结果 若20X40,则为X除以二的整数部分 若X40,则为平方后的低八位 2002H:若20X40,则为X除以二

6、的余数部分 若X40,则为平方后的高八位 DPTR:数据指针 ORG 0000H LJMP MAIN ORG 0100HMAIN:MOV A,#25 ;输入自变量 MOV B,#00H ;B清零 MOV DPTR,#2000H ;设置数据指针MOVX DPTR,A ;存入片外RAMJNB ACC.7,COMP1 ;判断符号位SJMP LOOP1 ;负数则取反COMP1: CJNE A,#20,COMP2 ;A20H时跳转到COMP2SJMP LOOP1 ;A=20H时取反COMP2: JC LOOP1 ;CY=1时取反CJNE A,#40,COMP3 ;A40H时跳转到COMP3SJMP LO

7、OP3 ;A=40H时平方COMP3: JC LOOP2 ;CY=1时除以二 SJMP LOOP3 ;CY=0时平方LOOP1: CPL A ;取反操作 SJMP STORE ;跳转存储指令LOOP2: MOV B,#02HDIV AB ;除以二 SJMP STORE ;跳转存储指令LOOP3: MOV B,A MUL AB ;平方 SJMP STORE ;跳转存储指令STORE: INC DPTR ;设置数据指针 MOVX DPTR,A INC DPTR MOV A,B MOVX DPTR,A ;高位和低位依次存入片外RAM SJMP $ ;原地踏步END2.任务二: ORG 0000H L

8、JMP MAIN ORG 0100HMAIN: MOV R0,#60 MOV R1,#60 MOV R2,#24 ;时针、分针、秒针计数器赋初值 MOV R3,#0H MOV R4,#0H ;时钟、分钟赋初值 MOV P0,#0H MOV P1,#0H MOV P2,#0H MOV P3,#0HSTART: JB P3.0,STOP ;若P3.0为高电平则停止计时 ACALL DLY MOV A,B ADD A,#01H DA A MOV B,A ;秒钟计时 MOV P2,A ;输出秒钟 DJNZ R0,START ;R0-1,不等于零则跳到START继续循环 MOV B,#0H MOV P2

9、,#0H MOV A,R3 ADD A,#01H DA A MOV R3,A ;分钟计时 MOV P1,A ;输出分钟 MOV R0,#60 ;计数器归位 DJNZ R1,START ;R1-1,不等于零则跳到START继续循环 MOV B,#0H MOV R3,#0H MOV P1,#0H MOV A,R4 ADD A,#01H DA A MOV R4,A ;时钟计时 MOV P0,A ;输出时钟 MOV R1,#60 ;计数器归位 DJNZ R2,START ;R2-1,不等于零则跳到START继续循环 SJMP MAINSTOP: SJMP $ ;原地踏步DLY: MOV R5,#46

10、;延时1s,误差1us ;延时1s,误差1usDLY:DELAY: MOV 72H,#100LOOP3: MOV 71H,#100LOOP1: MOV 70H,#47LOOP0: DJNZ 70H,LOOP0 NOP DJNZ 71H,LOOP1 MOV 70H,#46LOOP2: DJNZ 70H,LOOP2 NOP DJNZ 72H,LOOP3 MOV 70H,#48LOOP4: DJNZ 70H,LOOP4RETEND 3.加、减1计数程序: ORG 0000H LJMP MAIN ORG 0100HMAIN:MOV P1,#00H ;P1端口置零MOV P2,#00H;P2端口置零MO

11、V P3,#7FH ;P3端口置#7FHSTART:JB P3.0,STARTJB P3.1,STARTJB P3.2,STARTJB P3.3,START;判断是否开始计时LJMP DELAY;跳转到延时子程序DELAY:MOV R7,#24DEL1: MOV R6,#61DEL2: MOV R5,#170DEL3: NOP NOP DJNZ R5,DEL3 DJNZ R6,DEL2 DJNZ R7,DEL1;延时1秒JB P3.7 ,DOWN;P3.7为0时,加1计数;P3.7为1时,减1计数LJMP UPDOWN:CLR C MOV A,P2SUBB A,#01HMOV R1,AANL A,#0FHMOV R7,AMOV A,R1ANL A,#0F0HMOV R1,AMOVA,P1SUBB A,#00HMOV R0,AANLA,#0FHMOV R6,AMOV A,R0ANL A,#0F0HMOV R0,ACJNE R7,#0FH,LOOP1MOV R7,#09HLOOP1:CJNE R1,#0F0H,LOOP2MOV R1,#90HLOOP2:CJNE R6,#0FH,LOOP3MOV R6,#09HLOOP3:CJNE R0,#0F0H,LOOP4MOV

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号