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

  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文档。上传文档
查看更多
精品文档 精品文档 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)

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

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

1亿VIP精品文档

相关文档