- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
精品文档
精品文档
i
i欢迎下载
精品文档
精品文档
i
i欢迎下载
实验二“流水灯”
一、 实验目的:
初步了解汇编语言
通过实验了解单片机最小系统
了解单片机的I/O 口通信。
学习延时子程序的编写和使用
二、 实验内容:
1.流水灯(跑马灯)
200mf
单片机控制着8支发光 二极菅,毎一时刻只有 一支发光二极管点亮, 如图示,延时200ms后 熄灭而与之相邻的发光 二极管点亮。直到点亮 最后一个发光二极管后 ?又以相反的方向依次点
亮发光二极管,
KT
VW
创曲
RKAU: Him
和4】
?4*M)
两Ml
riKW!
?ie
毎MAI前
*14
nrcAijg
WER
小QI
ALeFESS
OHI
?M(凹
图4-50国片m祸讣支发光二锹■利蛊朮灯竝赂
从单片机垠简系统岀 发,给I/O 口添加8支 发光二极管,得系统 电路如图示。当然, 除了使用P2 口外还可 以使用P0、P1 P3完 成这个实例口
精品文档
精品文档
PAGE
PAGE #欢迎下载
精品文档
精品文档
PAGE
PAGE # 欢。迎下载
精品文档
精品文档
0000000
0
0
0
0
0
0
0
流水表
步骤
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
十六进制
1
0
1
1
1
1
1
1
1
7FH
2
1
0
1
1
1
1
1
1
0BFH
3
1
1
0
1
1
1
1
1
0DFH
4
1
1
1
0
1
1
1
1
0EFH
5
1
1
1
1
0
1
1
1
0F7H
6
1
1
1
1
1
0
1
1
0FBH
7
1
1
1
1
1
1
0
1
0FDH
8
1
1
1
1
1
1
1
0
0FFH
⑴
MOV P1, #7FH
ACALL DELAY
MOV P1, #0BFH
ACALL DELAY
MOV P1, #0DFH
ACALL DELAY
MOV P1, #0FDH
ACALL DELAY
MOV P1, #0FFH
ACALL DELAY
不科学⑵0
不科学
⑵
0
LOCrt:-ravRRC□JNZ
LOCrt
:-rav
RRC
□JNZ
;进位标志位c在XAOffi a中从左⑹右轮
;R1M Lt 如果 R1*O 5?J8M3 LOOP*
堰個O1
?
1
1
-,
1 ,
1
1
1
V VV- VV1 V1 V
指令
指令类别
功能说明
ORG
伪指令
用于设计程序计数器 PC的初始值,一般出现在程序开始处
MAIN
号 标
程序中使用一个便于理解的字符串来指向程序存储器中的地 址
MOV P0,#00H
数据装载
将立即数00H装载到P0寄存器,即从P0 口输出
CALL DELAY
调用指令
调用程序存储器范围内的子程序
JMP START
跳转指令
控制程序的走向和实现循环执行特定程序段
RRC
逻辑操作指令
经过进位位的累加器循环右移
RLC
逻辑操作指令
经过进位位的累加器循环左移
DJNZ R5,$
循环指令
将一段程序重复执行一定次数(R5的值决定了重复的次数)。 寄存器减一,不为零则转移。
RET
返回指令
在子程序末尾,提示子程序结束,返回主程序
END
伪指令
告诉汇编器程序的结束点, END以后的程序被视为是无效的
ORG 00H
; 起始地址
START: ;
程序一开始,初始一些所需要变量,如进位 C的清0等
MOV A, #0FFH ;
累加器A的8位全置1( 0FFH,发光二极管全熄灭
CLR C
;进位C被清0,C=0
MOV R1, #8
冋=8 ,循环8次(右移8次),用R1作计数器
RIGHT: ;
这是发光二极管向右“流动” 的循环体
RRC A
;把进位C在累加器A中从左向右 轮换一位
MOV P1, A
;输出至P1 口
ACALL DELAY
; 调延时子程序,延时 200ms
DJNZ R1, RIGHT
;R1减1,如果不为0跳回RIGHT循环执行
JMP START
; 跳回一开始,重复执行该流水灯程序
DELAY:
; 延时 200ms 的子程序
MOV
R3, #20
D1:
MOV
R4, #20
D2:
MOV
R5, #248
;2+248 X 2=498=498 卩 s
DJNZ
R5, $
;R5 减 1,如果不为 0,就执行本行
DJNZ
R4, D2
;2+20X( 498+2) =10002 卩 s~ 10ms
DJNZ
R3, D1
RET
; 子程序结束标志,返回主程序
END
; 程序结束点
(3)取表法
要显示的数据之间不存在简单的运算关系,不能使用 ADD和SUBB等指令根 据上一状态计算出下一状态的显示值。 但显示的数据存在依次取用的特点, 这
文档评论(0)