- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
分支程序设计实验 - 单片机第二次试验
———————————————————————————————— 作者 :
———————————————————————————————— 日期:
一、任务要求
1. 设有8 bits
符号数 X 存于外部 RAM单元,按以下方式计算后的结果
Y 也存于外部
RAM单元,请按要求编写程序。
X 2
当 X
40
YX/2
当20 X
40
X
当 X
20
. 利用 51 系列单片机设计一个 24 小时制电子时钟 , 电子时钟的时、分、秒数值分别通过 P0、P1、 P2 端口输出(以压缩B CD码的形式 ) 。 P3.0为低电平时开始计时,为高电平时停止计时。
提高部分(选做) :
. 实现 4 位十进制加、 减 1 计数,千位、百位由 P1 口输出; 十位、 个位由 P2 口输出。利用 P3.7 状态选择加、减计数方式。
b. 利用P 3 口低四位状态控制开始和停止计数,控制方式自定。 ?
二、设计思路 ? 1. 将 8bits 符号数从外部 RA M单元取出至 A 中,符号位为 1
的时候为负数 , 进行取反运算;当符号位为 0 的时候为正数,因此将 A 与 20 进行比较 , 当 A
≤20 时跳至取反运算那一步 ; 当 A20 时将 A 与 40 进行比较,如果当A≥ 40时则对其进行
平方运算那一步 , 当 A40 时则进行除法运算那一步。 每次算完之后直接储存, 最后再分配储
存于外部 RA M单元的指定位置。
2. 清零 R0~ R2 和 P0~ P2, 开始先判断控制位 P3.0 是不是 0,当 P3.0 =1 时原地踏
步重复判断 , 当P 3. 0= 0 时开始运行程序。 计时开始, 进行秒钟R 0 计数,每次计数完成用
BCD码子程序转换,然后判断计数后 R0值是否到60,若R0的值不足 60,就直接输出给
2,若 R0 的值为 60, 就把 R0 和P 2 进行清零后 , 开始分钟计数部分。同理,每次分钟计数
完之后用 BCD码子程序转换,然后判断计数后R1 的值是否为6 0,若不为 60,就直接输出
给 P1, 若 R1 的值为 60, 就把R 1 和P 1 清零后开始时钟计数部分。时钟计数完后同样用 BCD
码子程序转换 , 然后判断计数后的 R2 的值是否为 24, 若不为2 4, 就直接输出给P 0,若 R2为 24, 就把R 2 和 P0 清零后直接跳出计数部分 , 从判断P 3. 0部分再开始 . 每两次计数输出之间穿插一个 1s 的延时程序。就可以达到时钟的功能。
三、资源分配
分支程序 :
数据指针 D PTR: 对片外 RAM进行读写操作
2000H: 存放 8bit s符号数 X
201 0H: 存放结果 Y(取反后的数 , 或者平方后的高 8 位,或者除法后
的商)
2011H: 存放结果Y ( 平方后的低 8 位 , 或者除法后的余数)
2. 时钟程序:
R0 、R1、 R2: 分别进行秒钟 , 分钟,时钟的计数
P2 、 P1、 P0: 分别输出秒钟 , 分钟,时钟
P3.0: 是否计数的控制位
3、 R4、 R5: 为 1s 延时程序指定循环次数 B : BCD码转换子程序的操作数
四、流程图 1? .分支程序流程图 :
时钟程序的流程图:
五、源代码 ( 含文件头说明、语句行注释)
分支程序代码如下 :
O RG 0000H
SJMPSTA R T?
STA
RT:
MOV
DP
T R, #20
0 0H
?
M O V
A, #
3 1
?? MOVX
? MOV
@DPTR, A ;
B, 0 ;
M OVX A,@ DPTR?
JNB ACC . 7, C OMP1
存数
寄存器B清零
; 从 R0中取出数 x
; 判断符号位 , 符号位为
0 时转到
COMP1
LP3:
C PL
A ?
?;
对 x 取反
SJMP
ST ORE
COMP1:
C JNE
A, #20, C
OMP2 ? ;
A≠ 20 时, 转到C OMP2
SJMP
LP3
? ;
A=20 时, 转到L P3取反
COMP2:
JC
L P 3
?
;C= 1, A20, 转到
LP3 取反
C JNE
A,
#4 0,C O MP3
;C=0, A20.当
A≠ 40
时,转到
COM P3
LP1:
MO V
B, A
?? ;A= 4 0 时,给B赋值为
A
MUL
AB?
?;计算
x 平方
SJMP
STORE
COM P3: J
文档评论(0)