微机实验报告实验二汇总
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验名称实验二分支与循环程序设计实验_________________________ 指导教师_______________________
专业班级___________ 姓名____________ 学号__________
联系电话_____________
一、任务要求
1.设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM 单元,请按要求编写程序。
|X2 Y = 当20cX <40 X 当X乞20 2.利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别 通过PO、P1、P2端口输出(以压缩BCD码的形式)。P3.0为低电平时开始计时,为高电平时停止计时。设计1s延时子程序(延时误差小于10us,晶振频率12MHZ。 提高部分(选做): a. 实现4位十进制加、减1计数,千位、百位由P1 口输出;十位、个位由P2 口输出。利用 P3.7状态选择加、减计数方式。 b.利用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和P2进行清零后,开始分钟计数部分。同理,每次分钟计数完之后用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全为低电平则开始计数,否则停止计数。P3.7为选择加一 或减一的计数方式的控制位,P3.7为0时加1计数,P3.7为1时减1计数;R3, R4, R5为 计数中的延时程序指定循环次数。 三、资源分配 1.任务一: 2000H: 输入的自变量 2001H :若XW 20,则为取反结果 若20vXV 40,则为X除以二的整数部分 若X>40,则为平方后的低八位 2002H :若20VXV 40,则为X除以二的余数部分 若X>40,则为平方后的高八位 DPTR :数据指针 2.任务二: R0 、R1、R2:秒、分、时进位计数器 B:秒钟计数 R3:分钟计数 R4:时钟计数 P0:时钟输出 P1 :分钟输出 P2:秒钟输出 P3:电子钟开关控制 3.力口、减1计数程序: P1:十进制数的千位数和百位数 P2:十进制数的十位数和个位数 P3.0-P3.3 :是否进行计数的4个控制位 P3.7 :选择加一或减一的计数方式的控制位 R3, R4, R5:计数中的延时程序指定循环次数。 四、流程图 1.任务一: ED N Y A=20? N C\=0? A=40? N CY=O? Y u DPTR—A A取反 INC DPTR a I)PTR~A INC DPTR a DP I R^B CED 2.任务二: ORG 0000H 五、源代码 1. 任务一: File n ame: l.asm Descriptio n: 多分支程序设计 Date: 2014/10/8 Desig ned by: LXQ Source used: 2000H: 输入的自变量 2001H :若X 20,则为取反结果 若20 V XV 40,则为X 除以二的整数部分 若X > 40,则为平方后的低八位 2002H :若20V XV 40,则为X 除以二的余数部分 若X > 40,则为平方后的高八位 DPTR : 数据指针 LJMP MAIN ORG 0100H MAIN: MOV A,#25 MOV B,#00H MOV DPTR,#2000H MOVX @DPTR,A JNB ACC.7,COMP1 SJMP LOOP1 COMP1: CJNE A,#20,COMP2 SJMP LOOP1 COMP2: JC LOOP1 CJNE A,#4O,COMP3 SJMP LOOP3 COMP3: JC LOOP2 SJMP LOOP3 LOOP1: CPL A SJMP STORE LOOP2: MOV B,#02H DIV 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 SJMP $ 高位和低位依次存入片外 原地踏步 RAM