MCU查表指令的使用
- 格式:pdf
- 大小:73.88 KB
- 文档页数:5
下面是汇编语言实现楼宇对讲功能的查表实例:当单片机外部系统发来不同的指令时,便启动查表功能,实现不同的操作,如单片机接收到的指令保存在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查表指令的优势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中。
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中去。
指令定义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. 在外部设备端,接收来自单片机的字表信息,并根据需求进行相应的处理和显示。
需要注意的是,以上步骤的具体实现会根据单片机型号、编程语言和通信协议的不同而有所差异。
因此,您需要参考相关的单片机文档、开发环境和通信协议的规范来进行具体的编程和配置。
此外,如果您对特定的单片机和应用有进一步的需求,建议查阅相关的单片机资料和示例代码,或者咨询专业的嵌入式系统工程师进行具体的指导和支持。
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查表指令的运用摘要:1.PLC 概述2.PLC 的查表指令3.查表指令的应用实例4.查表指令的优点和局限性正文:一、PLC 概述可编程逻辑控制器(PLC)是一种数字计算机,用于控制机器或工厂的自动化过程。
它们被广泛应用于各种工业领域,如制造、物流、电力和化学工程等。
PLC 可以执行各种任务,如控制机械臂、监控生产流程和调节温度等。
二、PLC 的查表指令PLC 的查表指令是一种控制指令,用于根据给定的输入值从表格中查找相应的输出值。
这种指令在PLC 编程中非常常见,因为它允许程序员根据实际情况灵活地调整控制策略。
三、查表指令的应用实例假设有一个生产自动化系统,需要根据不同的生产阶段控制电机的转速。
在这种情况下,可以使用PLC 的查表指令来实现这个功能。
具体步骤如下:1.创建一个表格,其中包含输入值(如生产阶段)和相应的输出值(如电机转速)。
2.在PLC 程序中编写查表指令,并将表格输入到指令中。
3.根据生产阶段的输入值,查表指令会自动从表格中找到对应的电机转速输出值,并将其传递给控制系统。
四、查表指令的优点和局限性查表指令的优点包括:1.灵活性:根据实际需求,程序员可以方便地调整表格中的输入值和输出值,从而实现不同的控制策略。
2.易于维护:如果需要更改控制策略,只需修改表格中的数据即可,无需修改PLC 程序。
然而,查表指令也存在一些局限性:1.计算速度:查表指令需要访问存储器中的表格数据,因此可能会影响计算速度。
2.表格大小:如果表格较大,可能会导致程序运行时间较长,从而影响PLC 的响应速度。
综上所述,PLC 的查表指令是一种非常实用的控制指令,可以实现灵活的控制策略。