文章首页 | 基础入门 | 电路原理图 | 婵⿴鍨伴懜浼村炊閹呮澖濞撴熬鎷� | PLC闁糕晞娅i、锟�   闁靛棗锕ら々褔寮稿⿰鍐╃仒婵炲棎鍨哄﹢鎵博濞嗘瑧绀夐悹鍥敱鐎碉拷 Ctrl+D 闁归潧顑呮慨鈺呭绩閹増顥戦柨娑楃劍閸斿懐鎷姀鈥充憾闁汇劌瀚弫顕€骞愭担纰樺亾閿燂拷濞戞挴鍋撻悹褍鍢查鐔哥▕閻樿京顏遍悹褏鏌夌换妯侯潰閵夘垳绀夐柣銏ゆ涧閻℃瑥顕i埀顒勫矗閹寸姴绔炬繛鍡愬灱缁诲骞冮…鎺旂<.

电子开发网

电子开发网电子设计 | 电子开发网Rss 2.0 会员中心 会员注册

闁宠棄鎳愰弫鍝ユ崉椤栨艾褰嗙€殿喖绻戞晶婊堝礃瀹€瀣闁哄牃鍋撻柡鍌涘婢ф濡存繝鍕毄閻庢稒鍔楅弫鍝ユ崉椤栨艾褰嗙€殿喖绻楅鍝ョ不濡も偓濞呮帡濡寸€e墎绀夐柣顫祷閻箖宕楅鈧槐锟犲蓟閵夘煈鍤勯柟闈涱儏閸烇拷 闁活澀绲婚惌楣冨礂椤掆偓缁憋紕鎷嬮敍鍕毈闁革絻鍔婇埀顒佸姉閺佸摜鈧稒鍔掔划鐘崇▔濮橆偅鐪介柛娑櫭换鈧璺烘处婢ф粓宕樼仦鐑╁亾閿燂拷
闁宠棄妫楀畷鍕緞閳轰緡鍔呭ù鍏艰壘瀹曠喖鎮ч崶銊︾皻閻庡湱鍋樼欢锟�100 c閻犲浂鍙€閳伙拷 chm闁哄秶鍘х槐锟犲Υ閸屾繄銈柡鍌涚懃閸炲鈧湱顢婇娑氱磼閸☆厾绀夐悷鏇炴濞插﹥绗熺€n亞鎽嶅鑸电啲缁辨繈宕橀崨顓у晣妤犵偠锟ラ埀顒佸姉閺佸摜鈧稒鍔掔划鐘崇▔濮橆偅鐪介柛娑櫭换鈧璺烘处婢ф粓宕樼仦鐑╁亾閿燂拷
搜索: 您现在的位置: 电子开发网 >> 电子开发 >> 嵌入式系统 >> ARM >> 正文

ARM汇编伪指令详解

作者:佚名    文章来源:本站原创    点击数:3365    更新时间:2008-11-28

ARM汇编程序分析过程中,比较难理解的是他的伪操作、宏指令和伪指令。在读vivi时遇到很多不懂的,所以在此对引导程序中出现伪操作、宏指令和伪指令进行总结,

 

*****************************************************
    一、GET option.s

 

// GET和INCLUDE功能相同
功能:引进一个被编译过的文件。
格式:GET    filename
其中:fiename    汇编时引入的文件名,可以有路径名。
    GET符号在汇编时对宏定义,EQU符号以及存储映射时是很有用的,在引入文件汇编完以后,汇编将从GET符号后开始。在被引入的文件中可能有GET符号再引入其他的文件。GET符号不能用来引入目标文件。

 

*****************************************************
    二、INTPND EQU 0x01e00004

 

//EQU可以用“*”代替,在阅读源程序时注意。
功能:对一个数字常量赋予一个符号名。
格式:name    EQU   expression
其中:name   符号名。Expression    寄存器相关或者程序相关的固定值。
    使用EQU定义常量,与C语言中用#define定义一个常量相同。
例:num   EQU   2    ; 数字2赋予符号num

 

*****************************************************
    三、GBLL    THUMBCODE
        [ {CONFIG} = 16
            THUMBCODE SETL {TRUE}
            CODE32
        | 
            THUMBCODE SETL {FALSE}
        ]

        [ THUMBCODE
            CODE32   ;for start-up code for Thumb mode
        ]

 

//其中[=IF ,|=ELSE ,]= ENDIF, CODE32 表明一下操作都在ARM状态。这些都是伪操作这段理解为设定THUMCODE的值,然后确定,用户的程序是在ARM状态还是THUM状态。

*****************************************************
    四、MACRO


        $HandlerLabel HANDLER $HandleLabel
        $HandlerLabel
        sub sp,sp,#4 ;decrement sp(to store jump address)
        stmfd sp!,{r0} ;PUSH the work register to stack
        ldr r0,=$HandleLabel;load the address of HandleXXX to r0
        ldr r0,[r0] ;load the contents(service routine start address) of HandleXXX
        str r0,[sp,#4] ;store the contents(ISR) of HandleXXX to stack
        ldmfd sp!,{r0,pc} ;POP the work register and pc(jump to ISR)
        MEND

 

//MACRO……MEND
功能:标志一下宏的定义。
格式:MACRO
     Macro_prototype
     MEND
宏表达式的格式如下:
{$label}   macroname    {$ parameter{,parameter2}…}
其中:
$ label   参数,在宏使用时,被给定的符号替代。
Macroname   宏的名称,并不一定以一条指令或者符号名开始。
$parameter    在宏使用时,被替代的参数,格式为:$parameter=“default value”
   在宏体中,参数如:$parameter和变量一样使用,在被宏引用时,被赋于新值,参数必须用“$”符号加于区别。$label在宏定义内部符号 时很有用,可以看作宏的参数。使用“|”符号作为使用一个参数缺省值的变量,如果使用的是一个空格符串,将省去该变量。在使用内部标志的宏定义中,将内部 标志定义为带后缀的标志,将会很有用。如果在扩展中空间不够,可以作为参数和后继文字之间或者参数之间使用圆点隔开,但在文本和后继参数之间不能使用圆点。宏可以定义局部变量的范围。宏还可以嵌套使用。
例:
MACRO
$label    xmac    $p1,$p2
          LCLS   err
$labell,loopl
          BGE    $pl
$labell,loop2
          BL     $p1
          BEG      $p1
          BEG      $labell,loop2
MEND

 

*****************************************************
    五、$和$$

 

//$临时变量替换,若程序中需要用字符$则用$$来表示,通常情况下,包含在两个||之间的$并不表示进行变量替换,但是如果|线是在双引号内,则将进行变量替换。用“.”来分割出变量名的用法,
 GBLS STR1
 GBLS STR2
STR1 SETS "AAA"
STR2 SETS "BBB$$STR1.CCC"  //汇编后STR2的值为bbAAACCC

 

*****************************************************
    六、 IMPORT  Main    ; The main entry of mon program

 

//该伪操作告诉编译器当前的符号不是在本文件中定义的,在本源文件中可能引用该符号,而不论该源文件是否使用该符号,该符号都将被加入到本源文件中。
格式:
IMPORT symbol {[WEAK]}
    symbol 引用的符号的名称,他是区分大小写的,[WEAK]指定这个选项后,如果symbol所在的源文件中没有被定义,编译器也不会报错。他和EXTERN作用相同,不同之处在于,如果本源文件没有实际引用该符号,该符号将不会被加入到本源文件的符号表中。


*****************************************************
    七、AREA    Init,CODE,READONLY
       ENTRY

 

//功能:指示汇编器汇编一段新的代码或新的数据区。
格式:

name  给出的特定段名。以数字开头,必须加竖线,否则,将报错,例如:|1_Data-Area|。某些名字已保留,如:|C$$code|已经被C编译器用作代码,或者用作与C库相连的代码段。
Attr    段名属性,下列属性是有效的:
ALIGN=expression
缺省状态下,AOF段将按4个字节对准,expression可以是2~31之间的整数,该段将按2(上标为expression)字节对准。例如,espression等于

10,该段将按1KB对准。

 

CODE        特定机器指令,缺省为READONLY。
COMDEF      通用段定义。该AOF段可能包括代码和数据,但必须与其他段名相区别。
COMMON      通用数据段,无须再注释定义任何代码和数据,通常由链接器初始化为零。
DATA        包含数据,但是不包含指令,缺省为READWRITE
INTERWORK   表明代码段可以适用ARM/Thumb interworking功能。
NOINIT      表明数据段可以初始化为零,只包含指示符。
PIC         表明定位独立段,可以不修改情况下,在任意地址执行。
READONLY    表明该段可读可写。

 

 汇编时,必须至少有一个AREA指示符。使用AREA符号可以将源程序区分,但是必须不重名。通常需要独立的AOF段做为代码或者数据段,较大程序 可以分为多个代码段。AOF段可以定义局部标签的范围,可以使用ROUT符号。如果没有任何的AREA指示符定义,汇编器将会产生名为|$$$$$$$| 的AOF段和一条诊断信息,将限制由于缺少指示符而产生的错误信息,但是并不一定会成功汇编。

 

*****************************************************
    八、LTORG

 

//LTORG是在此指令出现的地方放一个文本池(literal pool). 在ARM汇编中常用到
    ldr   r0, =instruction     将地址instruction载入r0
    此时编译器将ldr尽可能的转变成mov或mvn指令。 如果转变不成, 将产生一个ldr指令,通过pc相对地址从一块保存常数的内存区读出instruction的值。此内存区既是文本池。一般的, 文本池放在END指令之后的地方。但是, 如果偏移地址大于4k空间, ldr指令会出错(因为ldr的相对偏移地址为12-bit的值). 此时使用LTORG放到会出错的ldr指令附近,以解决此问题。编译器会收集没有分配的ldr的值放到此文本池中

。所以必须在LDR指令前后4KB的范围内用LTORG显式地在代码段中添加一个文字池。

 

*****************************************************
    九、LDR r0,=WTCON ;watch dog disable
      LDR r1,=0x0

 

功能:将一个32位常量或地址读取至寄存器。
格式:
LDR{condition} register,=[expression|Label-expression]
其中:
condition             可选的条件代码。
register              读取的寄存器。
expression            数字常量:
    如果该数字常量在MOV或MVN指令的范围中,汇编器会产生合适的指令;
    如果该数字量不在MOV或MVN指令的范围中,汇编器把该常量于程序后,用程序相关的LDR伪指令读取,PC与该常量的偏移量不得超过4KB。
Label-expression      程序相关的或外部的表达式。汇编器将其存放在程序后的常量库(称为文字池(literal pool))中,用程序相关的LDR伪指令读取,PC与与该常量的偏移量不得超过4KB。

LDR伪指令的使用有两个目的:
     对于不能被MOV和MVN指令所读取的立即数,将其变成常量,进行读取。
     将一个程序相关的或外部的表达式读取进寄存器中。
例:
LDR  R1, =0xfff
LDR  R2, =place

 

*****************************************************
    十、DCD 0x11110090

 ;Bank0=OM[1:0], Bank1~Bank7=16bit, bank2=8bit;

 

//DCD或“&”
功能: 分配一个或多个字,从4个字节边界开始。
格式:
{label}DCD  expression{,expression}…
其中:
expression    可以是:
一个数学表达式;
一个程序相关的表达式。

 如果在Thumb代码中,使用DCD符号定义带标志的数据时则必须使用DATA符号。
    按4个字节对准时,DCD符号会在第一个字节之前插入3个字节的空字符,如果无须对准的话,可以使用DCDU符号。
例:
datal   DCD    1,5,20
data2   DCD    mem06
data3    DCD  glb+4

 

*****************************************************
    十一、ALIGN

 

//功能:从1个字边界开始。
格式:
ALIGN  {expression  {,offset-expression} }
其中:
    expression    2(上标为0)到2(上标为31)之间的任意数幂,当前按2(上标为n)字节对准,如果该参数没有指定,ALIGN将按字对准。
    Offset-expression  定义expression指定的对准方式的字节偏移量。

 使用ALIGN符号,保证程序正确对准。对于Thumb地址,使用ALIGN符号保证其按字对准,例如:ADR  Thuub伪指令只能读取字对准的地址。
    在代码段出现数据定义符时,使用ALIGE符号。当在代码段使用数据定义符(DCB,DCW,DCWU,DCDU和%),程序计数器PC并不一定按字对准。

 汇编器会在下一条指令时插入3个字节,保证:
    ARM状态下按字对准;
    Thumb状态下按半字对准。
    在Thumb状态下,可以使用ALIGN2对Thumb代码按半字对准。
    使用ALIGN状态下,还可以充分利用一些ARM处理器的Cache,例如,ARM940T有一个每行4字的Cache,使用ALIGN16按16字节对准,从而最大限度使用Cache。

 

*****************************************************
    十二、^ _ISR_STARTADDRESS

 

//MAP与"^"
    MAP用于定义一个结构化的内存表(StorageMAP)的首地址。此时,内存表的位置计数器{VAR}(汇编器的内置变量)设置成该地址值。MAP可以用”^”代替。
语法:MAP  expr {,base-register}
    其中,expr为数字表达式或者是程序中已经定义过的标号。Base-register为一个寄存器。当指令中没有Base-register时, expr为结构化内存表的首地址。此时,内存表的位置计数器{VAR}设置成该地址值。当指令中包含这一项时,结构化内存表的首地址为expr和Base -register寄存器内容的和。
使用说明:MAP伪操作和FIELD伪操作配合使用来定义结构化的内存表结构。

举例:MAP伪操作
MAP  fun  ;fun就是内存表的首地址
MAP   0x100,R9  ;内存表的首地址为 R9+0x100

 

*****************************************************
     十三、HandleReset # 4
        HandleUndef # 4
        HandleSWI # 4

 

//FIELD和"#"
FIELD 用于定义一个结构化的内存表中的数据域。FIELD 可用“#”代替。
语法:{label} FIELD expr
其中:{label}为可选的。当指令中包含这一项时,label的值为当前内存表的位置计数器{VAR}的值。汇编编译器处理了这条FIELD伪操作后。

内存表计数器的值将加上expr.expr表示本数据域在内存中所占的字节数。

使用说明:MAP伪操作和FIELD伪操作配合使用来定义结构化的内存表结构。MAP伪操作定义内存表的首地址。FIELD伪操作定义内存表的数据域的字节长度,并可以为每一格数据域指定一个标号,其他指令可以引用该标号。

MAP伪操作中的Base-registe寄存器值队以其后所有FIELD伪操作定义的数据域是默认使用的,直到遇到新的包含Base-registe项的MAP伪操作需要特别注意的是,MAP伪操作和FIELD伪操作仅仅是定义数据结构,他们并不实际分配内存单元。由MAP伪操作和FIELD伪操作配合 定义的内存表有3种:基于绝对地址的内存表,基于相对地址的内存表和基于PC的内存表。

举例:基于绝对地址的内存表

 用伪操作序列定义一个内存表,其首地址为固定的地址8192(0X2000),该内存表中包括5个数据域。  

    Consta长度为4个字节;constb长为4个字节,x长为8字节;y长为8字节;string长为16字节。这种内存表成为基于绝对地址的内存表。

MAP  8192 ; //内存表的首地址8192(0x2000)
Consta FIELD 4 ; //consta 长为4字节,相对位置为0
Constb FIELD 4; //constb长为4字节,相对位置为4
X   FIELD  8; // X长为8字节,相对位置为8
Y    FIELD 8; // y长为8字节,相对位置为16
String FIELD 16 ;// String为16字节,相对位置为24

在指令中,可以这样引用内存表中的数据域;

LDR R0,consta; //将consta地址处对应内存加载到R0上面的指令仅仅可以访问LDR指令前后4KB地址范围的数据域。

举例:相对绝对地址的内存表

 下面的伪操作序列定义一个内存表,其首地址为0与R9寄存器值得和,该内存表中包含5个数据域。这种表称为相对地址的内存表。

MAP 0,R9;//内存表的首地址寄存器R9的值
Consta FIELD 4 ; //consta 长为4字节,相对位置为0
Constb FIELD 4; //constb长为4字节,相对位置为4
X   FIELD  8; // X长为8字节,相对位置为8
Y    FIELD 8; // y长为8字节,相对位置为16
String FIELD 16;// String为16字节,相对位置为24

可以通过下面的指令访问地址范围超过4KB的数据;

ADR  R9, Field ;  //伪指令
LDR  R5,Constb;//相当于LDR R5,[R9,#4]

 在这里,内存表中的数据都是相对于R9寄存器的内容,而不是相对于一个固定的地址。通过在LDR中指定不同的基址寄存器的值,定义的内存表结构可以在程序中有多个实例。可多次使用LDR指令,用以实现不同的程序实例。

举例:基于PC的内存表

Data   SPACE 100 ; //分配100字节的内存单元,并初始化为0
MAP Data;//内存表的首地址为Datastruc内存单元
Consta FIELD 4 ; //consta 长为4字节,相对位置为0
Constb FIELD 4; //constb长为4字节,相对位置为4
X   FIELD  8; // X长为8字节,相对位置为8
Y    FIELD 8; // y长为8字节,相对位置为16
String FIELD 16;// String为16字节,相对位置为24

可以通过下面的指令访问范围不超过4kb的数据;

LDR R5,constb ;相当于 LDR R5,[PC,offset]


Tags:ARM,汇编,伪指令  
责任编辑:admin
  • 上一篇文章:
  • 下一篇文章:
  • 请文明参与讨论,禁止漫骂攻击,不要恶意评论、违禁词语。 昵称:
    1分 2分 3分 4分 5分

    还可以输入 200 个字
    [ 查看全部 ] 网友评论
        没有任何评论
    闁汇垽娼ч悺娆忣嚕閳ь剟宕i幋鐘电Ч闁挎稒纰嶉惇褰掓⒖閸℃瑦鍋呴柛姘墕閹洨鐚鹃懡銈嗘毄閻庢稒鍔曢崺妤佹媴濠娾偓缁楀矂鎮芥担鍐唴闁搞儱澧藉▓鎴犵磾閹寸姷褰查柨娑橆唹lc鐎规悶鍎茬敮鍫曞箮閳ь剟寮甸敓锟�,婵☆垽绱曢弫鎼佸极閹殿喗鏆╅柣顓滃劥閻︼拷,闁告娲滄晶鏍嫉缁″膊A缂佹稑顦遍悺鎴︽晬娴h棄鐤柦鈧崘顏呮毄閻犱警鍨板ù妯肩磾閹寸姷褰茬紒顔藉劤瀹曟洟鏁嶇仦鑹扮鐎规悶鍎抽埢鑲╂暜閸繂鐏¢梺顐ゅС閻滎垶宕愮粭琛″亾閸屾侗鍋ㄩ弶鈺侀閸櫻冣枖閵娿儰绨冲ǎ鍥b偓鍐插絾濞村吋顨呰ぐ鍧楁晬濮樿鲸鏆╅悗娑欏姇缁辨垿宕i幋鐘电Ч闁挎冻鎷�
    最新推荐
    閻犙冨閺嬶繝宕犻崨顒傜憮閺夌儑鎷�
     [闂傚倸鍊风粈渚€骞夐敓鐘偓鍐幢濡炴洖鎼オ浼村礋椤掍胶褰块梻浣告惈缁嬩線宕㈤懖鈹惧亾濮橆剦妲搁摶鏍煥閺囨氨鍔嶇痪顓炵埣閺屾洟宕奸顫枈闂佸搫鐭夌换婵嗙暦閹烘鏅滈柦妯侯樈娴硷拷]闂傚倸鍊风粈渚€骞夐敓鐘参﹂柣鎰暩閻棗銆掑锝呬壕婵犵鈧磭浠涚€垫澘瀚禒锔剧矙婢剁ǹ顥氭繝鐢靛仦閸ㄧ數澹曢鐘愁潟闁规鍠氱壕濂告煕濞嗘兎顏勭暤閸℃瑢鍋撶憴鍕┛缂佺粯绻傞锝夊箻椤旇棄浜归悗鐟板閸犳袙閸儲鈷掑ù锝呮啞閹牓鏌eΔ鈧Λ婵嬬嵁閺嶎収鏁冮柨鏃囨娴犻箖姊洪崨濠冨闁告挻鐩幃鐤亹閹烘挾鍙嗛梺缁樻礀閸婂湱鈧熬鎷�100 c闂傚倷娴囧畷鍨叏閺夋嚚褰掑礋椤栨氨顔嗛梺璺ㄥ櫐閹凤拷
     [闂傚倷绀侀幖顐λ囬柆宥呯?闁圭増婢橀崹鍌涖亜閺嶃劌鐒归柡瀣叄閺屾洝绠涚€n亞浼勯柣蹇撶箳閺佸寮婚妸鈺傚亞闁稿本绋戦锟�]濠电姷鏁搁崑鐐哄垂閸洖绠伴柟闂寸蹈閸モ斁鍋撻崷顓炐炲ù婊冩贡缁辨帡鍩€椤掑嫭鍊婚柣顐ゅ█濮婅櫣鎷犻幓鎺濆妷闂佸憡鍔樺畷鐢垫閹炬剚娼╅柛妤冨仜琚i梻浣告啞濞诧箓宕滃☉鈧偓鍛存倻閼恒儱浠梺璇″幗鐢帗淇婃禒瀣厱闁宠桨绀侀埀顒€鐏濋锝夊醇閺囩喎鈧鏌涢埄鍐炬畼濞寸姍鍐f斀闁绘劕寮堕敍宥夋煛娓氬洨鍘�-TR
     [闂傚倸鍊烽悞锕€顪冮崹顕呯唵闁逞屽墰缁辨帡骞撻幒婵堝悑闂佽鍨伴惌鍌炲箖濞嗘搩鏁嗛柛灞诲€栫粊顐︽⒑閼姐倕校濞存粈绮欏畷婵嗩吋婢跺﹥妲梺绋跨灱閸嬬偤宕戦敐鍚ゅ綊鏁愰崶銊ユ畬缂備讲鍋撻柛鎰ㄦ杺娴滄粓鏌熼崹顔碱仾閻庢熬鎷�]LM324闂傚倷绀侀幖顐λ囬锕€鐤炬繝濠傜墕缁€澶愭煛瀹ュ骸骞栨俊顐o耿閺屻劑鎮ら崒娑橆伓4~20mA闂傚倷绀侀幖顐λ囬柆宥呯?闁硅揪绠戠粻顖炴煥閻曞倹瀚�1~5V闂傚倸鍊烽悞锕傛儑瑜版帒鍨傜憸鐗堝笚閸婅埖鎱ㄥΟ澶稿惈闁活厼鐗撻弻銊╂偆閸屾稑顏�
     [闂傚倸鍊烽悞锕€顪冮崹顕呯唵闁逞屽墰缁辨帡骞撻幒婵堝悑闂佽鍨伴惌鍌炲箖濞嗘搩鏁嗛柛灞诲€栫粊顐︽⒑閼姐倕校濞存粈绮欏畷婵嗩吋婢跺﹥妲梺绋跨灱閸嬬偤宕戦敐鍚ゅ綊鏁愰崶銊ユ畬缂備讲鍋撻柛鎰ㄦ杺娴滄粓鏌熼崹顔碱仾閻庢熬鎷�]LM386濠电姷顣槐鏇㈠磻濞戞﹫鑰块弶鍫氭櫅閸ㄦ繃銇勯弽顐沪闁稿﹤鐏氶妵鍕箳瀹ュ洤濡芥繝娈垮灡閹告娊寮婚悢鐓庣闁逛即娼у▓顓烆渻閵堝棙鐓ラ柨鏇ㄤ邯瀵鈽夊⿰鍛澑闂佺懓鐏濋崯顐﹀礈鐠轰警娓婚柕鍫濆暙閸旀粓鏌熼悷鐗堟悙妞ゆ洩缍佹俊鎼佸煛娴h櫣鏆伴柣鐔哥矊椤戝棛绮嬪澶嬫櫜濠㈣泛顑囬崢閬嶆⒑閹稿海绠撻柛鐕佸亝娣囧﹥绺介崨濠備缓濡炪倖鐗撻崐鏍偓姘炬嫹
     [闂傚倸鍊烽悞锕€顪冮崹顕呯唵闁逞屽墰缁辨帡骞撻幒婵堝悑闂佽鍨伴惌鍌炲箖濞嗘搩鏁嗛柛灞诲€栫粊顐︽⒑閼姐倕校濞存粈绮欏畷婵嗩吋婢跺﹥妲梺绋跨灱閸嬬偤宕戦敐鍚ゅ綊鏁愰崶銊ユ畬缂備讲鍋撻柛鎰ㄦ杺娴滄粓鏌熼崹顔碱仾閻庢熬鎷�]936闂傚倸鍊烽懗鍓佸垝椤栨粍鏆滈柟鐑橆殕閺呮繈鏌曢崼婵堝濞存粌缍婇弻鐔虹磼閵忕姵鐏嶉梺绋款儍閸斿矂婀侀梺鎸庣箓閹冲酣寮抽悢鍏肩厽闁哄倹瀵ч崵鍥煛鐏炲墽鈽夐摶锝夋煟閹惧啿顒㈤柣蹇庣窔濮婅櫣鎷犻垾铏亪闂佹寧娲︽禍婊堟偩閻戣棄閱囬柡鍥╁枑濞呫垽姊虹捄銊ユ珢闁瑰嚖鎷�
     [闂傚倸鍊风粈渚€骞夐敓鐘偓鍐幢濡炴洖鎼オ浼村礋椤掍胶褰块梻浣告惈缁嬩線宕㈤懖鈹惧亾濮橆剦妲搁摶鏍煥閺囨氨鍔嶇痪顓炵埣閺屾洟宕奸顫枈闂佸搫鐭夌换婵嗙暦閹烘鏅滈柦妯侯樈娴硷拷]闂傚倷鑳堕崕鐢稿礈濠靛牊鏆滈柟鐑橆殔缁犵娀骞栧ǎ顒€濡介柡鍜佸墴閺岀喖鏌囬敃鈧崢鎾煛鐎n偆澧甸柡灞炬礉缁犳盯濡疯閿涚喖姊洪棃娑氬闁瑰憡濞婇獮鍐亹閹烘挸浠忛柣搴㈢⊕閿氭い蹇ユ嫹+婵犵數濮烽弫鎼佸磻閻愬搫绠伴柟缁㈠枛閻ょ偓绻涢幋鐐茬劰闁稿鎹囬幆鍌炲川婵犲偆浼�+闂傚倸鍊烽懗鍫曘€佹繝鍕濞村吋娼欑壕鍧楁煙缂併垹娅橀柡浣告閺岋綁寮崹顔藉€梺绋块缁夊綊寮诲☉銏犲嵆闁靛ǹ鍎扮花鑽ょ磽娴f彃浜鹃梺璺ㄥ櫐閹凤拷
     [闂傚倸鍊搁崐椋庢閿熺姴纾婚柛娑卞弾濞尖晠鏌曟繛鐐珔闁哄绶氶弻鏇㈠醇濠垫劖效闂佺ǹ顑冮崝鎴濐潖婵犳艾閱囬柣鏃€浜介埀顒佸浮閺岀喖鎸婃径灞澭囨煙椤旀娼愰柟宄版嚇閹兘骞嶉鍛炲┑锛勫亼閸婃牠骞愰幖浣哥疅闁炽儳绻€缂傛碍銇勮箛鎾跺⒈闁轰礁绉电换娑㈠幢濡搫袝闂佺ǹ顑戦幏锟�]S7-200PLC闂傚倸鍊烽悞锕傛儑瑜版帒绀夌€光偓閳ь剟鍩€椤掍礁鍤ù婊呭仱楠炴劙骞掑Δ鈧~鍛存煏閸繃顥滈柛鎾村▕濮婅櫣绱掑Ο鐑╂嫻濠碘€冲级鐢繝鐛箛娑辨晝闁抽攱鑹剧紞濠囧箖椤忓牆宸濇い鏃傗拡娴硷拷 S7_2
     [闂傚倷绀侀幖顐λ囬柆宥呯?闁圭増婢橀崹鍌涖亜閺嶃劌鐒归柡瀣叄閺屾洝绠涚€n亞浼勯柣蹇撶箳閺佸寮婚妸鈺傚亞闁稿本绋戦锟�]S7-200闂傚倷绀佸﹢閬嶅储瑜旈幃娲Ω閳轰胶顔囨繝鐢靛У閼归箖宕欓悩缁樼厱闁硅埇鍔嶅▍鍥ㄣ亜閳哄啫鍘撮柟顔款潐閹峰懘宕ㄦ繝鍛攨缂傚倷璁查崑鎾绘煕閺囥劌鐏¢柣鎾存礋閻擃偊宕舵搴㈠仹闂佸憡蓱缁海妲愰幒妤€绠熼悗锝庡亜椤忥拷,STEP7
     [闂傚倷绀侀幖顐λ囬柆宥呯?闁圭増婢橀崹鍌涖亜閺嶃劌鐒归柡瀣叄閺屾洝绠涚€n亞浼勯柣蹇撶箳閺佸寮婚妸鈺傚亞闁稿本绋戦锟�]ModbusPoll闂傚倸鍊风粈渚€骞夐敍鍕灊鐎光偓閸曞灚鏅㈤梺缁樼墪閻涙矚usSalve闂傚倸鍊烽懗鑸电仚婵°倗濮寸换姗€鐛箛娑欐櫢闁跨噦鎷�
     [闂傚倷绀侀幖顐λ囬柆宥呯?闁圭増婢橀崹鍌涖亜閺嶃劌鐒归柡瀣叄閺屾洝绠涚€n亞浼勯柣蹇撶箳閺佸寮婚妸鈺傚亞闁稿本绋戦锟�]STEP7婵犵數濮烽。钘壩i崨鏉戝瀭妞ゅ繐鐗嗙粈鍫熺節闂堟稓澧愰柛瀣尭椤繈顢橀悩鍐叉珰闂備礁鎼懟顖炴儗娴h櫣涓嶆繛鎴欏灩濡﹢鎮归幁鎺戝闁宠鑻埞鎴︽倷瀹割喖娈舵繝娈垮枙閸楀啿鐣烽幇鏉垮嵆闁绘ê鎼皬闂備浇娉曢崳锕傚箯閿燂拷 Smart_
     [闂傚倷绀侀幖顐λ囬柆宥呯?闁圭増婢橀崹鍌涖亜閺嶃劌鐒归柡瀣叄閺屾洝绠涚€n亞浼勯柣蹇撶箳閺佸寮婚妸鈺傚亞闁稿本绋戦锟�]Modbus闂傚倷娴囧畷鍨叏閹绢噮鏁勯柛娑欐綑閻ゎ噣鏌熼幆鏉啃撻柛搴★攻閵囧嫰寮介妸褏鐓€闂佹悶鍔嶇换鍫ュ蓟濞戙垹绠绘俊銈傚亾闁稿﹨宕甸幉鎾晸閿燂拷 v1.024 缂傚倸鍊搁崐鎼佸磹妞嬪孩顐介柕鍫濐槸缁狀垶鏌ㄩ悤鍌涘
     [闂傚倷绀侀幖顐λ囬柆宥呯?闁圭増婢橀崹鍌涖亜閺嶃劌鐒归柡瀣叄閺屾洝绠涚€n亞浼勯柣蹇撶箳閺佸寮婚妸鈺傚亞闁稿本绋戦锟�]Modscan32闂傚倸鍊风粈渚€骞夐敍鍕灊鐎光偓閸曞灚鏅㈤梺缁樼墪閻涙硞im32,modb
     [闂傚倸鍊烽悞锕€顪冮崹顕呯唵闁逞屽墰缁辨帡骞撻幒婵堝悑闂佽鍨伴惌鍌炲箖濞嗘搩鏁嗛柛灞诲€栫粊顐︽⒑閼姐倕校濞存粈绮欏畷婵嗩吋婢跺﹥妲梺绋跨灱閸嬬偤宕戦敐鍚ゅ綊鏁愰崶銊ユ畬缂備讲鍋撻柛鎰ㄦ杺娴滄粓鏌熼崹顔碱仾閻庢熬鎷�]89c51闂傚倸鍊烽懗鑸电仚缂備胶绮崝娆掓闂備緡鍓欑粔鐢稿磻閻斿摜绠鹃柟瀛樼懃閻忊晜淇婇锝忚€挎慨濠冩そ椤㈡洟鏁愰崶鍓佷紘闂傚倸鍊稿Λ妤冪礊婵犲洤钃熼柨婵嗩樈閺佸倿鏌涢埄鍐炬畷闁绘縿鍨荤槐鎾存媴娴犲鎽甸梺缁樹緱濡叉籍tues
     [闂傚倸鍊烽悞锕€顪冮崹顕呯唵闁逞屽墰缁辨帡骞撻幒婵堝悑闂佽鍨伴惌鍌炲箖濞嗘搩鏁嗛柛灞诲€栫粊顐︽⒑閼姐倕校濞存粈绮欏畷婵嗩吋婢跺﹥妲梺绋跨灱閸嬬偤宕戦敐鍚ゅ綊鏁愰崶銊ユ畬缂備讲鍋撻柛鎰ㄦ杺娴滄粓鏌熼崹顔碱仾閻庢熬鎷�]濠电姷鏁搁崑鐐哄垂閸洖绠扮紒瀣紩濞差亜围濠㈣泛锕﹂ˇ鐗堜繆閵堝繒鍒伴柛鐕佸亰瀹曟帡濡搁埡鍌滃幈闂佺粯鍔栧ḿ娆掆叿otues濠电姷鏁搁崑娑㈩敋椤撶喐鍙忛柟顖嗏偓閺嬫牠鏌¢崶鈺佸壋闁兼澘娼¢弻銊モ槈濡警浼€闂佹椿鍘介悷鈺呭箖濡ゅ懏鏅查幖瀛樼箘閺佹牜绱掗悙顒佺凡缂佸鏁搁幑銏犫攽婵犲孩歇闂備礁鎲″褰掋€冩繝鍥х畺闁靛鏅滈弲鎼佹煥閻曞倹瀚�
     [闂傚倸鍊烽悞锕€顪冮崹顕呯唵闁逞屽墰缁辨帡骞撻幒婵堝悑闂佽鍨伴惌鍌炲箖濞嗘搩鏁嗛柛灞诲€栫粊顐︽⒑閼姐倕校濞存粈绮欏畷婵嗩吋婢跺﹥妲梺绋跨灱閸嬬偤宕戦敐鍚ゅ綊鏁愰崶銊ユ畬缂備讲鍋撻柛鎰ㄦ杺娴滄粓鏌熼崹顔碱仾閻庢熬鎷�]51闂傚倸鍊风粈渚€骞夐敓鐘偓鍐幢濡炴洖鎼オ浼村礋椤掍胶褰块梻浣告惈缁嬩線宕㈤懖鈹惧亾濮橆剦妯€闁哄本绋戦埞鎴﹀幢濡ゅ﹣鎮i梻浣侯潒閸愬灝濮涚紓浣介哺鐢偤鍩€椤掑﹦绉柛鈺傜墱閳ь剚鐔幏锟� protues濠电姷鏁搁崑娑㈩敋椤撶喐鍙忛柟顖嗏偓閺嬫牠鏌¢崶鈺佸壋闁兼澘娼¢弻銊╂偆閸屾稑顏�
    闁哄牃鍋撻柡鍌滃閺嬪啰绮╅敓锟�
    关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 在线帮助 - 文章列表
    返回顶部
    刷新页面
    下到页底
    晶体管查询