51单片机-查表指令

合集下载

51单片机-查表指令-课件

51单片机-查表指令-课件

三、举例
例1:将累加器A中的数(0~5),用查表的方法求 平方值。 MOV R0,#待查值 MOV DPTR,#TABLE MOV A,R0 MOVC A,@A+DPTR (显示程序段……) TABLE: DB 0,1,4,9,16,25
三、举例
讲解:①TABLE是数据表首地址的标号。 ②DB是一条伪指令,它的用途是将其 后面的数,即0~5的平方值0,1,4,9,16,25存放 在ROM中。 ③待查的数据保存在R0中,可根据需 要进行修改。
此条指令的含义是将累加器A中的值与寄存器DPTR中的值 相加,相加后的结果是程序存储器ROM中的某个存储单元 的地址。将这个地址中的数据传送到A中保存起来。
二、查表程序格式
在使用时,将DPTR赋值为欲查数据表的首地 址,累加器A赋值为要查的数据,即可实现查 表功能,查得的数据保存在A中。通用格式如 下: MOV DPTR,#TABLE MOVC A,@A+DPTR ……(其他程序段) TABLE:DB ……(数据库)
把控制码建成一个表,而利用MOVC A,@ A+DPTR做取码的操作,就可方便地处理一 些复杂的控制动作
三、举例 4、流程图
三、举例 5、程序段 查表指令控制流水灯.txt
三、举例 例2:基于单片机的简易计算器设计 基于单片机的简易计算器.doc
wenku.baidu.com

单片机的查表程序

单片机的查表程序

单片机的查表程序(共5页)

--本页仅作为文档封面,使用时请直接删除即可--

--内页可以根据需求调整合适字体及大小--

在单片机开发过程中.一些非线性的控制过程.最适合做一个表格来.时时改变系统的参数.达到控制的目的.最常的如产生正弦的的程.就是建一个大的数组时时改变输出的8位字节送给外部DA.由DA生成一个完整的正弦波.当然了.LED显示也是一个例子.通过建一个数组来实现段码的点亮点灭.下面就是一个LED表---digits[0]

#define SEG_a 0x01

#define SEG_b 0x02

#define SEG_c 0x04

#define SEG_d 0x08

#define SEG_e 0x10

#define SEG_f 0x20

#define SEG_g 0x40

#define SEG_dot 0x80

unsigned char digits[10] = {

(SEG_a|SEG_b|SEG_c|SEG_d|SEG_e|SEG_f), 过MCS-51指令系统中有专用的查表指令:MOVC A,@A+DP TR和MOV A,@A+PC.

MOVC A,@A+DPTR指令,DPTR作为基址寄存器时,其值为16位而且可根据需要设计,故可用于在64K ROM范围内查表。编写查表程序时,首先把表的首址送入DPTR中,再将要查找的数据序号(或下表值)送入A中,然后就可以使用该指令进行查表操作,并将结果送累加器A中。

MOVC A,@A+PC指令,PC作为基址寄存器时,其值由指令的位置确定,它只能设在查表指令操作码下的256个字节范围内。编写查表程序时,首先把查表数据的序号送入A中,再把从查表指令到表的首地址间的偏移量与A值相加,然后使用该指令进行查表操作,并把结果送累加器A中。

51单片机汇编指令速查表

51单片机汇编指令速查表

51单片机汇编指令速查表

指令格式功能简述字节数周期

一、数据传送类指令

MOV A, Rn 寄存器送累加器 1 1

MOV Rn,A 累加器送寄存器 1 1

MOV A ,@Ri 内部RAM单元送累加器 1 1

MOV @Ri ,A 累加器送内部RAM单元 1 1

MOV A ,#data 立即数送累加器 2 1

MOV A ,direct 直接寻址单元送累加器 2 1

MOV direct ,A 累加器送直接寻址单元 2 1

MOV Rn,#data 立即数送寄存器 2 1

MOV direct ,#data 立即数送直接寻址单元 3 2

MOV @Ri ,#data 立即数送内部RAM单元 2 1

MOV direct ,Rn 寄存器送直接寻址单元 2 2

MOV Rn ,direct 直接寻址单元送寄存器 2 2

MOV direct ,@Ri 内部RAM单元送直接寻址单元 2 2 MOV @Ri ,direct 直接寻址单元送内部RAM单元 2 2 MOV direct2,direct1 直接寻址单元送直接寻址单元 3 2 MOV DPTR ,#data16 16位立即数送数据指针 3 2

MOVX A ,@Ri 外部RAM单元送累加器(8位地址) 1 2 MOVX @Ri ,A 累加器送外部RAM单元(8位地址) 1 2 MOVX A ,@DPTR 外部RAM单元送累加器(16位地址) 1 2 MOVX @DPTR ,A 累加器送外部RAM单元(16位地址) 1 2 MOVC A ,@A+DPTR 查表数据送累加器(DPTR为基址) 1 2 MOVC A ,@A+PC 查表数据送累加器(PC为基址) 1 2 XCH A ,Rn 累加器与寄存器交换 1 1

51单片机符号

51单片机符号

ls的乱写

PC = progammer counter //程序计数器

ACC = accumulate //累加器

PSW = progammer status word //程序状态字

SP = stack point //堆栈指针

DPTR = data point register //数据指针寄存器

IP = interrupt priority //中断优先级

IE = interrupt enable // 中断使能

TMOD = timer mode //定时器方式(定时器/计数器控制寄存器)

ALE = alter (变更,可能是)

PSEN = progammer saving enable //程序存储器使能(选择外部程序存储器的意思) EA = enable all(允许所有中断)完整应该是enable all interrupt

PROG = progamme (程序)

SFR = special funtion register //特殊功能寄存器

TCON = timer control //定时器控制

PCON = power control //电源控制

MSB = most significant bit//最高有效位

LSB = last significant bit//最低有效位

CY = carry //进位(标志)

AC = assistant carry //辅助进位

OV = overflow //溢出

ORG = originally //起始来源

DB = define byte //字节定义

mcs51单片机指令集

mcs51单片机指令集

一个单片机所需执行指令的集合即为单片机的指令系统。单片机使用的机器语言、汇编语言及高级语言,但不管使用是何种语言,最终还是要“翻译”成为机器码,单片机才能执行之。现在有很多半导体厂商都推出了自己的单片机,单片机种类繁多,品种数不胜数,值得注意的是不同的单片机它们的指令系统不一定相同,或不完全相同。但不管是使用机器语言、汇编语言还是高级语言都是使用指令编写程序的。

所谓机器语言即指令的二进制编码,而汇编语言则是指令的表示符号。在指令的表达式上也不会直接使用二进制机器码,最常用的是十六进制的形式。但单片机并不能直接执行汇编语言和高级语言,都必须通过汇编器“翻译”成为二进制机器码方能执行,但如果直接使用二进制来编写程序,那将十分不便,也很难记忆和识别,不易编写、难于辨读,极易出错,同时出错了也相当难查找。所以现在基本上都不会直接使用机器语言来编写单片机的程序。最好的办法就是使用易于阅读和辨认的指令符号来代替机器码,我们常称这些符号为助记符,用助记符的形式表示的单片机指令就是汇编语言,为便于记忆和阅读,助记符号通常都使用易于理解的英文单词和拼音字母来表示。

每种单片机都有自己独特的指令系统,那么指令系统是开发和生产厂商定义的,如要使用其单片机,用户就必须理解和遵循这些指令标准,要掌握某种(类)单片机,指令系统的学习是必须的。

MCS-51共有111条指令,可分为5类:

[1].数据传送类指令(共29条)

[2].算数运算类指令(共24条)

[3].逻辑运算及移位类指令(共24条)

[4].控制转移类指令(共17条)

51单片机查表指令

51单片机查表指令

51单⽚机查表指令

51单⽚机查表指令

51单⽚机具有两条查表指令,⽤于从 ROM 中读出预存的数据:

MOVC A, @A + PC

MOVC A, @A + DPTR

问题:在“MOVC A,@A+DPTR”和“MOVC A,@A+PC”中,分别使⽤了DPTR和PC作基址,请问这两个基址代表什么地址?使⽤中有何不同?

答案:使⽤@A+DPTR基址变址寻址时,DPTR为常数且是表格的⾸地址,A为从表格⾸址到被访问字节地址的偏移量。

使⽤@A+PC基址变址寻址时,PC仍是下条指令⾸地址,⽽A则是从下条指令⾸地址到常数表格中的被访问字节的偏移量。

PC是程序计数器,DPTR是数据指针。⽤这个MOVC A,@A+DPTR⽐较⽅便的,DPTR是16位。范围⼴。建议使⽤。

这两条都是查表指令,MOVC A,@A+PC,只能给累加器A赋值,所以只能查这条指令所在地址以后256字节范围内的代码或常数。

⽽MOVC A,@A+DPTR,可以给DPTR赋给任何⼀个16位的地址值,所以查表范围可达整个程序存储器64K字节空间的代码或常数。

其中前⼀条指令的⽤法,⽐较难,使⽤的时候,需要计算⼀个“偏移量”。不了解“指令的字节数”的⼈,都不清楚应该如何计算。

做⽽论道曾在以前的⽂章中,介绍过“偏移量”的⾃动计算⽅法,可见如下链接:

--------------------

最佳答案:

51单⽚机汇编语⾔有⼀条查表指令是:

MOVC A, @A + DPTR

它不是单独使⽤的,要和 DB 伪指令配套使⽤。

例如:若累加器A中有⼀个0~9的数,请⽤查表法求出该数的平⽅值,设平⽅表表头地址为1000H。

单片机常用指令

单片机常用指令

计算机通过执行程序完成人们指定的任务,程序由一条一条指令构成,能为CPU识别并执行的指令的集合就是该CPU的指令系统。

MCS-51单片机汇编语言指令格式:

操作符目的操作数,源操作数

指令中的常用符号

Rn: n=(0~7),表示当前工作寄存器R0~R7中的一个

Ri: i=(0、1),代表R0和R1寄存器中的一个,用作间接寻址寄存器

dir : 8 位直接字节地址(片内RAM 和SFR )

#data: 8位立即数,即8位常数。可以为2进制(B)、10进制、16进制(H)、字符(‘ ’)#data16: 表示16位立即数,即16位常数,取值范围为#0000H~#0FFFFH

addr16 : 表示16位地址

addr11 : 表示11位地址

rel : 相对偏移量(为一字节补码)用于相对转移指令中

bit :位地址,在位地址空间中。

$: 表示当前指令的地址。

寻址方式

1、立即寻址

指令中直接给出操作数的寻址方式。在51系列单片机的指令系统中,立即数用一个前面加“#“号的8位数(#data,如#30H)或16位数(#data16,如#2052H)表示。立即寻址中的数,称为立即数。

例如指令:MOV A,#30H

2、直接寻址

操作数的地址直接出现在指令中。

寻址对象:

①内部数据存贮器:使用它的地址。

②特殊功能寄存器:既可使用它的地址,也可以直接使用寄存器名。

3、寄存器寻址

操作数存放在寄存器中。

寻址对象:A,B,DPTR,R0~R7 。

B 仅在乘除法指令中为寄存器寻址,在其他指令中为直接寻址。

A 可以寄存器寻址又可以直接寻址,直接寻址时写作ACC

C51单片机指令集大全

C51单片机指令集大全

格式功能简述字节数周期

一、数据传送类指令

MOV A, Rn 寄存器送累加器 1 1

MOV Rn,A 累加器送寄存器 1 1

MOV A ,@Ri 内部RAM单元送累加器 1 1

MOV @Ri ,A 累加器送内部RAM单元 1 1

MOV A ,#data 立即数送累加器 2 1

MOV A ,direct 直接寻址单元送累加器 2 1

MOV direct ,A 累加器送直接寻址单元 2 1

MOV Rn,#data 立即数送寄存器 2 1

MOV direct ,#data 立即数送直接寻址单元 3 2

MOV @Ri ,#data 立即数送内部RAM单元 2 1

MOV direct ,Rn 寄存器送直接寻址单元 2 2

MOV Rn ,direct 直接寻址单元送寄存器 2 2

MOV direct ,@Ri 内部RAM单元送直接寻址单元 2 2 MOV @Ri ,direct 直接寻址单元送内部RAM单元 2 2 MOV direct2,direct1 直接寻址单元送直接寻址单元 3 2 MOV DPTR ,#data16 16位立即数送数据指针 3 2

MOVX A ,@Ri 外部RAM单元送累加器(8位地址) 1 2 MOVX @Ri ,A 累加器送外部RAM单元(8位地址) 1 2 MOVX A ,@DPTR 外部RAM单元送累加器(16位地址) 1 2 MOVX @DPTR ,A 累加器送外部RAM单元(16位地址) 1 2 MOVC A ,@A+DPTR 查表数据送累加器(DPTR为基址) 1 2 MOVC A ,@A+PC 查表数据送累加器(PC为基址) 1 2 XCH A ,Rn 累加器与寄存器交换 1 1

51单片机汇编指令速查表

51单片机汇编指令速查表

51 单片机汇编指令速查表

指令格式功能简述字节数周期

一、数据传送类指令

MOV A, Rn 寄放器送累加器1 1

MOV Rn,A 累加器送寄放器1 1

MOV A ,@Ri 内部 RAM 单元送累加器1 1

MOV @Ri ,A 累加器送内部 RAM 单元 1 1

MOV A ,#data 当即数送累加器2 1

MOV A ,direct 直接寻址单元送累加器2 1

MOV direct ,A 累加器送直接寻址单元2 1

MOV Rn,#data 当即数送寄放器2 1

MOV direct ,#data 当即数送直接寻址单元3 2

MOV @Ri ,#data 当即数送内部 RAM 单元 2 1

MOV direct ,Rn 寄放器送直接寻址单元2 2

MOV Rn ,direct 直接寻址单元送寄放器2 2

MOV direct ,@Ri 内部 RAM 单元送直接寻址单元 2 2

MOV @Ri ,direct 直接寻址单元送内部 RAM 单元 2 2

MOV direct2,direct1 直接寻址单元送直接寻址单元3 2

MOV DPTR ,#data16 16 位当即数送数据指针3 2

MOVX A ,@Ri 外部 RAM 单元送累加器(8 位地址) 1 2

MOVX @Ri ,A 累加器送外部 RAM 单元(8 位地址) 1 2

MOVX A ,@DPTR 外部 RAM 单元送累加器(16 位地址) 1 2

MOVX @DPTR ,A 累加器送外部 RAM 单元(16 位地址) 1 2

MOVC A ,@A+DPTR 查表数据送累加器(DPTR 为基址) 1 2

MCS-51单片机指令周期表

MCS-51单片机指令周期表

MCS-51单片机指令周期表

mcs-51指令速查表

类别指令格式功能简述字节数周期MOV A,Rn寄存器送累加器11

MOV Rn,A累加器送寄存器11

MOV A,@Ri内部RAM单元送累加器11

MOV@Ri,A累加器送内部RAM单元11

MOV A,#data立即数送累加器21

MOV A,direct直接寻址单元送累加器21

MOV direct,A累加器送直接寻址单元21

MOV Rn,#data立即数送寄存器21

MOV direct,#data立即数送直接寻址单元32

MOV@Ri,#data立即数送内部RAM单元21

MOV direct,Rn寄存器送直接寻址单元22

数据传送类指令期

MOV Rn,direct直接寻址单元送寄存器22

MOV direct,@Ri内部RAM单元送直接寻址单元22

MOV@Ri,direct直接寻址单元送内部RAM单元22

MOV direct2,direct1直接寻址单元送直接寻址单元32

MOV DPTR,#data1616位立即数送数据指针32

MOVX A,@Ri外部RAM单元送累加器(8位地址)12

MOVX@Ri,A累加器送外部RAM单元(8位地址)12

MOVX A,@DPTR外部RAM单元送累加器(16位地址)12

MOVX@DPTR,A累加器送外部RAM单元(16位地址)12

MOVC A,@A+DPTR查表数据送累加器(DPTR为基址)12

MOVC A,@A+PC查表数据送累加器(PC为基址)12

XCH A,Rn累加器与寄存器交换11

算术运算类指令

XCH A,@Ri累加器与内部RAM单元交换11

51单片机指令

51单片机指令

MCS-51共有111条指令,可分为5类:

[1].数据传送类指令(共29条)

[2].算数运算类指令(共24条)

[3].逻辑运算及移位类指令(共24条)

[4].控制转移类指令(共17条)

[5].布尔变量操作类指令(共17条)

一些特殊符号的意义

Rn——当前选中的寄存器区的8个工作寄存器R0—R7(n=0-7)。

Ri——当前选中的寄存器区中可作为地址寄存器的两个寄存器R0和R1(i=0,1)

direct—内部数据存储单元的8位地址。包含0—127(255)内部存储单元地址和特殊功能寄存地址。

#data—指令中的8位常数。

#data16—指令中的16位常数。

addr16—用于LCALL和LJMP指令中的16目的地地址,目的地址的空间为64kB程序存储器地址。

#addr11—用于ACALL和AJMP指令中的11目的地地址,目的地址必须放在与下条指令第一个字节同一个2kB程序存储器空间之中。

rel—8位带符号的偏移字节,用于所有的条件转移和SJMP等指令中,偏移字节对于下条指令的第一个字节开始的-128——+127范围内。

@—间接寄存器寻址或基址寄存器的前缀。

/—为操作的前缀,声明对该位操作书取反。

DPTR—数据指针。

bit—内部RAM和特殊功能寄存器的直接寻址位。

A—累加器。

B—累加器B。用于乘法和除法指令中。

C—进位标志位。

(x)—某地址单元中的内容。

((x))—由X寻址单元中的内容。

MCS-51的寻址方式

[1].直接寻址

指令中操作数直接以单元地址形式出现,例如:MOV A,68H

这条指令的意义是把内部RAM中的68H单元中的数据内容传送到累加器A中。值得注意的是直接寻址方式只能使用8位二进制地址,因此这种寻址方式仅限于内部RAM进行寻址。低128位单元在指令中直接以单元地址的形式给出。对于特殊功能寄存器可以使用其直接地址进行访问,还可以以它们的符号形式给出,只是特殊功能寄存器只能用直接寻址方式访问,而无其它方法。

(完整版)51单片机汇编指令(全)

(完整版)51单片机汇编指令(全)

指令中常用符号说明

Rn当前寄存器区的8个工作寄存器R0~R7(n=0~7)

Ri当前寄存器区可作为地址寄存器的2个工作寄存器R0和R1(i=0,1)

Direct8位内部数据寄存器单元的地址及特殊功能寄存器的地址

#data表示8位常数(立即数)

#data16表示16位常数

Add16表示16位地址

Addr11表示11位地址

Rel8位代符号的地址偏移量

Bit表示位地址

@间接寻址寄存器或基址寄存器的前缀

( )表示括号中单元的内容

(( ))表示间接寻址的内容

指令系统

数据传送指令(8个助记符)

助记符中英文注释

MOV Move 移动

MOV A , Rn;Rn→A,寄存器Rn的内容送到累加器A

MOV A , Direct;(direct)→A,直接地址的内容送A

MOV A ,@ Ri;(Ri)→A,RI间址的内容送A

MOV A , #data;data→A,立即数送A

MOV Rn , A;A→Rn,累加器A的内容送寄存器Rn

MOV Rn ,direct;(direct)→Rn,直接地址中的内容送Rn

MOV Rn , #data;data→Rn,立即数送Rn

MOV direct , A;A→(direct),累加器A中的内容送直接地址中

MOV direct , Rn;(Rn)→direct,寄存器的内容送到直接地址

MOV direct , direct;(direct)→direct,直接地址的内容送到直接地址

MOV direct , @Ri;((Ri))→direct,间址的内容送到直接地址

MOV direct , #data;8位立即数送到直接地址中

8051单片机汇编指令速查表详解

8051单片机汇编指令速查表详解

8051系列单片机汇编语言指令速查表

说明:

1)Ri, Rn指当前工作寄存器,i,n = 0 – 7,当前工作寄存器由程序状态字寄存器PSW的2个位RS1, RS0决定

MCS-51使用汇编语言指令,它共有44个操作码助记符,33种功能,其操作数有#data、direct、Rn、@Ri等。这里介绍指令助记符及其相关符号的记忆方法。

一、助记符号的记忆方法

1、表格列举法

把44个指令助记符按功能分为五类,每类列表记忆。此处从略,请读者自己总结。

2、英文还原法

单片机的操作码助记符是该指令功能的英文缩写,将缩写还原成英语原文,再对照汉语有助于理解其助记符含义,从而加强记忆。例如:

增量INC-Incremect 减量DNC-Decrement 短转移SJMP-Short jump

长转移LJMP-Long jump 比较转移CJNE-Compare jump not equality

绝对转移AJMP-Absolute jump 空操作NOP-No operation

交换XCH-Exchange 加法ADD-Addition

乘法MUL-Multiplication 除法DIV-Division

左环移RL-Rotate left 进位左环移RLC-Rotate left carry

右环移RR-Rotate right 进位右环移RRC-Rotate right carry

3、功能模块记忆法

单片机的44个指令助记符,按所属指令功能可分为五大类,每类又可以按功能相似原则为2~3组。这样,化整为零,各个击破,实现快速记忆。

完整word版,51单片机指令表

完整word版,51单片机指令表

此表主要是为了方便大家查阅每条指令的作用,写法以及字节数和周期数,建议大家保存为书签。

助记符指令说明字节数周期数

(数据传递类指令)

MOV A,Rn 寄存器传送到累加器 1 1

MOV A,direct 直接地址传送到累加器 2 1

MOV A,@Ri 累加器传送到外部RAM(8 地址) 1 1

MOV A,#data 立即数传送到累加器 2 1

MOV Rn,A 累加器传送到寄存器 1 1

MOV Rn,direct 直接地址传送到寄存器 2 2

MOV Rn,#data 累加器传送到直接地址 2 1

MOV direct,Rn 寄存器传送到直接地址 2 1

MOV direct,direct 直接地址传送到直接地址 3 2

MOV direct,A 累加器传送到直接地址 2 1

MOV direct,@Ri 间接RAM 传送到直接地址 2 2

MOV direct,#data 立即数传送到直接地址 3 2

MOV @Ri,A 直接地址传送到直接地址 1 2

MOV @Ri,direct 直接地址传送到间接RAM 2 1

MOV @Ri,#data 立即数传送到间接RAM 2 2

MOV DPTR,#data16 16 位常数加载到数据指针 3 1 MOVC A,@A+DPTR 代码字节传送到累加器 1 2 MOVC A,@A+PC 代码字节传送到累加器 1 2 MOVX A,@Ri 外部RAM(8 地址)传送到累加器 1 2 MOVX A,@DPTR 外部RAM(16 地址)传送到累加器 1 2 MOVX @Ri,A 累加器传送到外部RAM(8 地址) 1 2 MOVX @DPTR,A 累加器传送到外部RAM(16 地址) 1 2 PUSH direct 直接地址压入堆栈 2 2

MCS-51第三章MCS-51单片机的指令系统

MCS-51第三章MCS-51单片机的指令系统

A, #10 R4, #36 @R0, #7AH 31H,#01H DPTR,#1234H
School of Engineering & Automation · Tianjin Polytechnic University
微机原理及应用
b.直接寻址传送 MOV A, direct ;(direct)→A MOV direct, A ; (A) → direct MOV Rn, direct;(direct)→Rn MOV @Ri,direct;(direct)→(Ri)
微机原理及应用
MCS-51单片机的指令系统
1. 数据传送类指令
①.内部数据传送类指令(MOV) MOV 目,源 a.立即数传送
双字节
MOV A, #data ;data→A MOV Rn, #data ;data→Rn MOV @Ri, #data ;data→(Ri)
School of Engineering & Automation · Tianjin Polytechnic University
微机原理及应用
例.已知累加器 A中有一个0~9范围内的数,用以 上查表指令编出能查出0~9的平方值的程序。设平方 表首地址为2000H。 a.采用DPTR作为基址寄存器, 程序为: MOV DPTR, #2000H MOVC A, @A+DPTR 若累加器处值为3,得到一个新地址2003H,从该地 址中查表得9并存入累加器A中

常见51单片机指令及详解

常见51单片机指令及详解

常见51单片机指令及详解

数据传递类指令

(1)以累加器为目的操作数的指令

MOV A,Rn

MOV A,direct

MOV A,@Ri

MOV A,#data

第一条指令中,Rn代表的是R0-R7。第二条指令中,direct就是指的直接地址,而第三条指令中,就是我们刚才讲过的。第四条指令是将立即数data送到A中。

下面我们通过一些例子加以说明:

MOV A,R1 ;将工作寄存器R1中的值送入A,R1中的值保持不变。

MOV A,30H ;将内存30H单元中的值送入A,30H单元中的值保持不变。

MOV A,@R1 ;先看R1中是什么值,把这个值作为地址,并将这个地址单元中的值送入A中。如执行命令前R1中的值为20H,则是将20H单元中的值送入A中。

MOV A,#34H ;将立即数34H送入A中,执行完本条指令后,A中的值是34H。

(2)以寄存器Rn为目的操作的指令

MOV Rn,A

MOV Rn,direct

MOV Rn,#data

这组指令功能是把源地址单元中的内容送入工作寄存器,源操作数不变。

(3)以直接地址为目的操作数的指令

MOV direct,A 例: MOV 20H,A

MOV direct,Rn MOV 20H,R1

MOV direct1,direct2 MOV 20H,30H

MOV direct,@Ri MOV 20H,@R1

MOV direct,#data MOV 20H,#34H

(4)以间接地址为目的操作数的指令

MOV @Ri,A 例:MOV @R0,A

MOV @Ri,direct MOV @R1,20H

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
后面的数,即0~5的平方值0,1,4,9,16,25存放 在ROM中。
③待查的数据保存在R0中,可根据需 要进行修改。
6
三、举例
④ 数据表(平方表)在ROM中存放的示意图: (注意:这里,标号 TABLE实际上是数据表 的首地址,它是一个具 体的值。只不过在这里, 用TABLE这个标号来 表示更为方便而已。)
13
此条指令的含义是将累加器A中的值与寄存器DPTR中的值 相加,相加后的结果是程序存储器ROM中的某个存储单元 的地址。将这个地址中的数据传送到A中保存起来。
3
二、查表程序格式
在使用时,将DPTR赋值为欲查数据表的首地 址,累加器A赋值为要查的数据,即可实现查 表功能,查得的数据保存在A中。通用格式如 下: MOV DPTR,#TABLE MOVC A,@A+DPTR ……(其他程序段) TABLE:DB ……(数据库)
模块七 查表指令
1
在日常生活中,很多场合需要单片机控制电 路做复杂的显示或运算。如大型的LED中文 显示屏,复杂的数据计算等。通常的做法是: 事先做好数据库(比如汉字库),然后让单 片机通过“查表”的方式调用数据库中的内 容进行相应的显示或其他操作。
2
一、指令讲解
51单片机指令系统中,有两个查表指令。
MOVC A,@A+PC MOVC A,@A+DPTR
MOVC—程序存储器ROM向累加器A传送数据的指令 A—累加器,用于保存临时数据 PC—程序计数指针,PC的值等于当前要执行的指令的存放地址(举例) DPTR—16位寄存器,在查表程序中,DPTR的值一般等于待查数据表的首
地址。 @—表示间接寻址方式。
7
三、举例
⑤程序执行情况分析: MOV R0,#2;待查2的平方,将R0赋值为2 MOV DPTR,#TABLE;将平方表的首地址送入DPTR中,假
设为1000H(标号为TABLE) MOV A,R0;A=R0=2 MOVC A,@A+DPTR;将A与DPTR相加,即1002H(TABLE+2),以该值为
4
三、举例
例1:将累加器A中的数(0~5),用查表的方法求 平方值。 MOV R0,#待查值 MOV DPTR,#TABLE MOV A,R0 MOVC A,@A+DPTR (显示程序段……) TABLE: DB 0,1,4,9,16,25
5
三、举例
讲解:①TABLE是数据表首地址的标号。 ②DB是一条伪指令,它的用途是将其
左移2次,右移2次,闪烁2次(延时的时间 0.2秒)。
10
三、举例
2、电路原理图 控制流水灯实验\流水灯.DSN 3、设计思路
把控制码建成一个表,而利用MOVC A,@ A+DPTR做取码的操作,就可方便地处理一 些复杂的控制动作
11
三、举例 4、流程图
12
三、举例 5、程序段
查表指令控制流水灯.txt
地址,到ROM中相应单元去取数。程序中该单元的数据为4,正是2的平 方。 (显示程序段……) TABLE: DB 0,1,4,9,16,25
8
三、举例 例2:基于单片机的简易计算器设计 基于单源自文库机的简易计算器.doc
9
三、举例
例3:用查表方式控制广告灯显示
1. 实验任务 利用取表的方法,使端口P1做单一灯的变化:
相关文档
最新文档