📄 hdlc.lst
字号:
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 + -