MCU查表指令的使用

合集下载

单片机汇编语言查表实例

单片机汇编语言查表实例

下面是汇编语言实现楼宇对讲功能的查表实例:当单片机外部系统发来不同的指令时,便启动查表功能,实现不同的操作,如单片机接收到的指令保存在RXD中,RXD+1保存指令终止符号,如要实现某个操作,外部发来0XA0操作符到RXD中,0XFF到RXD+1中,即开启查表,开始执行下列程序:MOV A,(RXD_Buf+1)CJNE A,RXD_Buf,Exit_Receive_Msg_Proc如果为退出指令,则退出MOV B,RXD_BufJmpX_By_Ins Division_Instruction,Run_Instr_Addr子程序;==================================Division_Instruction:DB00H,01H,03H,05H,06H,07H,09H,0AH,13H,14H,15H,16HDB28H,29H,2AH,2CH,2EH,30H,31H,33H,35H,FAH;FLAG OF END;==================================Run_Instr_Addr:LJMP Call_By_Manger;00H;LJMP Put_Down_Hook;01H;LJMP Put_Off_Hook;03H;LJMP Disable_Calling;05H;LJMP Enable_Get_Msg;06H;LJMP There_Are_Msg;07H;LJMP Call_By_Door;09H;LJMP FeedBack_Alarm;0AHLJMP Put_Off_Hook_For_Out;13H;LJMP Set_Up_Fortify_By_GLC;14H;LJMP Disable_Alarm_By_GLC;15H;LJMP Reset_Divi_Password;16H;LJMP Calling_By_T_Main;28H;LJMP Hook_On_By_Brother;29H;LJMP Hook_Off_By_Brother;2AH;LJMP Hook_On_By_T_Main;2CH;LJMP Calling_By_Brother;2EH;LJMP Define_Baud_Rate;30HLJMP GLC_Proced_Alarm;31HLJMP Graphic_Msg_In_Main;33HLJMP Rst_Standart_Rate;35HReturn_Main_Body_For_Divi_Ins:LJMP Exit_Receive_Msg_Proc;FAHJmpX_By_Ins MACRO I_Table,F_TableMOV DPTR,#I_Table将指令表首地址赋给DPTRLCALL DPTR_Comp_B调用MOV A,R05此时R05表示查找到的位置MOV B,#03LJMP指令占三个字节MUL ABMOV DPTR,#F_Table将功能地址赋给DPTR,加上要跳转的位置JMP@A+DPTR找到相应的LJMP子程序,开始执行ENDM;=============================DPTR_Comp_B:;INPUT INSTRUCTION CODE,RETURN R7---INSTRUCTION SEQUENCEMOV R05,#0从头开始查表Comp_Next_DPTR:CLR AMOVC A,@A+DPTR将指令表首地址赋给ACJNE A,B,Chk_End_Flag此时B为接收的指令,如A0H,不相等,跳转,如果找到,则退出SJMP Exit_DPTR_CompChk_End_Flag:CJNE A,#FAH,Comp_INC_DPTR A不是跳出指令,跳转,往下查表SJMP Exit_DPTR_CompComp_INC_DPTR:INC DPTR位置加1INC R05SJMP Comp_Next_DPTR查找下一个Exit_DPTR_Comp:RET;=====================================。

plc查表指令的运用

plc查表指令的运用

plc查表指令的运用PLC是可编程序逻辑控制器的缩写,是一种用于自动化控制和监视工业过程的设备。

在PLC的编程中,查表指令是一种常用的运用技巧,它可以提高程序的效率和可读性。

下面将详细介绍PLC查表指令的运用。

一、PLC查表指令的概念查表指令是一种利用表格的方式来处理数据的方法。

在PLC的编程中,通常可以使用查表指令来替代繁琐的数值计算和逻辑判断,使程序的编写更加简洁和高效。

二、PLC查表指令的优势1.简化编程:查表指令可以将复杂的数学运算和逻辑判断转化为查表操作,减少了编程的复杂度,使程序更易于维护和修改。

2.提高执行速度:由于查表指令是直接通过索引值进行查找操作,所以其执行速度更快,能够提高控制系统的响应速度。

3.提高程序的可读性:通过查表指令,可以将数据和对应的处理逻辑分离,使程序更加易读、易懂、易维护。

三、PLC查表指令的应用场景1.数学运算:在一些复杂的数学运算中,比如三角函数、开方、幂运算等,可以通过查表指令来替代,减少CPU的运算压力,提高执行速度。

2.数据转换:在不同的数据格式之间进行转换,比如将模拟量信号转换为百分比、0-10V转换为0-100等,可以使用查表指令来完成。

3.逻辑判断:在一些复杂的逻辑判断中,如根据输入信号的组合进行决策,可以使用查表指令来实现,简化程序的逻辑结构。

四、PLC查表指令的使用步骤1.定义查找表:首先需要根据实际需求,定义一个查找表,用于存储输入值和对应的输出值。

2.索引计算:根据输入值,计算出对应的索引值,用于在查找表中进行查找。

3.查表操作:根据索引值,在查找表中查找对应的输出值,将其作为结果输出。

4.输出结果:将查找表中查找到的结果,作为PLC的输出,用于后续的控制操作。

五、PLC查表指令的编程实例以一个温度控制系统为例,设定的工作温度范围为20℃~80℃,需要将读取到的模拟量信号转换为对应的百分比,并根据百分比控制对应的输出。

1.定义查找表:根据温度范围和对应的百分比关系,定义一个查找表如下:温度(℃)百分比(%)20 030 2540 5050 7560 10070 12580 1502.索引计算:根据输入的温度值,计算出对应的索引值。

单片机的查表程序

单片机的查表程序

在单片机开发过程中.一些非线性的控制过程。

最适合做一个表格来。

时时改变系统的参数。

达到控制的目的.最常的如产生正弦的的程。

就是建一个大的数组时时改变输出的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 0x80unsigned char digits[10]= {(SEG_a|SEG_b|SEG_c|SEG_d|SEG_e|SEG_f), // 0(SEG_b|SEG_c), // 1(SEG_a|SEG_b|SEG_d|SEG_e|SEG_g), // 2(SEG_a|SEG_b|SEG_c|SEG_d|SEG_g), // 3(SEG_b|SEG_c|SEG_c|SEG_f|SEG_g), // 4(SEG_a|SEG_c|SEG_d|SEG_f|SEG_g), // 5(SEG_a|SEG_c|SEG_d|SEG_e|SEG_f|SEG_g), // 6(SEG_a|SEG_b|SEG_c), // 7(SEG_a|SEG_b|SEG_c|SEG_d|SEG_e|SEG_f|SEG_g), // 8(SEG_a|SEG_b|SEG_c|SEG_d|SEG_f|SEG_g) // 9};C查表就太简单了temp2 = digits[ show_data[i] ];一句搞定,C中还有一个switch语句也是一个很好的用查表语句C51汇编就相对麻烦一点。

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

51单片机中查表指令的使用

51单片机中查表指令的使用

个偏移量,以补偿数据表首址与MoVc A,@A+PC后面下! 一条指令地址的差值。也就是说,基址加变址A+Pc中, !
PC虽然不能改变,但可将A中的数据进行调整(加上偏 移量),就能实现准确查表。实际应用中,使用MOVC A,@”Pc指令编写程序时,调整偏移量有以下几种处理 方法:
1.子程序法。将查表指令写成子程序,子程序后紧 跟着安排数据表。

MOV DPTR, #TABLE
MOV A, @A+DPTR

‘ ●



TABLE:DB……·

在实际的单片机应用系统中,往往需要扩展外部数!
据存储器或输入输出接口(如键盘和数码显示等)。在!
这种情况下,程序中就要用到数据指针DPTR,要将其指;
向外RAM地址(或键盘与显示器地址),利用Movx;
式。用MOVC A,@A+DPT财旨令查表,因为数据指针DPTR
是16位的,故数据表可安排在64KB的ROM的任意地址范l
围内。使用时只要将数据指针DPTR(基址寄存器)指向I
欲查数据表的首地址,将累加器A(变址参数寄存器)I
赋以要查表的数据,就可实现查表功能,查得的数据存l
在累加器A中。通用的程序如下:
A,@DPTR和MOVx@DPTR,A指令与外RAM进行数据交换。;
若此时还需要查表(如数码显示程序,需查找七段显示;
器的段码),使用MoVc A,@A+DPTR指令就不太方便。;
数据指针DPTR既要指向内部程序存储器RoM的数据表首;
址,又要指向外部RAM或其他接口的地址,这虽然可用;
堆栈等方法来实现,但比较麻烦。在这种情况下最好使!
应用设计
5 1单片机中查表指令的使用

赛元MCU应用注意事项

赛元MCU应用注意事项

设置代码存放区域,便于调试。将代码区设置在 0x0100 之后。 打开项目选项中的“BL51Locate 属性页,在 Code Range 处输入“0x0100”保存,重新编译,进行调试 等。见下图:
Page 1 of 28 深圳市赛元微电子有限公司
V 1.0
2.1 内部EEPROM的操作——IAP操作 .......................................................................................................... 6
2.2 EEPROM操作代码..................................................................................................................................... 7
4 附注:赛元MCU的DEMO程序 ............................................................................................22
4.1 I/O的初始化设置....................................................................................................................................... 22
赛元 MCU 应用注意事项
设置方法如下: ① 将代码存放区恢复回全区域,即取消第一步的操作。即将 Code Range 的数据去掉,点击 OK 保存。

MCU系统管理员操作手册

MCU系统管理员操作手册

-


第三十四页,共52页,
系统管理员操作手册




n
g



MCU会议内无任何中断时是否对
-
会议进行锁定 suǒ dìnɡ 的处理,



第三十五页,共52页,
系统管理员操作手册




n
g



终端是否 shì fǒu 可以呼叫MCU会议名
-
称选项,


xì 第三十六页,共52页,

xì 第十二页,共52页,
系统管理员操作手册




n
g

动作/清晰度 优先选项:点击下拉菜

单,可以设置MCU在召开会议时接收

和发送的图像以何种方式优先,在 CICO系统中,由于 yóuyú 终端全部为标
-
清终端,为提升用户的图像质量,需将

此设置选为清晰度优先项,


第十三页,共52页,
设置
系统管理员-系统设置 系统管理员-用户设置 系统管理员-终端设置
第四十七页,共52页,
系统管理员操作手册


终端列表 liè biǎo 界面



点击新增H.323,即可
增加新的终端,
-


z
h
ō
n
第四十八页,共52页,
系统管理员操作手册

新增H.323终端 zhōnɡ

duān 界面

plc查表指令的运用

plc查表指令的运用

PLC查表指令的运用1. 什么是PLC查表指令PLC(可编程逻辑控制器)是一种用于工业自动化控制系统的计算机。

PLC查表指令是PLC编程中常用的一种指令,用于根据给定的输入值在查找表中查找对应的输出值。

2. 查表指令的语法和用法PLC查表指令通常由以下几个部分组成:查表指令(输入值,查找表,输出值)•输入值:指定要在查找表中查找的输入值。

•查找表:包含输入值和对应输出值的表格。

•输出值:根据输入值在查找表中查找到的对应输出值。

查表指令的使用步骤如下:1.定义查找表,包含输入值和对应的输出值。

2.指定要在查找表中查找的输入值。

3.执行查表指令,根据输入值在查找表中查找对应的输出值。

3. 查表指令的应用场景PLC查表指令在工业自动化控制系统中有广泛的应用,以下是一些常见的应用场景:3.1 温度控制在温度控制系统中,可以使用查表指令根据当前温度设定值在查找表中查找对应的控制参数。

通过查表指令,可以实现快速、准确地根据温度设定值调整控制参数,从而实现温度的精确控制。

3.2 位置控制在位置控制系统中,可以使用查表指令根据当前位置误差在查找表中查找对应的控制指令。

通过查表指令,可以根据位置误差的大小调整控制指令,从而实现位置的精确控制。

3.3 压力控制在压力控制系统中,可以使用查表指令根据当前压力值在查找表中查找对应的控制策略。

通过查表指令,可以根据当前压力值的大小选择合适的控制策略,从而实现压力的稳定控制。

3.4 流量控制在流量控制系统中,可以使用查表指令根据当前流量值在查找表中查找对应的控制参数。

通过查表指令,可以根据当前流量值的大小调整控制参数,从而实现流量的精确控制。

4. 查表指令的优势PLC查表指令具有以下几个优势:•灵活性:通过修改查找表中的值,可以实现不同的控制策略。

这使得系统可以根据不同的需求进行灵活的调整。

•精确性:查表指令可以根据输入值在查找表中精确地查找对应的输出值,从而实现精确的控制。

单片机查表指令

单片机查表指令

单⽚机查表指令单⽚机具有两条查表指令,⽤于从 ROM 中读出预存的数据: MOVC A, @A + PC MOVC A, @A + DPTR 其中前⼀条指令的⽤法,⽐较难,使⽤的时候,需要计算⼀个“偏移量”。

不了解“指令的字节数”的⼈,都不清楚应该如何计算。

第⼀条指令 第⼀条指令中,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。

以寄存器Rn为⽬的操作的指令 MOV Rn,A MOV Rn,direct MOV Rn,#data 这组指令功能是把源地址单元中的内容送⼊⼯作寄存器,源操作数不变。

以直接地址为⽬的操作数的指令 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 以间接地址为⽬的操作数的指令 MOV @Ri,A 例:MOV @R0,A MOV @Ri,direct MOV @R1,20H MOV @Ri,#data MOV @R0,#34H ⼗六位数的传递指令 MOV DPTR,#data16 8051是⼀种8位机,这是唯⼀的⼀条16位⽴即数传递指令,其功能是将⼀个16位的⽴即数送⼊DPTR中去。

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

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

此条指令的含义是将累加器A中的值与寄存器DPTR中的值 相加,相加后的结果是程序存储器ROM中的某个存储单元 的地址。将这个地址中的数据传送到A中保存起来。
二、查表程序格式
在使用时,将DPTR赋值为欲查数据表的首地 址,累加器A赋值为要查的数据,即可实现查 表功能,查得的数据保存在A中。通用格式如 下: MOV DPTR,#TABLE MOVC A,@A+DPTR ……(其他程序段) TABLE:DB ……(数据库)
把控制码建成一个表,而利用MOVC A,@ A+DPTR做取码的操作,就可方便地处理一 些复杂的控制动作
三、举例 4、流程图
三、举例 5、程序段 查表指令控制流水灯.txt
三、举例
④ 数据表(平方表)在ROM中存放的示意图: (注意:这里,标号 TABLE实际上是数据表 的首地址,它是一个具 体的值。只不过在这里, 用TABLE这个标号来 表示更为方便而已。)
三、举例
⑤程序执行情况分析: 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),以该值为 地址,到ROM中相应单元去取数。程序中该单元的数据为4,正是2的平 方。 (显示程序段……) TABLE: DB 0,1,4,9,16,25
MOVC A,@A+PC MOVC A,@A+DPTR
MOVC—程序存储器ROM向累加器A传送数据的指令 A—累加器,用于保存临时数据 PC—程序计数指针,PC的值等于当前要执行的指令的存放地址(举例) DPTR—16位寄存器,在查表程序中,DPTR的值一般等于待查数据表的首 地址。 @—表示间接寻址方式。

中微公司MCU指令语法

中微公司MCU指令语法

指令定义expression EQU address指令说明定义寄存器,在同一个文件里面同一个expression只能定义一个地址,否则系统会报错,同一个address则可以定义成不同的expression。

Expression长度不能超过15个字符,否则系统会报错。

Address只支持十六进制,形式为:数值+“H”,如果定义的是位,则用单独一个数值表示。

功能表示TEMP EQU 15H ;OFF EQU 2 ; OFF 被定义为TEMP的第2位处理ORG address指令说明此指令会将address的计算数值设定给编译器的地址计数器,其后的程序代码和数据偏移地址将根据address所计算的偏移量做相对的调整。

功能表示ORG 1FFHEND指令说明此指令宣告程序的结束,因此应该避免在任何包含此指令的语句。

避免编译器编译到此指令后就结束程序的编译流程,之后的指令就不会被编译。

功能表示ENDExpression:指令说明标号表达式,标号表达式不能与其他指令语句写在一行,必须单独一行,否则编译器会提示错误。

名称由下列字符组成:A~Z 0~9 _在使用上有以下的限制:不可使用数字0~9作为名称的第一个字符条件转移SZB R, b Skip if Zero指令说明如果指定数据存储器的第b位为0,则程序计数器跳过下一条指令. 功能表示Skip if R. b = 0影响标志位NoneSNZB R, b Skip if Not Zero指令说明如果指定数据存储器的第b位为1,则程序计数器跳过下一条指令.功能表示Skip if R. b= 1影响标志位NoneSZDECA R Skip if Zero After Decrement,The result save in ACC指令说明将指定数据存储器的内容先减去1 后,如果结果为0,则程序计数器跳过下一条指令,此结果会被储存回累加器且指定数据存储器中的内容不变.如果结果不为0,则程序继续执行下面的指令。

单片机修改查字表并同步发送信息

单片机修改查字表并同步发送信息

单片机修改查字表并同步发送信息
单片机修改查字表并同步发送信息涉及到多个方面,包括单片机的编程和通信协议的使用。

下面是一个基本的步骤示例:
1. 首先,需要确定要使用的单片机型号,并了解其开发环境和编程语言。

常见的单片机包括Arduino、PIC、STM32等。

2. 创建一个字表或字符集,可以是一个数组或存储在单片机的Flash或EEPROM中。

3. 在单片机的程序中,编写代码以修改字表内容。

这可能涉及到修改数组元素的值或在Flash/EEPROM中写入新的字符数据。

4. 配置和使用合适的通信协议,例如UART、SPI或I2C,以将修改后的字表信息发送到外部设备。

5. 在单片机的程序中,编写代码以通过选定的通信协议将字表信息发送给外部设备。

这可能涉及到初始化通信接口、发送数据包或指令,并处理通信的错误和回应。

6. 在外部设备端,接收来自单片机的字表信息,并根据需求进行相应的处理和显示。

需要注意的是,以上步骤的具体实现会根据单片机型号、编程语言和通信协议的不同而有所差异。

因此,您需要参考相关的单片机文档、开发环境和通信协议的规范来进行具体的编程和配置。

此外,如果您对特定的单片机和应用有进一步的需求,建议查阅相关的单片机资料和示例代码,或者咨询专业的嵌入式系统工程师进行具体的指导和支持。

Holtek(合泰)单片机指令介绍

Holtek(合泰)单片机指令介绍
概述 指令系统概述 HOLTEK指令系统
MCU概述 指令系统概述 HOLTEK指令系统
MCU概述(组成架构)
MCU的基本结构由以下几个部分组成:
– PC – ROM – RAM – ACC – ALU (Program counter 程序计数器) (Program memory 程序存储器) (Data memory 数据存储器) (Accumulator 累加器) (Arithmetic and logic unit 算术逻 辑单元) – STATUS (Status register 状态寄存器) – STACK (Stack register 堆栈寄存器)
逻辑或指令
OR A,[m]
指令说明:
RAM ALU Shifter
ACC “OR” [m]
ACC
影响标志:Z
ORM A,[m]
指令说明:
RAM ALU Shifter
ACC“OR”[m]
ACC
影响标志:Z
OR A,X
指令说明:
ROM ALU Shifter ACC“OR”X
ACC
影响标志:Z
DEC [m]
指令说明:
RAM ALU Shifter
[m]-1
影响标志:Z
DECA [m]
指令说明:
RAM ALU Shifter
[m]-1
ACC
影响标志:Z
〈例〉
RAM STATUS

INC [90H]
55H 1EH 00H
ACC
INCA [90H]

DEC [91H]
FEH FFH
80H
81H
12H
77H 34H
C AC Z OV PD TO -

51单片机查表指令

51单片机查表指令

51单片机查表指令根据存放在ROM中数据表格的项数来查找和它对应的表中值。

专门的查表指令:MOVC A,@A+DPTRMOVC A,@A+PC------------------------------------------------------------------------------------------MOVC A,@A+DPTR执行过程:查表前要把数据表格起始地址放入DPTR,然后把要求查表的项数折算成相对数据表地址的的偏移量送入累加器A最后使用MOVC A,@A+DPTR可实现64KB地址范围内的数据查询。

MOVC A,@A+PC执行过程:1:利用传送指令把所查数据表格的项数送入累加器A2:使用ADD A,#data指令对累加器A进行修正。

Data值的确定公式:PC+data=数据表起始地址DTAB其中PC是查表指令的下一条指令码的起始地址所以data值等于查表指令和数据表存放初始地址之间的字节数。

3:利用MOVC A,@A+PC来完成查表只能实现256字节范围内的数据查询例:查表程序已知BLOCK1为起始的数据块(数据块长度在LEN单元),数块中每个存储单元中的高,低4位分别是两个十六进制数,请编程把他们转换成相应的ASCII码,并存放在BLOCK2开始的连续存储单元(低四位ASCII 码在前,高四位ASCII码在后)程序实例:ORG1000HLEN DATA30H;块长度BLOCK1DATA31H;源起始位置BLOCK2DATA51H;目标起始位置MOV R0,#BLOCK1;BLOCK1送R0MOV R1,#BLOCK2;BLOCK2送R1MOVA,@R0;取源数据块的数ANL A,#0FH;取与运算,得到后四位ADD A,#11H;第一次地址调整0x11=1+1+1+2+2+1+1+1+1+1+3+2就是17个字节MOVCA,@A+PCMOV@R1,A;存放第一次转换结果1BMOV A,@R0;重新取出被转换数1BSWAP A;高低四位交换1BANL A,#0FH;取低四位2BADD A,#09H;9=1+1+1+1+3+22B;第二次地址调位置调整的算法。

plc查表指令的运用

plc查表指令的运用

plc查表指令的运用摘要:1.PLC 概述2.PLC 的查表指令3.查表指令的应用实例4.查表指令的优点和局限性正文:一、PLC 概述可编程逻辑控制器(PLC)是一种数字计算机,用于控制机器或工厂的自动化过程。

它们被广泛应用于各种工业领域,如制造、物流、电力和化学工程等。

PLC 可以执行各种任务,如控制机械臂、监控生产流程和调节温度等。

二、PLC 的查表指令PLC 的查表指令是一种控制指令,用于根据给定的输入值从表格中查找相应的输出值。

这种指令在PLC 编程中非常常见,因为它允许程序员根据实际情况灵活地调整控制策略。

三、查表指令的应用实例假设有一个生产自动化系统,需要根据不同的生产阶段控制电机的转速。

在这种情况下,可以使用PLC 的查表指令来实现这个功能。

具体步骤如下:1.创建一个表格,其中包含输入值(如生产阶段)和相应的输出值(如电机转速)。

2.在PLC 程序中编写查表指令,并将表格输入到指令中。

3.根据生产阶段的输入值,查表指令会自动从表格中找到对应的电机转速输出值,并将其传递给控制系统。

四、查表指令的优点和局限性查表指令的优点包括:1.灵活性:根据实际需求,程序员可以方便地调整表格中的输入值和输出值,从而实现不同的控制策略。

2.易于维护:如果需要更改控制策略,只需修改表格中的数据即可,无需修改PLC 程序。

然而,查表指令也存在一些局限性:1.计算速度:查表指令需要访问存储器中的表格数据,因此可能会影响计算速度。

2.表格大小:如果表格较大,可能会导致程序运行时间较长,从而影响PLC 的响应速度。

综上所述,PLC 的查表指令是一种非常实用的控制指令,可以实现灵活的控制策略。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

TABRDC ACC
; ACC=34H, TBLH=12H
JMP $
ORG 60H DC 1234H,3567H END
; TABLE(THE LONGTH OF WORD IN HT48C10 IS 14.)
注:下表为各个型号单片机对应字长以及数据大小范围
单片机型号
字长
HT48R10A-1
14
HT48R30A-1
MOV TBLP,A
; TBLP=60H (POINTOR)
TABRDC ACC
; ACC=34H
NOP
; NOP FOR WATCHING THE LOW BYTE
MOV A,TBLH NOP ... ORG 60H DC 1234H,3567H ...
HT MCU 查表指令的使用
; ACC=12H ; NOP FOR WATCHING THE HIGH BYTE
HT48R10A-1
300H~3FFH
HT48R30A-1
700H~7FFH
HT48R50A-1
F00H~FFFH
HT48R70A-1
1F00H~1FFFH
<例 3> 这个例子同样适用于所有的单片机(此处为 HT48R10A-1)。
CODE .SECTION AT 0 ‘CODE’
ORG 0
JMP START
DC 1277H,3567H END
; TABLE
HT MCU 查表指令的使用
注意: 本例用的是 HT48R10A-1 单片机。由于各款单片机 ROM 大小不同,最后页的位置也不同, 把表格定义到最后页一定要知道最后一页的起始地址。
下表为各个型号单片机(48 系列)最后页的地址范围:
单片机型号
最后页地址范围
JMP $
; TBLP=00H (POINTER OR LOW POINTER) ; ACC=77H ; NOP FOR WATCHING THE LOW BYTE ; ACC=12H ; NOP FOR WATCHING THE HIGH BYTE
ORG 300H
; THE FIRST ADDRESS OF LAST PAGE
TABRDC ACC
; ACC=45H
NOP
; NOP FOR WATCHING THE LOW BYTE
MOV A,TBLH
; ACC=23H
NOP
; NOP FOR WATCHING THE HIGH BYTE
JMP $
CODE1 .SECTION AT 0H ‘CODE’
ORG 1C00H
DW 1234H,2345H
在无 TBHP 寄存器的单片机中,使用这两条指令之前,只需给 TBLP 赋值;在有 TBHP 寄存器 的单片机中,使用 TABRDC [m] 之前,还需给 TBHP 赋值,使用 TABRDL [m] 时,TBHP 默认为 最后一个 PAGE 的首址高位。
通过查表,表格的低位字节送入 [m] ,高位字节送入 TBLH 。由于 TBLH 只读,故要妥善解 决在主程序中和在中断服务子程序中同时查表的问题。为了避免这种情况,除避免在主程序和中断 程序中同时查表、主程序中查表时关中断(查完再开)外,有时还可用 RET A,X 指令来实现查表 的功能。
ORG 4
RETI
START:
MOV A,1
; ACC IS A POINTER TO THE DATA IN TABLE
CALL TABLE
; SIMULATE READING TABLE
NOP
; ACC=77H
JMP $
TABLE: ADDM RET RET RET RET
END
A,PCL A,61H A,77H A,98H A,18H
A,PCL A,61H A,77H A,98H A,18H
; JUMP TO THE DATA ; RET,ACC=61H ; RET,ACC=77H ; RET,ACC=98H ; RET,ACC=18H
注意:由于 PCL 不能做跨页跳跃,所以要保证 TABLE 子程序在同一 PAGE 中,即在执行指令 ADDM A,PCL 时,不能出现进位现象,否则程序会出错。另外,用这种方法查表,每次只能返回一个字节。
TABRDL ACC
; ACC=77H
NOP
; NOP FOR WATCHING THE LOW BYTE
MOV A,TBLH
; ACC=12H
NOP
; NOP FOR WATCHING THE HIGH BYTE
...
ORG XXXXH
; THE FIRST ADDRESS OF LAST PAGE
ROMBANK 1 CODE1
CODE0 .SECTION AT 0H ‘CODE’
ORG 0000H
JMP START
ORG 0020H
START:
MOV A,3CH
MOV TBHP,A
; TBHP=3CH (HIGH POINTER)
MOV A,01H
MOV TBLP,A
; TBLP=01H (LOW POINTER)
...
CODE1 .SECTION AT 0H ‘CODE’
...
ORG 1C00H
DW 1234H,2345H
; TABLE
... c. TABRDL [m]指令的使用(查 ROM 中最后一页的数据)。
例如:
...Biblioteka MOV A,00HMOV TBLP,A
; TBLP=00H (POINTER OR LOW POINTER)
; TABLE
END
<例 2> 适用于所有的单片机(此处为 HT48R10A-1)
#INCLUDE HT48R10A-1.INC CODE .SECTION AT 0 ‘CODE’
ORG 000H JMP START ORG 004H RETI START: MOV A,00H MOV TBLP,A TABRDL ACC NOP MOV A,TBLH NOP
DC 1277H,3567H
; TABLE
...
3、RET A,X 指令的使用(程序从子程序返回,并将立即数送到累加器中)
例如: ... MOV A,1 CALL TABLE NOP ... TABLE: ADDM RET RET RET RET
HT MCU 查表指令的使用
; ACC IS A POINTER TO THE DATA IN TABLE ; SIMULATE READING TABLE ; ACC=77H
; JUMP TO THE DATA ; RET,ACC=61H ; RET,ACC=77H ; RET,ACC=98H ; RET,ACC=18H
<例 1_1> 适用于无 TBHP 寄存器的单片机(此处为 HT48R10A-1)
#INCLUDE HT48R10A-1.INC
CODE .SECTION AT 0 ‘CODE’
ORG 000H
JMP START
ORG 004H
RETI
START:
MOV A, 60H
MOV TBLP,A
; TBLP =60H (POINTER)
MOV A,01H
MOV TBLP,A
; TBLP=01H (LOW POINTER)
TABRDC ACC
; ACC=45H
NOP
; NOP FOR WATCHING THE LOW BYTE
MOV A,TBLH
; ACC=23H
NOP
; NOP FOR WATCHING THE HIGH BYTE
本文将介绍如何使用上述提及的三个查表指令。
使 用:
1、 TABRDC [m]指令的使用 a. 在无 TBHP 寄存器的单片机中,用于查表格当前页的数据(哪怕该指令在当前页的最后)。 例如:
#INCLUDE HT48R10A-1.INC
CODE .SECTION AT 000H ‘CODE’
...
MOV A,60H
单片机 ROM 中的任何区域都可以用来当表查(不管该区域存放的是程序,还是真正的表格,都 可以当表格来查)。Holtek 单片机提供了两个用于查表的指令:TABRDC [m] 和 TABRDL [m]。 其中的[m],可以为 ACCUMULATOR、REGISTOR 或 DATA MEMORY。
对于核内无供程序直接访问的 TBHP 寄存器的单片机(以下简称“无 TBHP 寄存器的单片机”, 如 HT48 系列)而言,TABRDC[m] 指令用于查当前页的数据;对于核内有供程序直接访问的 TBHP 寄存器的单片机(以下简称“有 TBHP 寄存器的单片机”,如 HTG21X0 系列)而言,该指令无当前 页的限制,可以查整个 ROM 的数据。无论对于哪种单片机,TABRDL [m] 指令只能用于查 ROM 中 最后一个 PAGE 的数据。
文件编码:HA0007s
HT MCU 查表指令的使用
HT MCU 查表指令的使用
介 绍: 在讨论查表指令该如何使用之前,先介绍一下程序存储器(ROM)空间的划分。Holtek 各系列
单片机的 ROM 空间是按页(PAGE)来划分的,一页为 256 个字(WORD),即 512 个字节(BYTE)。 这样,整个 ROM 空间正好划分为若干个连续的页。当前页是针对某一特定的程序指令而言的,指该 指令在 ROM 中所处的页,最后页是指 ROM 的最后一页。另外,有些存储空间较大的单片机(如 HTG21X0 系列),还将每 8K 的字空间划分为一个 BANK(即 32 个页),而且整个 ROM 空间正好为 若干个 BANK。
相关文档
最新文档