|
, 16bit CRC assembler program
;---------------------------------------- ; STRINT IS EF-NET OUT. THE INT. ; USE INT08 ; 1. R1R0 -- TO OUTPUT BUFFER ; R2R3 -- STORE BCNT ; R4 -- STORE STAT ; R7R6 -- STORE CRC ; SIOFLG-- TRANSMIT FLAG. ; IF SIOFLG=00H, OUTPUT BYTE IS BCNTL ; =01H, OUTPUT BYTE IS BCNTH ; =02H, OUTPUT BYTE IS STATE ; =03H, OUTPUT BYTE IS DATA BYTE ; =04H, OUTPUT BYTE IS ADDL ; =05H, OUTPUT BYTE IS ADDH ; =06H, OUTPUT END ;------------------------------------------ STRINT: PUSH PSW PUSH ACC PUSH DPL PUSH DPH MOV PSW,#08H ;SELECT BANK-1 JBC TI,STR01 ;串口發(fā)送中斷標(biāo)志。 MOV TMR04,#00H ;INITIAL WATCH-DOG=120s MOV TMR05,#08H CLR RI LJMP SREINT ; OUTPUT BCNTL STR01: MOV A,SIOFLG JNZ STR02 MOV SCON,#0C0H MOV A,R2 SJMP STR26
; OUTPUT BCNTH STR02: CJNE A,#01H,STR10 MOV A,R3 SJMP STR26 ; ; OUTPUT STAT STR10: CJNE A,#02H,STR20 INC SIOFLG ;OUT DATA BYTE FLAG MOV A,R4 DEC R2 CJNE R2,#00H,STR28 SJMP STR26 ; ; OUTPUT DATA BYTES STR20: CJNE A,#03H,STR30 MOV DPL,R0 MOV DPH,R1 MOVX A,@DPTR INC DPTR MOV R0,DPL MOV R1,DPH DJNZ R2,STR28 STR26: INC SIOFLG
;************************** STR28: MOV SBUF,A MOV DPTR,#CRCTAB1 XRL A,R6 CLR C RLC A JNC STR2A INC DPH STR2A: ADD A,DPL MOV DPL,A CLR A ADDC A,DPH MOV DPH,A CLR A MOVC A,@A+DPTR XRL A,R7 MOV R6,A MOV A,#01H MOVC A,@A+DPTR MOV R7,A ;******************************** SJMP STR8A ; ; OUTPUT ADDL STR30: CJNE A,#04H,STR40 INC SIOFLG MOV SBUF,R6 SJMP STR8A ; ; OUTPUT ADDH STR40: CJNE A,#05H,STR48 INC SIOFLG MOV SBUF,R7 SJMP STR8A STR48: MOV SCON,#0F0H SETB HATSIO STR8A: POP DPH POP DPL POP ACC POP PSW RETI ; ;----------------------------------- ; SREINT IS EF-NET RECEIVE THE INT. ; USE RI INT.(INT09) ; 1. SIOFLG,7=0 IS SLAVE MODE RECEIVE ; R1R0 --- INPUT BUFFER ADDR ; R2 --- STORE BCNT ; R6 --- STORE ADDBL ; R7 --- STORE ADDBH ; ; SR10--- STORE RECEIVED ADDR ; SR12--- STORE BCNT ; SR14--- STORE COMMAND NO. ; IF SIOFLG=80H, RECEIVE BYTE IS COMMAND BYTE ; =81H, RECEIVE BYTE IS ADDH BYTE ; =82H, RECEIVE BYTE IS BCNT LOW BYTE ; =83H, RECEIVE BYTE IS BCNT HIGH BYTE ; =84H, RECEIVE BYTE IS DATA BYTE ; =85H, RECEIVE BYTE IS ADDBH ; =86H, RECEIVE BYTE IS ADDBL ; SIOFLG.4=1 THEN BROADCAST COMMADN ;------------------------------------------------ ; SRE00: MOV A,SBUF ;READ ADDL JZ SRE02 CJNE A,STAADL,SRE08 SRE02: CLR SM2 MOV SR10,A CLR A MOV SR11,A MOV R7,A MOV R6,A MOV A,SR10 MOV SIOFLG,#80H SJMP SRE68 SRE06: POP DPH POP DPL POP ACC POP PSW RETI SRE08: MOV SIOFLG,#0FFH SETB SM2 SJMP SRE06 ; SREINT: JB RB8,SRE00 ;RB8=1 GO ; ; IT IS COMMAND BYTES SRE20: MOV A,SIOFLG CJNE A,#80H,SRE30 MOV A,SBUF MOV SR14,A INC SIOFLG ;RECEIVE ADDH FLAG JB ACC.7,SRE68 SJMP SRE66 ; ; IT IS ADDH SRE30: CJNE A,#81H,SRE40 MOV A,SBUF ;READ ADDH CJNE A,STAADH,SRE08 MOV SR11,A MOV A,SR10 CJNE A,STAADL,SRE08 MOV A,SR11 SJMP SRE66 ; ;IT IS BCNT LOW BYTE SRE40: CJNE A,#82H,SRE50 MOV A,SBUF MOV R2,A CLR C SUBB A,#FILONG+1 JNC SRE08 MOV A,R2 SJMP SRE66 ; ;IT IS BCNT HIGH BYTE SRE50: CJNE A,#83H,SRE60 MOV A,SBUF JNZ SRE08 INC SIOFLG ;RECEIVE DATA BYTE FLAG MOV DPTR,#SIOBUF MOV R0,DPL MOV R1,DPH CJNE R2,#00H,SRE68 SJMP SRE66 ; ;RECEIVE DATA BYTES SRE60: CJNE A,#84H,SRE70 MOV A,SBUF MOV DPL,R0 MOV DPH,R1 MOVX @DPTR,A INC DPTR MOV R0,DPL MOV R1,DPH DJNZ R2,SRE68 SRE66: INC SIOFLG
;****************************** SRE68: MOV DPTR,#CRCTAB1 XRL A,R6 CLR C RLC A JNC SRE6A INC DPH SRE6A: ADD A,DPL MOV DPL,A CLR A ADDC A,DPH MOV DPH,A CLR A MOVC A,@A+DPTR XRL A,R7 MOV R6,A MOV A,#01H MOVC A,@A+DPTR MOV R7,A ;******************************** SRE6E: LJMP SRE06 ;IT IS CRC LOW SRE70: CJNE A,#85H,SRE80 MOV A,SBUF XRL A,R6 JNZ SRE88 INC SIOFLG ;XORB FLAG
MOV A,SR14 ANL A,#7FH CJNE A,#03H,SRE6E ;NOT COMMAND No. 03(TEXT COMMAND GO) MOV TL0,#00H ;
SJMP SRE6E ;IT IS ACC HIGH SRE80: CJNE A,#86H,SRE88 MOV A,SBUF XRL A,R7 JZ SRDCOM SRE88: LJMP SRE08 ;
; CRC_TAB: DB 000H,000H;00 DB 089H,011H;01 DB 012H,023H;02 DB 09BH,032H;03 DB 024H,046H;04 DB 0ADH,057H;05 DB 036H,065H;06 DB 0BFH,074H;07 DB 048H,08CH;08 DB 0C1H,09DH;09 DB 05AH,0AFH;0A DB 0D3H,0BEH;0B DB 06CH,0CAH;0C DB 0E5H,0DBH;0D DB 07EH,0E9H;0E DB 0F7H,0F8H;0F DB 081H,010H;010 DB 008H,001H;011 DB 093H,033H;012 DB 01AH,022H;013 DB 0A5H,056H;014 DB 02CH,047H;015 DB 0B7H,075H;016 DB 03EH,064H;017 DB 0C9H,09CH;018 DB 040H,08DH;019 DB 0DBH,0BFH;01A DB 052H,0AEH;01B DB 0EDH,0DAH;01C DB 064H,0CBH;01D DB 0FFH,0F9H;01E DB 076H,0E8H;01F DB 002H,021H;020 DB 08BH,030H;021 DB 010H,002H;022 DB 099H,013H;023 DB 026H,067H;024 DB 0AFH,076H;025 DB 034H,044H;026 DB 0BDH,055H;027 DB 04AH,0ADH;028 DB 0C3H,0BCH;029 DB 058H,08EH;02A DB 0D1H,09FH;02B DB 06EH,0EBH;02C DB 0E7H,0FAH;02D DB 07CH,0C8H;02E DB 0F5H,0D9H;02F DB 083H,031H;030 DB 00AH,020H;031 DB 091H,012H;032 DB 018H,003H;033 DB 0A7H,077H;034 DB 02EH,066H;035 DB 0B5H,054H;036 DB 03CH,045H;037 DB 0CBH,0BDH;038 DB 042H,0ACH;039 DB 0D9H,09EH;03A DB 050H,08FH;03B DB 0EFH,0FBH;03C DB 066H,0EAH;03D DB 0FDH,0D8H;03E DB 074H,0C9H;03F DB 004H,042H;040 DB 08DH,053H;041 DB 016H,061H;042 DB 09FH,070H;043 DB 020H,004H;044 DB 0A9H,015H;045 DB 032H,027H;046 DB 0BBH,036H;047 DB 04CH,0CEH;048 DB 0C5H,0DFH;049 DB 05EH,0EDH;04A DB 0D7H,0FCH;04B DB 068H,088H;04C DB 0E1H,099H;04D DB 07AH,0ABH;04E DB 0F3H,0BAH;04F DB 085H,052H;050 DB 00CH,043H;051 DB 097H,071H;052 DB 01EH,060H;053 DB 0A1H,014H;054 DB 028H,005H;055 DB 0B3H,037H;056 DB 03AH,026H;057 DB 0CDH,0DEH;058 DB 044H,0CFH;059 DB 0DFH,0FDH;05A DB 056H,0ECH;05B DB 0E9H,098H;05C DB 060H,089H;05D DB 0FBH,0BBH;05E DB 072H,0AAH;05F DB 006H,063H;060 DB 08FH,072H;061 DB 014H,040H;062 DB 09DH,051H;063 DB 022H,025H;064 DB 0ABH,034H;065 DB 030H,006H;066 DB 0B9H,017H;067 DB 04EH,0EFH;068 DB 0C7H,0FEH;069 DB 05CH,0CCH;06A DB 0D5H,0DDH;06B DB 06AH,0A9H;06C DB 0E3H,0B8H;06D DB 078H,08AH;06E DB 0F1H,09BH;06F DB 087H,073H;070 DB 00EH,062H;071 DB 095H,050H;072 DB 01CH,041H;073 DB 0A3H,035H;074 DB 02AH,024H;075 DB 0B1H,016H;076 DB 038H,007H;077 DB 0CFH,0FFH;078 DB 046H,0EEH;079 DB 0DDH,0DCH;07A DB 054H,0CDH;07B DB 0EBH,0B9H;07C DB 062H,0A8H;07D DB 0F9H,09AH;07E DB 070H,08BH;07F ;----------------------------------------- DB 008H,084H;080 DB 081H,095H;081 DB 01AH,0A7H;082 DB 093H,0B6H;083 DB 02CH,0C2H;084 DB 0A5H,0D3H;085 DB 03EH,0E1H;086 DB 0B7H,0F0H;087 DB 040H,008H;088 DB 0C9H,019H;089 DB 052H,02BH;08A DB 0DBH,03AH;08B DB 064H,04EH;08C DB 0EDH,05FH;08D DB 076H,06DH;08E DB 0FFH,07CH;08F DB 089H,094H;090 DB 000H,085H;091 DB 09BH,0B7H;092 DB 012H,0A6H;093 DB 0ADH,0D2H;094 DB 024H,0C3H;095 DB 0BFH,0F1H;096 DB 036H,0E0H;097 DB 0C1H,018H;098 DB 048H,009H;099 DB 0D3H,03BH;09A DB 05AH,02AH;09B DB 0E5H,05EH;09C DB 06CH,04FH;09D DB 0F7H,07DH;09E DB 07EH,06CH;09F DB 00AH,0A5H;0A0 DB 083H,0B4H;0A1 DB 018H,086H;0A2 DB 091H,097H;0A3 DB 02EH,0E3H;0A4 DB 0A7H,0F2H;0A5 DB 03CH,0C0H;0A6 DB 0B5H,0D1H;0A7 DB 042H,029H;0A8 DB 0CBH,038H;0A9 DB 050H,00AH;0AA DB 0D9H,01BH;0AB DB 066H,06FH;0AC DB 0EFH,07EH;0AD DB 074H,04CH;0AE DB 0FDH,05DH;0AF DB 08BH,0B5H;0B0 DB 002H,0A4H;0B1 DB 099H,096H;0B2 DB 010H,087H;0B3 DB 0AFH,0F3H;0B4 DB 026H,0E2H;0B5 DB 0BDH,0D0H;0B6 DB 034H,0C1H;0B7 DB 0C3H,039H;0B8 DB 04AH,028H;0B9 DB 0D1H,01AH;0BA DB 058H,00BH;0BB DB 0E7H,07FH;0BC DB 06EH,06EH;0BD DB 0F5H,05CH;0BE DB 07CH,04DH;0BF DB 00CH,0C6H;0C0 DB 085H,0D7H;0C1 DB 01EH,0E5H;0C2 DB 097H,0F4H;0C3 DB 028H,080H;0C4 DB 0A1H,091H;0C5 DB 03AH,0A3H;0C6 DB 0B3H,0B2H;0C7 DB 044H,04AH;0C8 DB 0CDH,05BH;0C9 DB 056H,069H;0CA DB 0DFH,078H;0CB DB 060H,00CH;0CC DB 0E9H,01DH;0CD DB 072H,02FH;0CE DB 0FBH,03EH;0CF DB 08DH,0D6H;0D0 DB 004H,0C7H;0D1 DB 09FH,0F5H;0D2 DB 016H,0E4H;0D3 DB 0A9H,090H;0D4 DB 020H,081H;0D5 DB 0BBH,0B3H;0D6 DB 032H,0A2H;0D7 DB 0C5H,05AH;0D8 DB 04CH,04BH;0D9 DB 0D7H,079H;0DA DB 05EH,068H;0DB DB 0E1H,01CH;0DC DB 068H,00DH;0DD DB 0F3H,03FH;0DE DB 07AH,02EH;0DF DB 00EH,0E7H;0E0 DB 087H,0F6H;0E1 DB 01CH,0C4H;0E2 DB 095H,0D5H;0E3 DB 02AH,0A1H;0E4 DB 0A3H,0B0H;0E5 DB 038H,082H;0E6 DB 0B1H,093H;0E7 DB 046H,06BH;0E8 DB 0CFH,07AH;0E9 DB 054H,048H;0EA DB 0DDH,059H;0EB DB 062H,02DH;0EC DB 0EBH,03CH;0ED DB 070H,00EH;0EE DB 0F9H,01FH;0EF DB 08FH,0F7H;0F0 DB 006H,0E6H;0F1 DB 09DH,0D4H;0F2 DB 014H,0C5H;0F3 DB 0ABH,0B1H;0F4 DB 022H,0A0H;0F5 DB 0B9H,092H;0F6 DB 030H,083H;0F7 DB 0C7H,07BH;0F8 DB 04EH,06AH;0F9 DB 0D5H,058H;0FA DB 05CH,049H;0FB DB 0E3H,03DH;0FC DB 06AH,02CH;0FD DB 0F1H,01EH;0FE DB 078H,00FH;0FF |