查表程序设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机教学做合一
查表程序设计
主要内容:
1、DB和DW建表伪指令
2、MOVC查表指令 3、查表程序
单片机教学做合一
一、查表程序简介 查表程序是一种常用的程序结构, 广泛用于显示、打印、数据转换等功 能。可以简化程序、提高程序运行速 度。
单片机教学做合一
一、查表程序简介
查 表 程 序 建表:将若干常数存放在程序 存储器中。 查表:通过查表指令,将表格中 的数据取出来进行使用。
DB
00H , 01H , 03H , 07H , 0FH , 0F0H ;
END ; 结束
源程序:
单片机教学做合一
;开始 ;(DPTR)=TAB ;(A)=00H ; (R7)=6
ORG 0000H MOV MOV MOV
DPTR ,#TAB A , #00H R7,#6
LOOP: MOVC A , @A+DPTR ;(A)=((A)+(DPTR)),查表取数
单片机教学做合一
2、DW伪指令
例如:
ORG 0000H ;程序开始 … ;程序指令 ORG 0200H ;表格开始地址 DW 0000H,0200H,0300H,0400H ;表格 END ;结束
单片机教学做合一
三、MOVC查表指令
指令格式:
MOVC A , @A+DPTR
指令功能:设定A和DPTR的数据
@A+DPTR表示程序存储器单元地址
MOVC指令将地址单元的数据取出存
入累加器A中。
四、查表编程举例
开始
单片机教学做合一
查表初始化
查表取数 指向表格下个数据
表中数据
N
取完?
Y 结束
源程序:
ORG 0000H MOV MOV MOV ;开始
单片机教学做合一
DPTR ,#0100H ;(DPTR)=0100H A , #00H R7,#6 ;(A)=00H ; (R7)=6
处理2
处理3
开始
单片机教学做合一
2)分支程序结构 开始
根据条件判断,决定程序 执行的方向。
处理1 N 判断1 Y
处理2
处理3
结束
单片机教学做合一
3)循环程序结构
开始
设定循环次数
初始化
循环处理
处理
循环次数
次数?
结束
单片机教学做合一
本节总结
1、理解数据表格的建立和使用
2、熟悉指令MOVC
A ,@A+DPTR
;TAB标号指示表格起始地址,表格数据为“0” – “9”的段码 TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END ;结束
六、单片机程序设计
1、程序设计基本步骤 分析题目 确定解题思路
单片机教学做合一
绘制程序流程图
编写程序
调试修改
程序整理
ORG 0100H;ORG;伪指令指定表格存放的起始地 址。
DB 00H , 01H, 02H ; 从起始地址开始,表格数 DB 03H , 04H, 05H ; 据顺序存放。 END ;结束
单片机教学做合一
例如: ORG 0000H … … ; ;TAB是表格起始标号。 ;每个数据是8位二进 ;结束 ; 程序开始 ; 程序指令略
单片机教学做合一
二、DB和DW建表伪指令
1、DB伪指令
指令格式:DB 数据1,数据2, 数据3, …
指令功能:在单片机程序存储器中, 从指定存储地址开始,占用连续的存储单 元存放数据,建立数据表格。
注意:表格中的每个数据为8位二 进制数。
单片机教学做合一
例如:
ORG 0000H

; 程序开始
;程序指令略
TAB: DB 00H , 01H, 02H DB 03H , 04H ,05H 制数 END
单片机教学做合一
2、DW伪指令
指令格式: DW 数据1,数据2,数据 3, … 指令功能:在单片机程序存储器中,从 指定地址开始,占用连续的存储单元存放 数据,建立表格。 注意: 表格中的每个数据是16位二 进制数。
单片机教学做合一
单片机教学做合一
开始 查表初始化 查表取数显示 延时 延时 设置R7值 设置R6值 N R6-1=0? 表中数据 取完? Y 跳转循环 结束 N Y N
指向表格下个数据
R7-1=0?
Y 返回
ORG 0000H ; 开始 单片机教学做合一 START: MOV DPTR,#TAB ; (DPTR)=TAB,表格起始地址 CLR A ; (A)=00H MOV R1 , #10 ; (R1)=10,10个数显示 LOOP: MOVC A , @A+DPTR ; 查表,取数存入累加器A中 MOV P0 , A ; (P0)=A,输出显示 ACALL DELAY ; 调用延时 CLR A ; (A)=00H INC DPTR ; (DPTR)=(DPTR)+1,指向下一个数 DJNZ R1 , LOOP ; 控制查表次数 AJMP START ; 从头开始 DELAY: MOV R7 , #255 DE1: MOV R6 , #255 DE2: DJNZ R6 , DE2 DJNZ R7 , DE1 RET ; 延时子程序
单片机教学做合一
2、程序流程图绘制
端点符号:表示程序的开始和结束
处理符号:表示处理操作
判断符号:表示条件判断
方向符号:表示程序执行方向
单片机教学做合一
例如: 开始
处理1 N 判断1 Y
处wenku.baidu.com2
处理3
结束
单片机教学做合一
3、程序基本结构 1)顺序程序结构
开始
程序顺序向下执行,最 简单程序结构。
处理1
INC DPTR
CLR A DJNZ R7 , LOOP
;(DPTR)=(DPTR)+1
;(A)=00H ;(R7)=(R7)-1,不为零跳转
SJMP $
TAB: DB END
; 跳转本身
00H , 01H , 03H , 07H , 0FH , 0F0H ; ; 结束
五、数码管编程举例
单片机P0端口引脚外接一个共阳极数码管。 编程控制LED数码管循环显示0-9。
LOOP: MOVC A , @A+DPTR ;(A)=((A)+(DPTR)),查表取数 INC DPTR CLR A ;(DPTR)=(DPTR)+1 ;(A)=00H
DJNZ
R7 , LOOP
;(R7)=(R7)-1,不为零跳转
; 跳转本身 ; 指定表格开始地址
SJMP $ ORG 0100H
相关文档
最新文档