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

📄 hdlc.lst

📁 在大型通信系统(机架插板式)中多块单板通过TDM总线
💻 LST
📖 第 1 页 / 共 5 页
字号:
 879   2          }
 880   1              
 881   1          /* 处理B通道RME中断  */
 882   1          if ( (m_ucBISTAStatus&RME) == RME )
C51 COMPILER V3.20,  SN-0  HDLC                                                            09/29/02  18:24:18  PAGE 16  

 883   1          {
 884   2              /* 收到<32字节的帧--RECEIVE MESSAGE END */
 885   2              if( ((m_ucBRSTAStatus&CRC)==CRC) && ((m_ucBRSTAStatus&VFR)==VFR) && ((m_ucBRSTAStatus&RDO)!=RDO) )
             -  
 886   2              {
 887   3                  /* 收到有效的帧--VALID FRAME RECEIVED,且CRC正确,没有RDO--RECEIVE DATA OVERFLOW  */
 888   3                  m_ucBRBCL = *(SAB82525+BRBCL);
 889   3                  m_ucBRBCL = (m_ucBRBCL-1);
 890   3                  if((m_ucBRBCL>0) && (m_ucBRBCL<32))
 891   3                  {
 892   4                      /* 帧长度 */
 893   4                      L1RxBuf[m_sL1Que.ucRxPlaceIndex].ucLength = m_ucBRBCL;   
 894   4              
 895   4                      /* 有效数据 */
 896   4                      for(i=0;i<m_ucBRBCL;i++)
 897   4                      {
 898   5                          L1RxBuf[m_sL1Que.ucRxPlaceIndex].ucData[i] = *(SAB82525+BFIFO);   
 899   5                      }
 900   4          
 901   4                      /* CRC status */
 902   4                      temp = *(SAB82525+BFIFO);   
 903   4                      L1RxBuf[m_sL1Que.ucRxPlaceIndex].ucData[m_ucBRBCL] = temp;   
 904   4              
 905   4                      m_ucBSTARStatus = CheckBSTAR();
 906   4                      *(SAB82525+BCMDR) = RMC;
 907   4              
 908   4                      /* 剩余填充0 */
 909   4                      for(i=m_ucBRBCL+1;i<BUFSIZE;i++)
 910   4                      {
 911   5                          L1RxBuf[m_sL1Que.ucRxPlaceIndex].ucData[i] = 0;   
 912   5                      }
 913   4          
 914   4                      /* 调整指针 */
 915   4                      if(m_sL1Que.ucRxPendNum <= L1RXBUFNUM)
 916   4                      {                   
 917   5                          m_sL1Que.ucRxPlaceIndex++;
 918   5                          m_sL1Que.ucRxPlaceIndex = m_sL1Que.ucRxPlaceIndex%L1RXBUFNUM;
 919   5                  
 920   5                          m_sL1Que.ucRxPendNum++;
 921   5                      }
 922   4          
 923   4                      m_bBRxFrameFlag = TRUE;
 924   4                  }
 925   3      		}			
 926   2              else
 927   2              {
 928   3                  /* 无效的帧 */
 929   3                  *(SAB82525+BCMDR) = RHR;    /* 复位接收FIFO及接收器RECEIVER     */
 930   3              }
 931   2      			
 932   2              if( (m_ucBRSTAStatus&CRC)==CRC)
 933   2      		{
 934   3                  m_bL1RxCRCFlag = RIGHT;
 935   3              }
 936   2              else
 937   2              {
 938   3                  m_bL1RxCRCFlag = WRONG;
 939   3              }
 940   2          }
 941   1      
 942   1          /* 对于沿触发中断方式的CPU,当还有中断为处理完时,以下指令可再次产生中断  */
 943   1          *(SAB82525+BMASK) = 0xff;
C51 COMPILER V3.20,  SN-0  HDLC                                                            09/29/02  18:24:18  PAGE 17  

 944   1          *(SAB82525+AMASK) = 0xff;
 945   1          *(SAB82525+BMASK) = 0x3e;
 946   1          *(SAB82525+AMASK) = 0x3f;
 947   1      
 948   1          return;
 949   1      }
 950          
 951          
 952          /********************************************************************************/
 953          /*  函数名称:void timer0(void)                                                  */
 954          /*  简要描述:定时器0中断服务程序(定时10ms)                                      */
 955          /*                                                                              */
 956          /*  时    间:2000年02月06日                                                     */
 957          /********************************************************************************/
 958          void timer0(void) interrupt 1 using 2   /* use registerbank 2 for interrupt     */
 959          {     
 960   1          m_bTimer0Flag = TRUE;               /* 置中断标志                           */
 961   1      
 962   1          TH0=0xd8;                           /* 重装初值                             */
 963   1          TL0=0xf0;
 964   1      
 965   1          m_ucTimer0Count++;
 966   1          
 967   1          if(m_sL2Que.ucLinkState == DL_RELEASE)
 968   1          {
 969   2              COMM_LED = OFF;
 970   2          }
 971   1          else
 972   1          {
 973   2              COMM_LED = ON;
 974   2          }
 975   1          
 976   1          
 977   1          if(m_sL2Que.ucT201Control == ON)
 978   1          {
 979   2              m_sL2Que.ucT201++;              /* 重发定时器计数 */
 980   2          }
 981   1          else
 982   1          {
 983   2              m_sL2Que.ucT201 = 0;            /* 重发定时器计数值清零 */
 984   2          }
 985   1              
 986   1          return;
 987   1      }
C51 COMPILER V3.20,  SN-0  HDLC                                                            09/29/02  18:24:18  PAGE 18  

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION InitHDLC (BEGIN)
;---- Variable 'j' assigned to Register 'R7' ----
                                           ; SOURCE LINE # 92
                                           ; SOURCE LINE # 93
                                           ; SOURCE LINE # 96
0000 B295          CPL     WATCHDOG
                                           ; SOURCE LINE # 99
;---- Variable 'i' assigned to Register 'R6' ----
0002 E4            CLR     A
0003 FE            MOV     R6,A
0004         ?C0001:
0004 EE            MOV     A,R6
0005 C3            CLR     C
0006 9404          SUBB    A,#04H
0008 5059          JNC     ?C0002
                                           ; SOURCE LINE # 100
                                           ; SOURCE LINE # 101
000A EE            MOV     A,R6
000B 75F014        MOV     B,#014H
000E A4            MUL     AB
000F 2400    R     ADD     A,#LOW L3RxBuf
0011 F582          MOV     DPL,A
0013 E4            CLR     A
0014 3400    R     ADDC    A,#HIGH L3RxBuf
0016 F583          MOV     DPH,A
0018 E4            CLR     A
0019 F0            MOVX    @DPTR,A
                                           ; SOURCE LINE # 102
001A EE            MOV     A,R6
001B 75F014        MOV     B,#014H
001E A4            MUL     AB
001F 2400    R     ADD     A,#LOW L3RxBuf+01H
0021 F582          MOV     DPL,A
0023 E4            CLR     A
0024 3400    R     ADDC    A,#HIGH L3RxBuf+01H
0026 F583          MOV     DPH,A
0028 E4            CLR     A
0029 F0            MOVX    @DPTR,A
                                           ; SOURCE LINE # 103
002A EE            MOV     A,R6
002B 75F014        MOV     B,#014H
002E A4            MUL     AB
002F 2400    R     ADD     A,#LOW L3RxBuf+02H
0031 F582          MOV     DPL,A
0033 E4            CLR     A
0034 3400    R     ADDC    A,#HIGH L3RxBuf+02H
0036 F583          MOV     DPH,A
0038 E4            CLR     A
0039 F0            MOVX    @DPTR,A
003A A3            INC     DPTR
003B F0            MOVX    @DPTR,A
                                           ; SOURCE LINE # 104
003C FF            MOV     R7,A
003D         ?C0004:
003D EF            MOV     A,R7
003E C3            CLR     C
003F 9410          SUBB    A,#010H
0041 501D          JNC     ?C0003
                                           ; SOURCE LINE # 105
C51 COMPILER V3.20,  SN-0  HDLC                                                            09/29/02  18:24:18  PAGE 19  

                                           ; SOURCE LINE # 106
0043 EE            MOV     A,R6
0044 75F014        MOV     B,#014H
0047 A4            MUL     AB
0048 2400    R     ADD     A,#LOW L3RxBuf+04H
004A F582          MOV     DPL,A
004C E4            CLR     A
004D 3400    R     ADDC    A,#HIGH L3RxBuf+04H
004F F583          MOV     DPH,A
0051 E582          MOV     A,DPL
0053 2F            ADD     A,R7
0054 F582          MOV     DPL,A
0056 E4            CLR     A
0057 3583          ADDC    A,DPH
0059 F583          MOV     DPH,A
005B E4            CLR     A
005C F0            MOVX    @DPTR,A
                                           ; SOURCE LINE # 107
005D 0F            INC     R7
005E 80DD          SJMP    ?C0004
                                           ; SOURCE LINE # 108
0060         ?C0003:
0060 0E            INC     R6
0061 80A1          SJMP    ?C0001
0063         ?C0002:
                                           ; SOURCE LINE # 109
0063 E4            CLR     A
0064 FE            MOV     R6,A
0065         ?C0007:
0065 EE            MOV     A,R6
0066 C3            CLR     C
0067 9406          SUBB    A,#06H
0069 5059          JNC     ?C0008
                                           ; SOURCE LINE # 110
                                           ; SOURCE LINE # 111
006B EE            MOV     A,R6
006C 75F014        MOV     B,#014H
006F A4            MUL     AB
0070 2400    R     ADD     A,#LOW L3TxBuf
0072 F582          MOV     DPL,A
0074 E4            CLR     A
0075 3400    R     ADDC    A,#HIGH L3TxBuf
0077 F583          MOV     DPH,A
0079 E4            CLR     A
007A F0            MOVX    @DPTR,A
                                           ; SOURCE LINE # 112
007B EE            MOV     A,R6
007C 75F014        MOV     B,#014H
007F A4            MUL     AB
0080 2400    R     ADD     A,#LOW L3TxBuf+01H
0082 F582          MOV     DPL,A
0084 E4            CLR     A
0085 3400    R     ADDC    A,#HIGH L3TxBuf+01H
0087 F583          MOV     DPH,A
0089 E4            CLR     A
008A F0            MOVX    @DPTR,A
                                           ; SOURCE LINE # 113
008B EE         

⌨️ 快捷键说明

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