微机实验报告实验二汇总

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档