实验--流水灯--程序_第1页
实验--流水灯--程序_第2页
实验--流水灯--程序_第3页
实验--流水灯--程序_第4页
实验--流水灯--程序_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验二 流水灯 一 实验目的 1 初步了解汇编语言 2 通过实验了解单片机最小系统 3 了解单片机的 I O 口通信 4 学习延时子程序的编写和使用 二 实验内容 1 流水灯 跑马灯 流水表 步骤P1 0 P1 1P1 2P1 3P1 4P1 5P1 6P1 7 十六进制 1 01111111 7FH 2 10111111 0BFH 3 11011111 0DFH 4 11101111 0EFH 5 11110111 0F7H 6 11111011 0FBH 7 11111101 0FDH 8 11111110 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 的表 MOVDPTR TABLE 数据指针寄存器 DPTR 指向表 TABLE 头 LOADTABLE 取表程序段 表中的数据载入累加器 ACC 中 并判断是否已经完 成 CLRA 累加器 ACC 清零 MOVCA A DPTR 基址加变址寻址 将表中数据载入 ACC CJNEA 88H DISPLAY CJNE A data rel 比比较较立立即即数数和和 A不不相相等等则则转转 移移 如果取到 88H 说明表已经取完 否则显示 JMPSTART 如果取完 跳回 START 重新开始 DISPLAY 显示程序段 累加器 ACC 的数据输出到 P1 MOVP1 A 将 ACC 的数据输出到 P1 口 ACALLDELAY 调延时子程序 INCDPTR DPTR 加 1 准备取表中的下一个数据 JMPLOADTABLE 跳回取表程序段 DELAY 延时 200ms 的子程序 MOV R3 20 D1 MOV R4 20 D2 MOV R5 248 DJNZ R5 R5 减 1 如果不为 0 就执行本行 DJNZ R4 D2 DJNZ R3 D1 RET 子程序结束标志 返回主程序 TABLE DB07FH 0BFH 0DFH 0EFH 右移 DB0F7H 0FBH 0FDH 0FEH DB88H 结束码 END 程序结束点 取表法的优点是预先存放所需数据 在程序需要时调用 这样一来 程序简 洁 易于调试 三 实验报告 1 分别用两种方法编程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论