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

📄 startup.lst

📁 上位机与多台下位机的单片机多机通信。 做好了通信框架
💻 LST
字号:
A51 MACRO ASSEMBLER  STARTUP                                                              05/18/2008 16:31:01 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\master\STARTUP.A51 SET(SMALL) DEBUG PRINT(.\START
                      UP.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     
                      29     
                      30     
                      31     
                      32     
  0030                33             SBB     equ     30h             ;帧头 总为68h
  0031                34             SBTA    equ     31h             ;目标地址  
  0032                35             SBCMD   equ     32h             ;command
  0033                36             SBDL    equ     33h             ;9=>sbdl>=1 34h-3ch存放发送的数据,不在长度范围内将
                             导致数据发送失败
  003D                37             SBS     equ     3dh             ;校验和
  003E                38             SBE     equ     3eh             ;帧尾 总为 55h
  003F                39             addr    equ     3fh             ;数据发送目标地址
                      40     
                      41     
  0040                42             RBB     equ     40h             ;类似发送缓冲区
  0041                43             RBTA    equ     41h
  0042                44             RBCMD   equ     42h
  0043                45             RBDL    equ     43h             ;9=>rbdl>=1 44h-4ch存放接收的数据
  004D                46             RBS     equ     4dh
  004E                47             RBE     equ     4eh
  004F                48             Rstatus equ     4fh             ;接收状态字 代表目前接收的字节归属
  0000                49             RBRDY   bit     00h             ;接收完成标志
                      50     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                      51     
0000                  52             org     00h
0000 020030           53             ljmp    start
000B                  54             org     0bh
000B 0200B7           55             ljmp    T_0                     ;T0用于判断下位机响应是否超时
0023                  56             org     23h
A51 MACRO ASSEMBLER  STARTUP                                                              05/18/2008 16:31:01 PAGE     2

0023 020105           57             ljmp    recieve
0030                  58             org     30h
0030                  59         start:
0030 75816F           60             mov     sp,#6fh
0033 53877F           61             anl     pcon,#7fh               ;设置smod=0
0036 759890           62             mov     scon,#90h               ;串行方式2
0039 C29D             63             clr     sm2                     ;不论收到的rb8值是多少,都可以接收到数据
003B D2AF             64             setb    ea                      ;开总中断
003D D2AC             65             setb    es                      ;开串口中断
003F D2BC             66             setb    ps                      ;串口中断优先
0041 758901           67             mov     tmod,#01h               ;定时器方式1
0044 D2A9             68             setb    et0                     ;开定时器中断
0046 C28C             69             clr     tr0                     ;暂时不计时
                      70     
0048 780F             71             mov     r0,#0fh                 ;重置所有下位机
004A 7901             72             mov     r1,#1h                  ;数据长为1 (无用的数据,兼容用)
004C 753400           73             mov     34h,#00h        ;任意值
004F 753FFF           74             mov     addr,#0ffh      ;广播地址
0052 D29B             75             setb    TB8             ;所有mcu都可以接收到此信息
0054 1200EB           76             lcall   write_SB        
0057 120191           77             lcall   Send            ;发送
                      78             
005A 753F00           79             mov     addr,#00h
005D                  80         next_mcu:
005D 1200DE           81             lcall   next_addr       ;取下一下位机地址
0060 7880             82             mov     r0,#80h         ;地址匹配命令
0062 7901             83             mov     r1,#1h          ;
0064 753400           84             mov     34h,#00h        ;任意值
0067 D29B             85             setb    TB8             ;所有下位机都可以接收到此信息
0069 1200EB           86             lcall   write_SB
006C 120191           87             lcall   Send            ;发送
                      88     
006F D28C             89             setb    tr0             ;计时开始
0071 3000FD           90             jnb     RBRDY,$
0074 C28C             91             clr     tr0
0076 758C00           92             mov     th0,#0
0079 758A00           93             mov     tl0,#0
007C C200             94             clr     RBRDY
                      95     
007E 7401             96             mov     a,#01h
0080 B542DA           97             cjne    a,RBCMD,next_mcu        ;不是slave机响应信息则说明该机不存在,测试下一地址
0083 7401             98             mov     a,#01h          
0085 B544D5           99             cjne    a,44h,next_mcu          ;接收到的数据不是01h说明slave机没有需要传送的数据,

⌨️ 快捷键说明

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