⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 startup.lst

📁 上位机与多台下位机的单片机多机通信。 做好了通信框架
💻 LST
📖 第 1 页 / 共 2 页
字号:
A51 MACRO ASSEMBLER  STARTUP                                                              05/18/2008 16:37:15 PAGE     1


MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN .\STARTUP.obj
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE C:\Keil\C51\EXAMPLES\c51\slave\STARTUP.A51 SET(SMALL) DEBUG PRINT(.\STARTU
                      P.lst) OBJECT(.\STARTUP.obj) EP

LOC  OBJ            LINE     SOURCE

                       1     
                       2     
                       3     
                       4     
                       5     
                       6     
                       7     
                       8     
                       9     
                      10     
                      11     
                      12     
                      13     
                      14     
                      15     
                      16     
                      17     
                      18     
                      19     
                      20     
                      21     
                      22     
                      23     
                      24     
                      25     
                      26     
                      27     
                      28     
  0030                29             SBB     equ     30h
  0031                30             SBTA    equ     31h             ;本机地址       
  0032                31             SBCMD   equ     32h
  0033                32             SBDL    equ     33h             ;9=>sbdl>=1 34h-3ch存放发送的数据
  003D                33             SBS     equ     3dh
  003E                34             SBE     equ     3eh
  003F                35             addr    equ     3fh             ;本机地址
  0001                36             SBRDY   bit     01h
                      37     
                      38     
  0040                39             RBB     equ     40h
  0041                40             RBTA    equ     41h             ;上位机传送来的地址信息
  0042                41             RBCMD   equ     42h
  0043                42             RBDL    equ     43h             ;9=>rbdl>=1 44h-4ch存放接收的数据
  004D                43             RBS     equ     4dh
  004E                44             RBE     equ     4eh
  004F                45             Rstatus equ     4fh
  0000                46             RBRDY   bit     00h
                      47     
0000                  48             org     00h
0000 020030           49             ljmp    start
0023                  50             org     23h
0023 0200EA           51             ljmp    recieve
0030                  52             org     30h
0030                  53         start:
0030 75815F           54             mov     sp,#5fh
0033 53877F           55             anl     pcon,#7fh
0036 759890           56             mov     scon,#90h
0039 D2AF             57             setb    ea
A51 MACRO ASSEMBLER  STARTUP                                                              05/18/2008 16:37:15 PAGE     2

003B D2AC             58             setb    es
003D D2BC             59             setb    ps
003F 753F01           60             mov     addr,#01h               ;本机地址设置为01h
                      61     
                      62      
                      63     
                      64     
                      65     
0042                  66         loop:
0042 D201             67             setb    SBRDY                   ;测试用,假设有数据需要发送
0044 3000FD           68             jnb     RBRDY,$
0047 C200             69             clr     RBRDY
0049 74FF             70             mov     a,#0ffh
004B B5410D           71             cjne    a,RBTA,no_broadcast
004E 740F             72             mov     a,#0fh
0050 B54205           73             cjne    a,RBCMD,no_reset
0053 D29D             74             setb    sm2
0055 020042           75             ljmp    loop
0058                  76         no_reset:
                      77             ;广播时候传送给所有slave mcu的指令  扩展用
0058 020042           78             ljmp    loop
                      79     
005B                  80         no_broadcast:
005B E53F             81             mov     a,addr
005D B5412A           82             cjne    a,RBTA,isnot_me
0060 7480             83             mov     a,#80h
0062 B54208           84             cjne    a,RBCMD,no_set
0065 C29D             85             clr     SM2                     ;设置sm2=0
0067 1200BC           86             lcall   response                ;发送响应帧
006A 020042           87             ljmp    loop
006D                  88         no_set:
006D 7481             89             mov     a,#81h
006F B54215           90             cjne    a,RBCMD,no_permit
                      91     
0072 753304           92             mov     SBDL,#04h               ;要发送的数据长度 (可以自行设置长度及数据值)
0075 753455           93             mov     34h,#55h                ;要发送的数据
0078 753533           94             mov     35h,#33h                ;要发送的数据
007B 753689           95             mov     36h,#89h                ;要发送的数据
007E 753756           96             mov     37h,#56h                ;要发送的数据
                      97     
0081 12008F           98             lcall   send_data
0084 020042           99             ljmp    loop
                     100     
0087                 101         no_permit:                  ;非允许数据发送指令
                     102             ;其他指令 扩展用
                     103     
0087 020042          104             ljmp    loop
                     105             
                     106     
008A                 107         isnot_me:
008A D29D            108             setb    sm2
008C 020042          109             ljmp    loop
                     110             
                     111     
                     112             
                     113     ;;;;;;;;;;;;;;;;;;;;;;
008F                 114     send_data:
                     115     
008F 7882            116             mov     r0,#82h
0091 A933            117             mov     r1,SBDL         ;SBDL 以及发送数据信息在其他地方设置
0093 300115          118             jnb     SBRDY,error             ;如果SBRDY不为1则mcu发生错误,SBRDY不为1,不可能进入
                             send_data程序,SBRDY为0断定错误发生
0096 1200D0          119             lcall   write_SB
0099 120176          120             lcall   Send
009C 3000FD          121             jnb     RBRDY,$
009F 7401            122             mov     a,#01h
A51 MACRO ASSEMBLER  STARTUP                                                              05/18/2008 16:37:15 PAGE     3

00A1 B54206          123             cjne    a,RBCMD,no_response
00A4 C201            124             clr     SBRDY
00A6 1201AB          125             lcall   Clear_sendBuf
00A9 22              126             ret
00AA                 127         no_response:                        ;等待下一次再进行数据传送
00AA 22              128             ret
                     129     
                     130     
                     131     
00AB                 132     error:                                  ;出错,则重置
00AB 1201AB          133             lcall   Clear_sendBuf
00AE 1201B5          134             lcall   Clear_recieveBuf
00B1 C200            135             clr     RBRDY
00B3 C201            136             clr     SBRDY
00B5 753F01          137             mov     addr,#01h
00B8 754F00          138             mov     Rstatus,#00h
00BB 22              139             ret
                     140             
                     141             
                     142     ;;;;;;;;;;;;;;;;;;;;;;;;
00BC                 143     response:                               ;发送响应帧
00BC 7801            144             mov     r0,#01h
00BE 7901            145             mov     r1,#1h
00C0 753400          146             mov     34h,#00h
00C3 300103          147             jnb     SBRDY,SB_no_RDY
00C6 753401          148             mov     34h,#01h        
00C9                 149         SB_no_RDY:  
00C9 1200D0          150             lcall   write_SB
00CC 120176          151             lcall   Send
00CF 22              152             ret
                     153     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                     154     
                     155     
                     156     
00D0                 157     write_SB:                               ;写发送缓冲区
00D0 753068          158             mov     SBB,#68h
00D3 853F31          159             mov     SBTA,addr
00D6 8832            160             mov     SBCMD,r0
00D8 8933            161             mov     SBDL,r1
00DA E532            162             mov     a,SBCMD
00DC 2533            163             add     a,SBDL
00DE 7834            164             mov     r0,#34h
00E0                 165         add_datas:
00E0 26              166             add     a,@r0
00E1 08              167             inc     r0
00E2 D9FC            168             djnz    r1,add_datas
00E4 F53D            169             mov     SBS,a
00E6 753E55          170             mov     SBE,#55h
00E9 22              171             ret
                     172     
                     173     
                     174     
                     175             
                     176     
                     177     
                     178             
                     179     
                     180     
00EA                 181     recieve:                ;数据接收,与上位机程序一样
                     182     
                     183     
                     184     
00EA 109917          185             jbc     TI,is_Send
00ED C298            186             clr     RI
00EF 7400            187             mov     a,#00h
00F1 B54F11          188             cjne    a,Rstatus,ignore_begin
A51 MACRO ASSEMBLER  STARTUP                                                              05/18/2008 16:37:15 PAGE     4

00F4 859940          189             mov     RBB,sbuf
00F7 7468            190             mov     a,#68h
00F9 B54004          191             cjne    a,RBB,garbage_info
00FC 754F01          192             mov     Rstatus,#01h
00FF 32              193             reti
0100                 194         garbage_info:
0100 754F00          195             mov     Rstatus,#00h
0103 32              196             reti
0104                 197         is_Send:
0104 32              198             reti
0105                 199         ignore_begin:
0105 7401            200             mov     a,#01H
0107 B54F07          201             cjne    a,Rstatus,ignore_addr
010A 859941          202             mov     RBTA,sbuf
010D 754F02          203             mov     Rstatus,#02h
0110 32              204             reti
0111                 205         ignore_addr:
0111 7402            206             mov     a,#02h
0113 B54F0A          207             cjne    a,Rstatus,ignore_comm
0116 859942          208             mov     RBCMD,sbuf
0119 754F03          209             mov     Rstatus,#03h
011C 85424D          210             mov     RBS,RBCMD

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -