迪文科技论坛

 找回密码
 立即注册
搜索
查看: 925|回复: 1

【提问】MODBUS 咨询

[复制链接]
发表于 2021-10-26 11:53:08 | 显示全部楼层 |阅读模式
怎么在 OS MODBUS 后面添加 程序
  1. =================
  2. ;缓充R30-R243   
  3. ;   214 BYTE
  4. ;备份地址 R244
  5. ;备份地址 R245
  6. ;指令序号 R246
  7. ;待接收长 R247
  8. ;发送长度 R248
  9. ;重复次数 R249
  10. ;通讯错误 R250
  11. ;收发标志 R251
  12. ;指令地址 R252
  13. ;指令地址 R253
  14. ;备用R254 255

  15. ;==================
  16.                  ORG         1000H
  17.                  GOTO        Main
  18.                  ORG         1080H
  19. Main:            CALL        ModBus_Ini
  20. Maia:            CALL        Dwin_ModBus_RTU
  21.                  GOTO        Maia
  22. ;==================
  23. ModBus_Ini:      LDWR        R10,0X5AA5    ;0X0088H=5A通讯配置  88L=0XA5 启用通讯
  24.                  LDWR        R12,0XE000    ;0X0089=E000        22号指令起始地址  
  25.                  LDWR        R14,0XFF00    ;0X008AH=255条指令   8AL=00= 模式
  26.                  LDWR        R16,0X0320    ;0X008BH=最多发送5次  8BL=100 延时发送下条
  27.                  LDWR        R18,0X0041    ;0X008CH=01 从机id   8CL=41 4口配置8E1 ?????????????
  28.                  LDWR        R20,0X0540    ;0X0540=19200 波特率 25804800/19200=0540H
  29.                  LDWR        R0, 0X0088
  30.                  MOVXR       R10,0,6
  31. Ini_RET:         NOP
  32.                  RET
  33. ;==================           
  34. Dwin_ModBus_RTU: LDBR        R10,7,1
  35.                  MOVRD       R10,0,1  ;切换到第7组寄存器
  36. 判BUS执行条件:     LDWR        R0,0X0088;0X0088H=0X5A 执行一次配置
  37.                  MOVXR       R10,1,1
  38. 执行一次配置:                 IJNE        R10,0X5A,进入通讯过程
  39.                          LDBR        R10,0X00,1
  40.                          MOVXR       R10,0,1
  41.                          CALL        Ser4_Setup
  42. 进入通讯过程:      IJNE        R11,0XA5,退出通讯过程
  43.                  LDWR        R0,0X008A
  44.                  MOVXR       R10,1,1
  45.                  IJNE        R11,0,1
  46.                  GOTO        执行主RTU模式
  47.                  IJNE        R11,2,2
  48. 执行主RTU模式:     CALL        MOD_S_RTU_GC         
  49.                  GOTO        退出通讯过程;执行MODBUS主机,RTU格式,返回数据中含时钟
  50.                  IJNE        R11,4,退出通讯过程
  51.                  CALL        MOD_L_RTU_GC
  52. 退出通讯过程:      LDBR        R10,0,1
  53.                  MOVRD       R10,0,1   ;切换到第0组寄存器      
  54.                  RET
  55. ;====================
  56. Ser4_Setup:      LDWR        R0,0X008C ;效验+波特率
  57.                  MOVXR       R12,1,2
  58.                  COMSET      R13,0     ;9600   25804800/设置的波特率
  59.                  LDWR        R0,0X008A
  60.                  MOVXR       R10,1,1
  61.                  IJNE        R11,0,1
  62.                  GOTO        SRCSH
  63.                  IJNE        R11,2,SLRR246
  64. SRCSH:           LDWR        R0,0X0089 ;0X0089 22号指令起始地址
  65.                  MOVXR       R252,1,1  ;指令地址 R252
  66. 计算备份地址:      LDWR        R0,0X008A               
  67.                  MOVXR       R11,1,1
  68.                  LDBR        R10,0,1
  69.                  LDWR        R12,8
  70.                  LDBR        R14,0,4
  71.                  SMAC        R10,R12,R14
  72.                  LDBR        R10,0,4
  73.                  MOV         R252,R12,2
  74.                  ADD         R10,R14,R18;指令条数x8+起始地址=R24R25
  75.                  MOV         R24,R244,2 ;R244R245发送后的数据备份地址
  76. SLRR246:         LDBR        R246,0,6                  
  77. Ser4_SetupRET:   NOP                 
  78.                  RET
  79. ;====================
  80. MOD_S_RTU_GC:    IJNE        R251,1,SR进入发送;R251  收发标志
  81.                  CALL        SR当前进入接收状态
  82.                  GOTO        MOD_S_RTU_GCRET
  83. SR进入发送:       CALL        SR进入发送状态
  84. MOD_S_RTU_GCRET: NOP
  85.                  RET
  86. ;====================  
  87. SR进入发送状态:         LDWR        R0,0X008B  ; 8BH=补发次数  8BL=指令间延时x100
  88.                  MOVXR       R10,1,1
  89.                  LDBR        R10,0,1
  90.                  LDWR        R12,100
  91.                  LDBR        R14,0,4
  92.                  SMAC        R10,R12,R14;R16R17=指令间延时x100
  93.                  MOVDR       35,R10,2
  94.                  JU          R10,R16,SR进入发送状态RET  ;延迟未到退出
  95. SR判上次错误:      IJNE        R250,0,SR判重发次数  ;通讯错误 R250 0=OK 1=无应答  2=超时 3=校验错误
  96. SR判发送条件:      CALL        SR判断发送条件是否具备
  97.                  IJNE        R254,1,SR指针+1调整
  98.                          CALL        SR计算接收长度+数据组织
  99.                  GOTO        SR发送过程
  100. SR判重发次数:      LDBR        R10,0,1     ;装载补发次数
  101.                  LDWR        R0,0X008B                 
  102.                  MOVXR       R11,1,1     ;R10R11  = 设定补发次数
  103.                  MOV         R249,R255,1 ;R249    = 实际重发次数
  104.                  LDBR        R254,0,1    ;R254R255= 实际重发次数
  105.                  JU          R254,R10,SR备份数据装载
  106.                  LDBR        R250,1,1
  107.                  LDWR        R0,0X008E                       
  108.                  MOVXR       R10,1,1
  109.                  MOV         R250,R10,1
  110.                  MOVXR       R10,0,1
  111. SR指针+1调整:     CALL        SR指针调整过程
  112.                  GOTO        SR进入发送状态RET
  113. SR备份数据装载:    MOV         R244,R0,2
  114.                  MOV         R248,R9,1
  115.                  LDBR        R8,0,1
  116.                  SHR         R8,2,1
  117.                  INC         R9,0,1
  118.                  MOVXR       R30,1,0    ;装载70字
  119. SR发送过程:       LDBR        R9,1,1
  120. SR发送过R:        RDXLEN      SerNum,R8  
  121.                  IJNE        R8,0,1
  122.                  GOTO        SR发送数据过程
  123.                  RDXDAT      SerNum,R8,R9
  124.                  GOTO        SR发送过R
  125. SR发送数据过程:    COMTXD      SerNum,R30,R248 ;发送长度 R248
  126. SR备份发送数据:    IJNE        R249,0,SR发送结束处理
  127.                  MOV         R244,R0,2
  128.                  MOV         R248,R9,1
  129.                  LDBR        R8,0,1
  130.                  SHR         R8,2,1
  131.                  INC         R9,0,1
  132.                  MOVXR       R30,0,0    ;备份70字
  133. SR发送结束处理:    LDBR        R251,1,1   ;收发标志=1,准备接收
  134.                  INC         R249,0,1   ;R249发送次数+1
  135.                  LDWR        R10,0      ;通信超时清零
  136.                  MOVRD       R10,35,2   ;通信超时清零  T1定时器=0
  137. SR进入发送状态RET: NOP               
  138.                          RET
  139. ;===================                 
  140. SR指针调整过程:    LDBR        R247,0,5   ;实际重发次数R249=0 通讯错误 R250=0 R251=0
  141.                  INC         R246,0,1   ;指令序号 R246+1
  142.                          LDWR        R0,0X008A  ;8AH=配置的指令条数
  143.                  MOVXR       R10,1,1
  144.                  CJNE        R10,R246,SR地址指针+8
  145.                  LDBR        R246,0,1
  146.                  LDWR        R0,0X0089 ;0X0089  22号指令起始地址
  147.                  MOVXR       R252,1,1  ;当前地址 R252
  148.                  GOTO        SR指针调整过程RET
  149. SR地址指针+8:     INC         R252,1,8
  150. SR指针调整过程RET: NOP                 
  151.                  RET
  152. ;==================
  153. SR判断发送条件是否具备:
  154.                          LDBR        R254,0,1   ;这个标志复用
  155.                          MOV         R252,R0,2  ;R252当前地址
  156.                          MOVXR       R10,1,8    ;R10-R21
  157. ;R10=5A R11=ID   R12=CMD R13=Len R14=超时 R15=执行模式 R16R17=备份
  158. ;R18R19=DGUS地址  R20R21=从机地址点表  
  159. SR本条是否启用:    IJNE        R10,0x5A,SR判断发送条件是否具备RET   
  160. SR无条件的执行0:   IJNE        R15,0x00,SR当前页执行1  
  161.                  GOTO        SR通信条件具备               
  162. SR当前页执行1:     IJNE        R15,0x01,SR指定按键值非零2
  163.                  LDWR        R0,0X0014  ;当前页面   
  164.                  MOVXR       R24,1,1
  165.                          CJNE        R24,R16,SR判断发送条件是否具备RET      
  166.                          CJNE        R25,R17,SR判断发送条件是否具备RET
  167.                          GOTO        SR通信条件具备
  168. SR指定按键值非零2: IJNE        R15,0x02,SR06发送完清0模式3;发送后等于0
  169.                  MOV         R252,R0,2             ;当前地址R252
  170.                  INC         R0,1,3                ;指向触发按键
  171.                  MOVXR       R24,1,1
  172.                  MOV         R24,R0,2
  173.                  MOVXR       R24,1,1
  174.                  IJNE        R25,0,1
  175.                  GOTO        SR判断发送条件是否具备RET
  176.                  LDWR        R24,0
  177.                  MOVXR       R24,0,1
  178.                  GOTO        SR通信条件具备
  179. SR06发送完清0模式3:IJNE        R15,0x03,SR变量值发生变化4      
  180.                  IJNE        R12,0x06,SR判断发送条件是否具备RET
  181.                  MOV         R18,R0,2
  182.                  MOVXR       R24,1,1
  183.                  IJNE        R24,0,SR通信条件具备
  184.                  IJNE        R25,0,SR通信条件具备
  185.                  GOTO        SR判断发送条件是否具备RET
  186. SR变量值发生变化4: IJNE        R15,0X04,SR模式5  ;分06 ,10 指令
  187. SR变量值变化05H:  IJNE        R12,0X05,SR变量值变化06H
  188.                  CALL        SR搜寻变化的bit位
  189.                  CJNE        R51,R53,1
  190.                  GOTO        SR判断发送条件是否具备RET        
  191.                  MOVXR       R8,0,1         
  192.                  GOTO        SR通信条件具备
  193. SR变量值变化06H:   IJNE        R12,0x06,SR变量值变化10H  ;06指令
  194.                          MOV         R18,R0,2                ;R18R19=DGUS地址
  195.                          MOVXR       R24,1,1                 ;R24R25=读入变量当前值      
  196.                          MOV         R252,R0,2               ;R252当前执行地址
  197.                          INC         R0,1,3                  ;当前地址+偏移量3=备份地址
  198.                          MOVXR       R26,1,1
  199.                          CJNE        R24,R26,2
  200.                  CJNE        R25,R27,1
  201.                  GOTO        SR判断发送条件是否具备RET
  202.                          MOVXR       R24,0,1
  203.                          GOTO        SR通信条件具备
  204. SR变量值变化10H:   IJNE        R12,0x10,SR判断发送条件是否具备RET   
  205.                  MOV         R18,R0,2                ;R18R19=DGUS地址起始
  206.                          LDWR        R8,0
  207.                          MOV         R13,R9,1                ;R8R9 待处理数据长度
  208.                          MOVXR       R30,1,0                                
  209.                  SHL         R9,1,1                  ;字长*2=字节长
  210.                          CRCA        R30,R6,R9
  211.                          MOV         R252,R0,2
  212.                          INC         R0,1,3
  213.                          MOVXR       R24,1,1
  214.                  CJNE        R6,R24,2
  215.                  CJNE        R7,R25,1
  216.                  GOTO        SR判断发送条件是否具备RET
  217.                          MOVXR       R6,0,1
  218.                          GOTO        SR通信条件具备
  219. SR模式5:          IJNE        R15,5,SR判断发送条件是否具备RET                          
  220.                          GOTO        SR判断发送条件是否具备RET
  221. SR通信条件具备:    LDBR        R254,1,1
  222. SR判断发送条件是否具备RET:   
  223.                  RET
  224. ;==================
  225. SR搜寻变化的bit位:
  226.                  LDBR        R50,0,16          ;R50R51R52R53R54R55R56R57  
  227.                  MOV         R18,R56,2       ; /R58R59R60R61R62R63R64R65  
  228.                  LDWR        R64,16         
  229.                  DIV         R50,R58,0
  230.                  LDBR        R56,1,1  
  231.                  INC         R57,0,0X10
  232.                  MOV         R56,R0,2
  233.                  MOVXR       R50,1,1
  234.                  MOV         R50,R8,2
  235.                  MOV         R252,R0,2
  236.                  INC         R0,1,3
  237.                  MOVXR       R52,1,1
  238. LOOPBITR:        IJNE        R65,0,1
  239.                  GOTO        SR屏蔽高15bit                 
  240.                  SHR         R50,2,1
  241.                  SHR         R52,2,1
  242.                  DEC         R65,0,1
  243.                  GOTO        LOOPBITR
  244. SR屏蔽高15bit:    LDWR        R54,1           
  245.                  AND         R50,R54,2  
  246.                  AND         R52,R54,2
  247.                  MOV         R51,R255,1      ;
  248.                  RET
  249. ;==================           
  250. SR计算接收长度+数据组织:
  251.                  MOV         R252,R0,2  ;R252当前地址
  252.                          MOVXR       R10,1,8    ;R10-R21
  253. SR指令1:          IJNE        R12,0X01,SR指令2  ;指令1
  254.                  GOTO        1-2LEN=7
  255. SR指令2:          IJNE        R12,0X02,SR指令3  ;指令2         ;01 01 02 XX XX C  C
  256. 1-2LEN=7:        LDBR        R247,7,1          ;R247待接收长度;R30R31R32R33R34R35R36
  257.                  GOTO        SR基本指令
  258. SR指令3:          IJNE        R12,0X03,SR指令4  ;指令3
  259.                  GOTO        SR计算待接收长度    ;计算待接收长度
  260. SR指令4:          IJNE        R12,0X04,SR指令5  ;指令4
  261. SR计算待接收长度:   MOV         R13,R247,1       ;R247待接收长度
  262.                  SHL         R247,1,1
  263.                      INC         R247,0,5
  264.                  LDWR        R0,0X008A
  265.                  MOVXR       R30,1,1
  266.                  IJNE        R31,2,1           ;指令数据后加时钟=2
  267.                  INC         R247,0,6          ;6字节时钟
  268.                      GOTO        SR基本指令
  269. SR指令5:          IJNE        R12,0X05,SR指令06-10;指令5           
  270.                      LDBR        R247,8,1          ;R247待接收长度
  271.                      GOTO        SR基本指令
  272. SR指令06-10:      LDBR        R247,8,1          ;指令06-10  
  273. SR基本指令:       CALL         SR待发送数据组织
  274. 数据组织RET:      NOP
  275.                  RET            
  276. ;================
  277. SR待发送数据组织: ;R10=5A R11=ID   R12=CMD R13=Len R14=超时 R15=执行模式 R16R17=备份   
  278.                 ;R18R19=DGUS地址  R20R21=从机地址点表
  279. LOADID+CMD:      MOV         R11,R30,2    ;ID+cmd
  280.                          MOV         R20,R32,2    ;从机地址
  281. SRCMD=01:             IJNE        R12,0X01,1
  282.                          GOTO        SRCMD=02
  283.                          IJNE        R12,0X02,SRCMD=03 ;R30R31  R32R33  R34R35  R36R37
  284. SRCMD=02:               CALL        DYSR0102
  285.                          GOTO        SRPKWRET
  286. SRCMD=03:        IJNE        R12,0X03,1
  287.                          GOTO        SRCMD=04
  288.                          IJNE        R12,0X04,SRCMD=05
  289. SRCMD=04:        LDBR        R34,0,1         ;01 03 10 00  00 01 xx xx
  290.                          MOV         R13,R35,1
  291.                          LDBR        R9,6,1
  292.                          CRCA        R30,R36,R9
  293.                          LDBR        R248,8,1   ;发送长度  
  294.                          GOTO        SRPKWRET
  295. SRCMD=05:        IJNE        R12,0X05,SRCMD=06
  296.                  LDWR        R34,0XFF00
  297.                  IJNE        R255,0,1
  298.                  LDWR        R34,0
  299.                  LDBR        R9,6,1
  300.                  CRCA        R30,R36,R9
  301.                                  LDBR        R248,8,1   ;发送长度  
  302.                                  GOTO        SRPKWRET
  303. SRCMD=06:        IJNE        R12,0X06,SRCMD=10         
  304.                                  MOV         R18,R0,2
  305.                                  MOVXR       R34,1,1        ;01 06 10 00 00 01 xx xx
  306.                                  LDBR        R9,6,1
  307.                                  CRCA        R30,R36,R9
  308.                                  LDBR        R248,8,1   ;发送长度
  309.                                  IJNE        R15,0X03,SRPKWRET
  310.                                  LDWR        R22,0
  311.                                  MOV         R18,R0,2
  312.                                  MOVXR       R22,0,1
  313.                                  GOTO        SRPKWRET
  314. SRCMD=10:        IJNE        R12,0X10, SRPKWRET;R30R31R32R33R34R35R36R37R38R39R40R41 R42
  315.                                  CALL        DYSR10
  316. SRPKWRET:        NOP
  317.                  RET
  318. ;=================
  319. DYSR0102:        LDWR        R34,16            ;01 01   00 63    00 10   XX XX
  320.                  LDBR        R9,6,1
  321.                          CRCA        R30,R36,R9
  322.                          LDBR        R248,8,1   ;发送长度
  323.                  RET
  324. ;=================
  325. DYSR10:          LDBR        R34,0,1           ;01 10 10 00 00 02 04 xx xx xx xx crchcrcl
  326.                                  MOV         R13,R35,1
  327.                  MOV         R13,R36,1
  328.                                  SHL         R36,1,1   
  329.                                  MOV         R18,R0,2
  330.                                  MOV         R35,R9,1
  331.                                  MOVXR       R37,1,0
  332.                                  MOV         R36,R9,1
  333.                                  INC         R9,0,7
  334.                                  CRCA        R30,R254,R9
  335.                                  LDBR        R2,254,1
  336.                                  MOV         R9,R3,1
  337.                                  INC         R3,0,30
  338.                                  LDBR        R9,2,1
  339.                                  MOVA
  340.                                  DEC         R3,0,28
  341.                                  MOV         R3,R248,1
  342.                  RET
  343. ;=================
  344. SR当前进入接收状态: LDWR       R10,0
  345.                  RDXLEN     SerNum,R11   
  346.                  LDBR       R12,0,1
  347.                  MOV        R247,R13,1    ;R247待接收长度
  348.                  JU         R10,R12,SR通讯超时判断
  349.                  RDXDAT     SerNum,R30,R247
  350.                  GOTO       SR接收数据校验
  351. SR通讯超时判断:    CALL       SR超时判断           
  352.                  IJNE       R254,1,SR当前进入接收状态RET
  353.                  LDBR       R250,2,1      ;通讯超时=2
  354.                  LDBR       R251,0,1      ;转为发送状态
  355.                  GOTO       SR错误序号上传
  356. SR接收数据校验:    CALL       SR接收数据校验过程
  357.                  IJNE       R0,0,SR校验错误处理
  358.                  CALL       SR正确数据处理过程
  359.                  GOTO       SR错误序号上传
  360. SR校验错误处理:    LDBR       R250,3,1      ;R250,校验错误=3
  361.                  LDBR       R251,0,1      ;转为发送状态
  362. SR错误序号上传:    LDWR       R0,0X008E                       
  363.                  MOVXR      R10,1,1
  364.                  MOV        R250,R10,1
  365.                  MOVXR      R10,0,1
  366. SR当前进入接收状态RET:               
  367.                  RET
  368. ;=======================               
  369. SR超时判断:       LDBR       R254,0,1     
  370.                  MOV        R252,R0,2
  371.                  INC        R0,1,2
  372.                  MOVXR      R11,1,1
  373.                  LDBR       R10,0,1
  374.                  LDWR       R12,100
  375.                  LDBR       R14,0,4
  376.                  SMAC       R10,R12,R14     ;R16R17  超时设定时间
  377.                  MOVDR      35,R10,2
  378.                  JU         R10,R16,SR超时判断RET
  379. SR通讯超时:       LDBR       R254,1,1
  380. SR超时判断RET:    NOP            
  381.                  RET
  382. ;==================
  383. SR接收数据校验过程: MOV         R247,R2,1   ;R247 待接收长度
  384.                                  DEC         R2,0,2;
  385.                                  INC         R2,0,30
  386.                                  LDBR        R3,254,1
  387.                                  LDBR        R9,2,1
  388.                                  MOVA
  389.                                  MOV         R247,R9,1
  390.                                  DEC         R9,0,2
  391.                                  CRCA        R30,R20,R9
  392.                                  TESTS       R20,R254,2
  393.                  RET  
  394. ;==================
  395. SR正确数据处理过程:;R10=CMD R11=LEN  R12=超时 R13=触发方式  R14R15=备用 R16R17=Dgus地址
  396.                              MOV         R252,R0,2          ;R252=地址指针
  397.                                  INC         R0,1,1
  398.                                  MOVXR       R10,1,4
  399.                              IJNE        R31,0X01,SRR31=02
  400.                              GOTO        SRBITZL            ;010102 XX   XX    C     C
  401. SRR31=02:                 IJNE        R31,0X02,SRR31=03  ;       R33  R34   R35   R36                 
  402. SRBITZL:         LDBR        R50,0,16          ;R50R51R52R53R54R55R56R57  
  403.                  MOV         R16,R56,2       ; /R58R59R60R61R62R63R64R65  
  404.                  LDWR        R64,16         
  405.                  DIV         R50,R58,0
  406.                  LDBR        R56,1,1
  407.                  MOV         R56,R0,2
  408.                  MOV         R34,R32,1
  409.                                  MOVXR       R32,0,1
  410.                                  GOTO        SR接受数据处理完
  411. SRR31=03:        IJNE        R31,0X03,SRR31=04
  412.                          GOTO        SRWRDATA
  413. SRR31=04:                 IJNE        R31,0X04,SR接受数据处理完  ;03 04 指令的接收数据CRCHCRCL 前有6字节时间
  414. SRWRDATA:        MOV         R16,R0,2
  415.                  MOV         R11,R9,1
  416.                  MOVXR       R33,0,0             ;                         R33R34R35R36R37R38R39R40R41R42
  417.                  CALL        SR附带的时间移入       ;附带的时间移入   01 03 0A  XX XX XX XX 年 月 日  时 分 秒   crch crcl
  418. SR接受数据处理完:  LDWR        R0,0X008E
  419.                  LDWR        R10,0
  420.                  MOV         R246,R11,1
  421.                  MOVXR       R10,0,1
  422.                  CALL        SR指针调整过程
  423.                  RET  
  424. ;=====================   
  425. SR附带的时间移入:  LDWR        R0,0X008A
  426.                  MOVXR       R10,1,1
  427.                  IJNE        R11,2,SR附带的时间移入RET
  428.                  SHL         R9,1,1
  429.                  INC         R9,0,33
  430.                  MOV         R9,R2,1
  431.                  LDBR        R3,10,1
  432.                  LDBR        R9,6,1
  433.                  MOVA
  434.                  MOV         R15,R16,1
  435.                  MOV         R14,R15,1
  436.                  MOV         R13,R14,1
  437.                  LDWR        R0,0X0010   
  438.                  MOVXR       R10,0,4
  439. SR附带的时间移入RET:                 
  440.                  RET
  441. ;====================
  442. ;从机模式
  443. ;收到数据 R252
  444. ;长度备份 R253
  445. ;备用R254 255
  446. ;===================               
  447. MOD_L_RTU_GC:    RDXLEN     SerNum,R10
  448.                  IJNE       R10,0,1
  449.                  GOTO       MOD_L_RTU_GCRET
  450.                  IJNE       R252,0,LR追加后续数据
  451.                  MOV        R10,R253,1
  452.                  LDBR       R252,1,1   ;有数据输入标志
  453.                  LDWR       R10,0      ;通信超时清零
  454.                  MOVRD      R10,35,2   ;通信超时清零  T1定时器=0
  455.                  GOTO       MOD_L_RTU_GCRET
  456. LR追加后续数据:    CJNE       R10,R253,1                 
  457.                  GOTO       LR无后续数据追加
  458.                  MOV        R10,R253,1
  459.                  LDWR       R10,0      ;通信超时清零
  460.                  MOVRD      R10,35,2   ;通信超时清零  T1定时器=0
  461.                  GOTO       MOD_L_RTU_GCRET
  462. LR无后续数据追加:  LDWR       R10,200
  463.                  MOVDR      35,R12,2               
  464.                  JU         R12,R10,MOD_L_RTU_GCRET
  465.                  RDXDAT     SerNum,R30,R253      
  466.                  CALL       LR接收指令处理
  467. MOD_L_RTU_GCRET: NOP               
  468.                  RET   
  469. ;===================
  470. LR接收指令处理:    LDWR       R0,0X008C
  471.                  MOVXR      R10,1,1
  472. LR_ID_比对:       CJNE       R10,R30,LR接收指令处理RET
  473.                  MOV        R253,R9,1
  474.                  DEC        R9,0,2      
  475.                  CRCA       R30,R254,R9   
  476.                  LDBR       R3,250,1
  477.                  MOV        R253,R2,1
  478.                  INC        R2,0,28
  479.                  LDBR       R9,2,1
  480.                  MOVA
  481.                  CJNE       R250,R254,LRXYERR
  482.                  CJNE       R251,R255,LRXYERR
  483. LR校验ok:         IJNE       R31,0X01,1
  484.                  GOTO       LR=02  
  485.                  IJNE       R31,0X02,LR=03 ;ID 01 XX XX XX XX C C
  486. LR=02:           DEC        R32,1,1
  487.                  LDBR       R50,0,16         ;R50R51R52R53R54R55R56R57
  488.                  MOV        R32,R56,2        ;R58R59R60R61R62R63R64R65
  489.                  LDWR       R64,16
  490.                  DIV        R50,R58,0
  491.                  LDBR       R56,1,1
  492.                  MOV        R56,R0,2
  493.                  INC        R1,0,0X10
  494.                  MOV        R65,R9,1
  495.                  MOVXR      R12,1,1
  496.                  INC        R0,1,1
  497.                  MOVXR      R10,1,1
  498. LOOP0102Y:       IJNE       R9,0,1                 
  499.                  GOTO       W0102SJ
  500.                  DEC        R9,0,1      
  501.                  SHR        R10,4,1
  502.                  GOTO       LOOP0102Y
  503. W0102SJ:         MOV        R12,R34,1         
  504.                  MOV        R13,R33,1
  505.                  LDBR       R32,2,1      
  506.                  LDBR       R248,5,1       ;01 01 L XX XX C C  
  507.                  CRCA       R30,R254,R248
  508.                  GOTO       LRCJY  
  509. LR=03:           IJNE       R31,0X03,1
  510.                  GOTO       LR=04
  511.                  IJNE       R31,0X04,LR=05   ;ID 03 XX XX XX XX C C  
  512. LR=04:           MOV        R32,R0,2
  513.                  MOV        R35,R32,1
  514.                  SHL        R32,1,1
  515.                  MOV        R35,R9,1
  516.                  MOVXR      R33,1,0
  517.                  MOV        R32,R248,1
  518.                  INC        R248,0,3
  519.                  CRCA       R30,R254,R248
  520.                  GOTO       LRCJY
  521. LR=05:           IJNE       R31,0X05,LR=06   ;ID 05 00 64 FF 00 C C
  522.                  ;DEC        R32,1,1
  523.                  LDBR       R50,0,16         ;R50R51R52R53R54R55R56R57
  524.                  MOV        R32,R56,2        ;R58R59R60R61R62R63R64R65
  525.                  LDWR       R64,16
  526.                  DIV        R50,R58,0
  527.                  LDBR       R56,1,1
  528.                  MOV        R56,R0,2
  529.                  MOV        R65,R9,1
  530.                  IJNE       R34,0XFF,LRBITW0
  531.                  LDWR       R7,1
  532. LOOPLRYW:        IJNE       R9,0,1                 
  533.                  GOTO       LRBITW1
  534.                  SHL        R7,2,1
  535.                  DEC        R9,0,1
  536.                  GOTO       LOOPLRYW
  537. LRBITW1:         MOVXR      R10,1,1                 
  538.                  OR         R10,R7,2
  539.                  GOTO       LRW05YD
  540. LRBITW0:         LDWR       R7,0XFFFE                 
  541. LOOPLRYW1:       IJNE       R9,0,1                 
  542.                  GOTO       WLRBIT0
  543.                  SHL        R7,2,1
  544.                  DEC        R9,0,1
  545.                  GOTO       LOOPLRYW1
  546. WLRBIT0:         MOVXR      R10,1,1            
  547.                  AND        R10,R7,2
  548. LRW05YD:         MOVXR      R10,0,1
  549.                  MOV        R36,R254,2
  550.                  LDBR       R254,6,1
  551.                  GOTO       LRCJY
  552. LR=06:           IJNE       R31,0X06,LR=10    ;ID 06 XX XX XX XX C C
  553.                  MOV        R32,R0,2
  554.                  MOVXR      R34,0,1
  555.                  LDBR       R248,6,1
  556.                  MOV        R36,R254,2
  557.                  GOTO       LRCJY
  558. LR=10:           IJNE       R31,0X10,LR接收指令处理RET
  559.                  MOV        R32,R0,2          ;ID 10 ADH ADL LEH LEL ZL XX XX XX XX C C
  560.                  MOV        R35,R9,1
  561.                  MOVXR      R37,0,0
  562.                  LDBR       R9,6,1
  563.                  CRCA       R30,R254,R9
  564.                  LDBR       R248,6,1
  565.                  GOTO       LRCJY
  566. LRXYERR:         INC        R31,0,0X80
  567.                  LDBR       R32,1,1
  568.                  LDBR       R248,3,1
  569.                  CRCA       R30,R254,R248
  570. LRCJY:           COMTXD     SerNum,R30,R248
  571.                  LDBR       R248,2,1
  572.                  COMTXD     SerNum,R254,R248
  573. LR接收指令处理RET: NOP                                    
  574.                  RET
  575. ;===================                 
  576. ;HXE1000:    LDWR       R4,0X1800
  577. ;            LDWR       R6,0X1000
  578. ;            LDWR       R2,0x0200
  579. ;LOOP_EXH1000:MOV        R4 ,R0,2
  580. ;            MOVXR      R10,1,2
  581. ;            MOV        R10,R14,2
  582. ;            MOV        R6,R0,2
  583. ;            MOVXR      R12,0,2
  584. ;            INC        R4,1,2
  585. ;            INC        R6,1,2
  586. ;            INC        R8,1,1
  587. ;            JS         R8,R2,LOOP_EXH1000
  588. ;               
  589. ;                        
  590. ; HXERET1000:
  591. ;           RET                       
  592. ;============================================                    
  593. XCH:        LDWR       R4,0X8000
  594.             LDWR       R6,0X8800
  595.             LDWR       R2,0X0200
  596. LOOP_EXH:   MOV        R4 ,R0,2
  597.             MOVXR      R10,1,2
  598.             MOV        R10,R14,2
  599.             MOV        R6,R0,2
  600.             MOVXR      R12,0,2
  601.             INC        R4,1,2
  602.             INC        R6,1,2
  603.             INC        R8,1,1
  604.             JS         R8,R2,LOOP_EXH
  605.            
  606. HXERET:
  607.            RET                        
复制代码
这里面 怎么定义那个地址在画面上显示   

回复

使用道具 举报

0

主题

571

回帖

6613

积分

论坛元老

Rank: 8Rank: 8

积分
6613
发表于 2021-10-26 13:52:06 | 显示全部楼层
可以根据自己的需求,在Main或者Maia里面CALL一个子函数
沧海横流,方显英雄本色。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2024-6-26 06:48 , Processed in 0.099578 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表