- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验二 “流水灯”
一、实验目的:
1.初步了解汇编语言
2.通过实验了解单片机最小系统
3.了解单片机的I/O口通信。
4.学习延时子程序的编写和使用.
二、实验内容:
1. 流水灯(跑马灯)
流水表
步骤
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
(1)
……
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
……
不科学
(2)
指令
指令类别
功能说明
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 ;R1=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×2=498=498μs
DJNZ R5, $ ;R5减1,如果不为0,就执行本行
DJNZ R4, D2 ;2+20×(498+2)=10002μs≈10ms
DJNZ R3, D1
RET ;子程序结束标志,返回主程序
END ;程序结束点
(3)取表法
要显示的数据之间不存在简单的运算关系,不能使用ADD和SUBB等指令根据上一状态计算出下一状态的显示值。但显示的数据存在依次取用的特点,这时一般就会用到取表的方法。
取表法是单片机程序中很常用的一种编程思想。在汇编程序末尾附加一个数据表,这个数据表可以是可以是字节型,也可是英文字母等数据。数据表与汇编程序一起可以被汇编,之后数据表就成为数据的一部分包含在生成的.HEX文件中。通过下载之后,数据表和程序代码就固化在单片机的程序存储器中。
ORG 00H
START: ;装表,即DPTR指向表TABLE的表
MOV DPTR,#TABLE ;数据指针寄存器DPTR指向表TABLE头
LOADTABLE: ;取表程序段,表中的数据载入累加器ACC中,并判断是否已经完成
CLR A ;累加器ACC清零
MOVC A,@A+DPTR ;基址加变址寻址,将表中数据载入ACC
CJNE A,#88H,DISPLAY ;
文档评论(0)