实验--流水灯--程序.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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)

kfcel5889 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档