单片机第二次作业

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

附录1 实验报告格式要求

《微机实验》报告

实验名称 分支程序设计实验 专业班级

一、任务要求

1. 设有8bits 符号数X 存于外部RAM 单元,按以下方式计算后的结果Y 也

存于外部RAM 单元,请按要求编写程序。

240/2204020X X Y X X X

X ⎧≥⎪=<<⎨⎪≤⎩当当当

2. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、

秒数值分别通过P0、P1、P2端口输出(以压缩BCD 码的形式)。P3.0为低电平

时开始计时,为高电平时停止计时。

二、设计思路

1. 可知此实验要求根据不同的值进行不同的运算,因此需要使用分支程序。X

处于不同的范围,有不同的运算,可知应该先判断其与20的大小,再判断其与

40的大小。于是需要用到CJNE 指令以及JNC 判断C 指令 。并由此进行不同的

运算,即可完成程序目的。

2.制作一个1s 的延时,并将其循环60次,并将其存入P0,作为秒的计时。再

来一个外层循环,将其循环60次,并存入P1,作为分计时,最后再加一个外循

环,使其循环24次,并存入P2,作为时的计时。开始计时的控制可由JB 语句

来实现

三、资源分配

1.将30H 作为外部RAM 的地址,并将A 的结果存入该RAM 中。

2.将R3,R4,R5,R6,R7作为临时放置数据的中间量,将秒,分,时的结果存入P0,P1,

P2.

四、流程图

五、源代码(含文件头说明、资源使用说明、语句行注释)

1.File name: task2-1.asm

Description:

240

/22040

20

X X

Y X X

X X

⎧≥

=<<

Date: 10/15/2011

Designed by: 刘珍

Source used: R0,30H

ORG 1000H

MOV R0,30H

MOVX A,@R0

CJNE A,#20,STEP1 ;X≠20,转STEP1

L1: CPL A ;X=20,计算/X

SJMP DONE

STEP1: JNC STEP2 ;C=0,X>20,转STEP2 SJMP L1 ;C=1,X<20,转L1

STEP2: CJNE A,#40,STEP3 ;X≠40,转STEP3

L2: CLR C ;X=40,计算X*X

ADDC A,@R0

SJMP DONE

STEP3: JNC L2 ;C=0,X>40,转L2

CLR C ;C=1,20

MOV B,#2H

DIV AB

DONE: MOVX @R0,A

SJMP $

END

2. File name: task2-2.asm

Description: 计时器,通过P0/P1/P2输出,通过P3.0控制。Date: 10/15/2011

Designed by: 刘珍

Source used: R3,R4,R5,R6,R7 临时放置数据的中间量

P0,P1,P2 存放秒,分,时

ORG 0000H

MOV P0,#0H

MOV P1,#0H

MOV P2,#0H

MOV R3,#60

MOV R4,#60

MOV R5,#24H

MOV R6,#0H

MOV R7,#0H

CLR C

MOV P3.0,C

JB P3.0,DONE

DELAY: MOV R2,#50 ;置循环次数

DELAY3: MOV R0,#20

DELAY2: MOV R1,#250

DELAY1: NOP

NOP

DJNZ R1,DELAY1 ;构架三重循环

DJNZ R0,DELAY2

DJNZ R2,DELAY3

INC A ;记录“秒”的次数AJMP BCD ;转化为BCD

CLR C

DA A

MOV P0,A ;通过P0输出秒

DJNZ R3,DELAY ;置秒循环60次

MOV R3,#60 ;恢复秒的循环次数

MOV A,R7

INC A ;记录分的循环次数AJMP BCD ;转化为BCD

CLR C

DA A

MOV R7,A ;保存分的循环次数MOV P1,#0FFH ;读数的预操作

MOV P1,A ;输出分

MOV P0,#0H ;清零,保证下一轮循环

CLR A

DJNZ R4,DELAY ;置分循环60次

MOV R4,#60

MOV R7,#0H

MOV A,R6

AJMP BCD ;转化为BCD

INC A ;记录分的循环次数

CLR C

DA A

AJMP BCD ;转化为BCD

MOV R6,A ;保存分的循环次数

MOV P2,#0FFH

MOV P2,A

MOV P0,#0H

MOV P1,#0FFH

MOV P1,#0H

CLR A ;清零,保证下一轮循环

DJNZ R5,DELAY ;置时循环24次DONE: SJMP $

END

六、程序测试方法与结果、软件性能分析

实验一:赋值1,所得到的结果

实验二:

相关文档
最新文档