📄 cetinet 中国电子技术信息网——51系列单片机-16bit crc assembler program.htm
字号:
<TD height=20><FONT color=#f3f3f3>
<P align=center>2</FONT></P></TD></TR>
<TR>
<TD height=20><FONT color=#ffffff>总共阅读:</FONT></TD></TR>
<TR>
<TD height=20><FONT color=#f3f3f3>
<P align=center>1104</FONT></P></TD></TR>
<TR>
<TD height=20><FONT color=#ffffff>加入日期:</FONT></TD></TR>
<TR>
<TD height=20><FONT color=#f3f3f3>
<P align=center>2002-7-2 17:38:16</FONT></P></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 width=150 border=0>
<TBODY>
<TR>
<TD height=20>
<DIV align=center><FONT color=#ffffff>==相关文章==</FONT></DIV></TD></TR>
<TR>
<TD height=20>
<DIV align=center><FONT color=#ffffff><A
href="http://www.cetinet.com/t_mcu/list.asp?id=360"><FONT
color=#ffffff>推荐一种简单的CRC算法</FONT></A></FONT></DIV></TD></TR>
<TR>
<TD height=20>
<DIV align=center><FONT color=#ffffff><A
href="http://www.cetinet.com/t_mcu/list.asp?id=112"><FONT
color=#ffffff>PIC实现CRC的小程序</FONT></A></FONT></DIV></TD></TR></TBODY></TABLE></TD>
<TD vAlign=top width=600 height=240>
<TABLE height=20 cellSpacing=0 cellPadding=0 width=600 border=0>
<TBODY>
<TR>
<TD bgColor=#5b9595> </TD></TR></TBODY></TABLE>
<TABLE cellSpacing=3 cellPadding=0 width=600 border=0>
<TBODY>
<TR>
<TD bgColor=#aecece height=20>
<DIV align=center><FONT color=#0a52d8><B>16bit CRC assembler
program</B></FONT></DIV></TD></TR>
<TR>
<TD
width=600>16bit CRC assembler program<BR><BR>;----------------------------------------<BR>; STRINT IS EF-NET OUT. THE INT.<BR>; USE INT08<BR>; 1. R1R0 -- TO OUTPUT BUFFER<BR>; R2R3 -- STORE BCNT<BR>; R4 -- STORE STAT<BR>; R7R6 -- STORE CRC<BR>; SIOFLG-- TRANSMIT FLAG.<BR>; IF SIOFLG=00H, OUTPUT BYTE IS BCNTL<BR>; =01H, OUTPUT BYTE IS BCNTH<BR>; =02H, OUTPUT BYTE IS STATE<BR>; =03H, OUTPUT BYTE IS DATA BYTE<BR>; =04H, OUTPUT BYTE IS ADDL<BR>; =05H, OUTPUT BYTE IS ADDH<BR>; =06H, OUTPUT END<BR>;------------------------------------------<BR>STRINT: PUSH PSW<BR> PUSH ACC<BR> PUSH DPL<BR> PUSH DPH<BR> MOV PSW,#08H ;SELECT BANK-1<BR> JBC TI,STR01 ;串口发送中断标志。<BR> MOV TMR04,#00H ;INITIAL WATCH-DOG=120s<BR> MOV TMR05,#08H<BR> CLR RI<BR> LJMP SREINT<BR>; OUTPUT BCNTL<BR>STR01: MOV A,SIOFLG<BR> JNZ STR02<BR> MOV SCON,#0C0H<BR> MOV A,R2<BR> SJMP STR26<BR><BR>; OUTPUT BCNTH<BR>STR02: CJNE A,#01H,STR10<BR> MOV A,R3<BR> SJMP STR26<BR>;<BR>; OUTPUT STAT<BR>STR10: CJNE A,#02H,STR20<BR> INC SIOFLG ;OUT DATA BYTE FLAG<BR> MOV A,R4<BR> DEC R2<BR> CJNE R2,#00H,STR28<BR> SJMP STR26<BR>;<BR>; OUTPUT DATA BYTES<BR>STR20: CJNE A,#03H,STR30<BR> MOV DPL,R0<BR> MOV DPH,R1<BR> MOVX A,@DPTR<BR> INC DPTR<BR> MOV R0,DPL<BR> MOV R1,DPH<BR> DJNZ R2,STR28<BR>STR26: INC SIOFLG<BR><BR>;**************************<BR>STR28: MOV SBUF,A<BR> MOV DPTR,#CRCTAB1<BR> XRL A,R6<BR> CLR C<BR> RLC A<BR> JNC STR2A<BR> INC DPH<BR>STR2A: ADD A,DPL<BR> MOV DPL,A<BR> CLR A<BR> ADDC A,DPH<BR> MOV DPH,A<BR> CLR A<BR> MOVC A,@A+DPTR<BR> XRL A,R7<BR> MOV R6,A<BR> MOV A,#01H<BR> MOVC A,@A+DPTR<BR> MOV R7,A<BR>;********************************<BR> SJMP STR8A<BR>;<BR>; OUTPUT ADDL<BR>STR30: CJNE A,#04H,STR40<BR> INC SIOFLG<BR> MOV SBUF,R6<BR> SJMP STR8A<BR>;<BR>; OUTPUT ADDH<BR>STR40: CJNE A,#05H,STR48<BR> INC SIOFLG<BR> MOV SBUF,R7<BR> SJMP STR8A<BR>STR48: MOV SCON,#0F0H<BR> SETB HATSIO<BR>STR8A: POP DPH<BR> POP DPL<BR> POP ACC<BR> POP PSW<BR> RETI<BR>;<BR>;-----------------------------------<BR>; SREINT IS EF-NET RECEIVE THE INT.<BR>; USE RI INT.(INT09)<BR>; 1. SIOFLG,7=0 IS SLAVE MODE RECEIVE<BR>; R1R0 --- INPUT BUFFER ADDR<BR>; R2 --- STORE BCNT<BR>; R6 --- STORE ADDBL<BR>; R7 --- STORE ADDBH<BR>;<BR>; SR10--- STORE RECEIVED ADDR<BR>; SR12--- STORE BCNT<BR>; SR14--- STORE COMMAND NO.<BR>; IF SIOFLG=80H, RECEIVE BYTE IS COMMAND BYTE<BR>; =81H, RECEIVE BYTE IS ADDH BYTE<BR>; =82H, RECEIVE BYTE IS BCNT LOW BYTE<BR>; =83H, RECEIVE BYTE IS BCNT HIGH BYTE<BR>; =84H, RECEIVE BYTE IS DATA BYTE<BR>; =85H, RECEIVE BYTE IS ADDBH<BR>; =86H, RECEIVE BYTE IS ADDBL<BR>; SIOFLG.4=1 THEN BROADCAST COMMADN<BR>;------------------------------------------------<BR>;<BR>SRE00: MOV A,SBUF ;READ ADDL<BR> JZ SRE02<BR> CJNE A,STAADL,SRE08<BR>SRE02: CLR SM2<BR> MOV SR10,A<BR> CLR A<BR> MOV SR11,A<BR> MOV R7,A<BR> MOV R6,A<BR> MOV A,SR10<BR> MOV SIOFLG,#80H<BR> SJMP SRE68<BR>SRE06: POP DPH<BR> POP DPL<BR> POP ACC<BR> POP PSW<BR> RETI<BR>SRE08: MOV SIOFLG,#0FFH<BR> SETB SM2<BR> SJMP SRE06<BR>;<BR>SREINT: JB RB8,SRE00 ;RB8=1 GO<BR>;<BR>; IT IS COMMAND BYTES<BR>SRE20: MOV A,SIOFLG<BR> CJNE A,#80H,SRE30<BR> MOV A,SBUF<BR> MOV SR14,A<BR> INC SIOFLG ;RECEIVE ADDH FLAG<BR> JB ACC.7,SRE68<BR> SJMP SRE66<BR>;<BR>; IT IS ADDH<BR>SRE30: CJNE A,#81H,SRE40<BR> MOV A,SBUF ;READ ADDH<BR> CJNE A,STAADH,SRE08<BR> MOV SR11,A<BR> MOV A,SR10<BR> CJNE A,STAADL,SRE08<BR> MOV A,SR11<BR> SJMP SRE66<BR>;<BR>;IT IS BCNT LOW BYTE<BR>SRE40: CJNE A,#82H,SRE50<BR> MOV A,SBUF<BR> MOV R2,A<BR> CLR C<BR> SUBB A,#FILONG+1<BR> JNC SRE08<BR> MOV A,R2<BR> SJMP SRE66<BR>;<BR>;IT IS BCNT HIGH BYTE<BR>SRE50: CJNE A,#83H,SRE60<BR> MOV A,SBUF<BR> JNZ SRE08<BR> INC SIOFLG ;RECEIVE DATA BYTE FLAG<BR> MOV DPTR,#SIOBUF<BR> MOV R0,DPL<BR> MOV R1,DPH<BR> CJNE R2,#00H,SRE68<BR> SJMP SRE66<BR>;<BR>;RECEIVE DATA BYTES<BR>SRE60: CJNE A,#84H,SRE70<BR> MOV A,SBUF<BR> MOV DPL,R0<BR> MOV DPH,R1<BR> MOVX @DPTR,A<BR> INC DPTR<BR> MOV R0,DPL<BR> MOV R1,DPH<BR> DJNZ R2,SRE68<BR>SRE66: INC SIOFLG<BR><BR>;******************************<BR>SRE68: MOV DPTR,#CRCTAB1<BR> XRL A,R6<BR> CLR C<BR> RLC A<BR> JNC SRE6A<BR> INC DPH<BR>SRE6A: ADD A,DPL<BR> MOV DPL,A<BR> CLR A<BR> ADDC A,DPH<BR> MOV DPH,A<BR> CLR A<BR> MOVC A,@A+DPTR<BR> XRL A,R7<BR> MOV R6,A<BR> MOV A,#01H<BR> MOVC A,@A+DPTR<BR> MOV R7,A<BR>;********************************<BR>SRE6E: LJMP SRE06<BR>;IT IS CRC LOW<BR>SRE70: CJNE A,#85H,SRE80<BR> MOV A,SBUF<BR> XRL A,R6<BR> JNZ SRE88<BR> INC SIOFLG ;XORB FLAG<BR><BR> MOV A,SR14<BR> ANL A,#7FH<BR> CJNE A,#03H,SRE6E ;NOT COMMAND No. 03(TEXT COMMAND GO)<BR> MOV TL0,#00H ;<BR><BR> SJMP SRE6E<BR>;IT IS ACC HIGH<BR>SRE80: CJNE A,#86H,SRE88<BR> MOV A,SBUF<BR> XRL A,R7<BR> JZ SRDCOM<BR>SRE88: LJMP SRE08<BR>;<BR><BR><BR><BR>;<BR>CRC_TAB: DB 000H,000H;00<BR> DB 089H,011H;01<BR> DB 012H,023H;02<BR> DB 09BH,032H;03<BR> DB 024H,046H;04<BR> DB 0ADH,057H;05<BR> DB 036H,065H;06<BR> DB 0BFH,074H;07<BR> DB 048H,08CH;08<BR> DB 0C1H,09DH;09<BR> DB 05AH,0AFH;0A<BR> DB 0D3H,0BEH;0B<BR> DB 06CH,0CAH;0C<BR> DB 0E5H,0DBH;0D<BR> DB 07EH,0E9H;0E<BR> DB 0F7H,0F8H;0F<BR> DB 081H,010H;010<BR> DB 008H,001H;011<BR> DB 093H,033H;012<BR> DB 01AH,022H;013<BR> DB 0A5H,056H;014<BR> DB 02CH,047H;015<BR> DB 0B7H,075H;016<BR> DB 03EH,064H;017<BR> DB 0C9H,09CH;018<BR> DB 040H,08DH;019<BR> DB 0DBH,0BFH;01A<BR> DB 052H,0AEH;01B<BR> DB 0EDH,0DAH;01C<BR> DB 064H,0CBH;01D<BR> DB 0FFH,0F9H;01E<BR> DB 076H,0E8H;01F<BR> DB 002H,021H;020<BR> DB 08BH,030H;021<BR> DB 010H,002H;022<BR> DB 099H,013H;023<BR> DB 026H,067H;024<BR> DB 0AFH,076H;025<BR> DB 034H,044H;026<BR> DB 0BDH,055H;027<BR> DB 04AH,0ADH;028<BR> DB 0C3H,0BCH;029<BR> DB 058H,08EH;02A<BR> DB 0D1H,09FH;02B<BR> DB 06EH,0EBH;02C<BR> DB 0E7H,0FAH;02D<BR> DB 07CH,0C8H;02E<BR> DB 0F5H,0D9H;02F<BR> DB 083H,031H;030<BR> DB 00AH,020H;031<BR> DB 091H,012H;032<BR> DB 018H,003H;033<BR> DB 0A7H,077H;034<BR> DB 02EH,066H;035<BR> DB 0B5H,054H;036<BR> DB 03CH,045H;037<BR> DB 0CBH,0BDH;038<BR> DB 042H,0ACH;039<BR> DB 0D9H,09EH;03A<BR> DB 050H,08FH;03B<BR> DB 0EFH,0FBH;03C<BR> DB 066H,0EAH;03D<BR> DB 0FDH,0D8H;03E<BR> DB 074H,0C9H;03F<BR> DB 004H,042H;040<BR> DB 08DH,053H;041<BR> DB 016H,061H;042<BR> DB 09FH,070H;043<BR> DB 020H,004H;044<BR> DB 0A9H,015H;045<BR> DB 032H,027H;046<BR> DB 0BBH,036H;047<BR> DB 04CH,0CEH;048<BR> DB 0C5H,0DFH;049<BR> DB 05EH,0EDH;04A<BR> DB 0D7H,0FCH;04B<BR> DB 068H,088H;04C<BR> DB 0E1H,099H;04D<BR> DB 07AH,0ABH;04E<BR> DB 0F3H,0BAH;04F<BR> DB 085H,052H;050<BR> DB 00CH,043H;051<BR> DB 097H,071H;052<BR> DB 01EH,060H;053<BR> DB 0A1H,014H;054<BR> DB 028H,005H;055<BR> DB 0B3H,037H;056<BR> DB 03AH,026H;057<BR> DB 0CDH,0DEH;058<BR> DB 044H,0CFH;059<BR> DB 0DFH,0FDH;05A<BR> DB 056H,0ECH;05B<BR> DB 0E9H,098H;05C<BR> DB 060H,089H;05D<BR> DB 0FBH,0BBH;05E<BR> DB 072H,0AAH;05F<BR> DB 006H,063H;060<BR> DB 08FH,072H;061<BR> DB 014H,040H;062<BR> DB 09DH,051H;063<BR> DB 022H,025H;064<BR> DB 0ABH,034H;065<BR> DB 030H,006H;066<BR> DB 0B9H,017H;067<BR> DB 04EH,0EFH;068<BR> DB 0C7H,0FEH;069<BR> DB 05CH,0CCH;06A<BR> DB 0D5H,0DDH;06B<BR> DB 06AH,0A9H;06C<BR> DB 0E3H,0B8H;06D<BR> DB 078H,08AH;06E<BR> DB 0F1H,09BH;06F<BR> DB 087H,073H;070<BR> DB 00EH,062H;071<BR> DB 095H,050H;072<BR> DB 01CH,041H;073<BR> DB 0A3H,035H;074<BR> DB 02AH,024H;075<BR> DB 0B1H,016H;076<BR> DB 038H,007H;077<BR> DB 0CFH,0FFH;078<BR> DB 046H,0EEH;079<BR> DB 0DDH,0DCH;07A<BR> DB 054H,0CDH;07B<BR> DB 0EBH,0B9H;07C<BR> DB 062H,0A8H;07D<BR> DB 0F9H,09AH;07E<BR> DB 070H,08BH;07F<BR>;-----------------------------------------<BR> DB 008H,084H;080<BR> DB 081H,095H;081<BR> DB 01AH,0A7H;082<BR> DB 093H,0B6H;083<BR> DB 02CH,0C2H;084<BR> DB 0A5H,0D3H;085<BR> DB 03EH,0E1H;086<BR> DB 0B7H,0F0H;087<BR> DB 040H,008H;088<BR> DB 0C9H,019H;089<BR> DB 052H,02BH;08A<BR> DB 0DBH,03AH;08B<BR> DB 064H,04EH;08C<BR> DB 0EDH,05FH;08D<BR> DB 076H,06DH;08E<BR> DB 0FFH,07CH;08F<BR> DB 089H,094H;090<BR> DB 000H,085H;091<BR> DB 09BH,0B7H;092<BR> DB 012H,0A6H;093<BR> DB 0ADH,0D2H;094<BR> DB 024H,0C3H;095<BR> DB 0BFH,0F1H;096<BR> DB 036H,0E0H;097<BR> DB 0C1H,018H;098<BR> DB 048H,009H;099<BR> DB 0D3H,03BH;09A<BR> DB 05AH,02AH;09B<BR> DB 0E5H,05EH;09C<BR> DB 06CH,04FH;09D<BR> DB 0F7H,07DH;09E<BR> DB 07EH,06CH;09F<BR> DB 00AH,0A5H;0A0<BR> DB 083H,0B4H;0A1<BR> DB 018H,086H;0A2<BR> DB 091H,097H;0A3<BR> DB 02EH,0E3H;0A4<BR> DB 0A7H,0F2H;0A5<BR> DB 03CH,0C0H;0A6<BR> DB 0B5H,0D1H;0A7<BR> DB 042H,029H;0A8<BR> DB 0CBH,038H;0A9<BR> DB 050H,00AH;0AA<BR> DB 0D9H,01BH;0AB<BR> DB 066H,06FH;0AC<BR> DB 0EFH,07EH;0AD<BR> DB 074H,04CH;0AE<BR> DB 0FDH,05DH;0AF<BR> DB 08BH,0B5H;0B0<BR> DB 002H,0A4H;0B1<BR> DB 099H,096H;0B2<BR> DB 010H,087H;0B3<BR> DB 0AFH,0F3H;0B4<BR> DB 026H,0E2H;0B5<BR> DB 0BDH,0D0H;0B6<BR> DB 034H,0C1H;0B7<BR> DB 0C3H,039H;0B8<BR> DB 04AH,028H;0B9<BR> DB 0D1H,01AH;0BA<BR> DB 058H,00BH;0BB<BR> DB 0E7H,07FH;0BC<BR> DB 06EH,06EH;0BD<BR> DB 0F5H,05CH;0BE<BR> DB 07CH,04DH;0BF<BR> DB 00CH,0C6H;0C0<BR> DB 085H,0D7H;0C1<BR> DB 01EH,0E5H;0C2<BR> DB 097H,0F4H;0C3<BR> DB 028H,080H;0C4<BR> DB 0A1H,091H;0C5<BR> DB 03AH,0A3H;0C6<BR> DB 0B3H,0B2H;0C7<BR> DB 044H,04AH;0C8<BR> DB 0CDH,05BH;0C9<BR> DB 056H,069H;0CA<BR> DB 0DFH,078H;0CB<BR> DB 060H,00CH;0CC<BR> DB 0E9H,01DH;0CD<BR> DB 072H,02FH;0CE<BR> DB 0FBH,03EH;0CF<BR> DB 08DH,0D6H;0D0<BR> DB 004H,0C7H;0D1<BR> DB 09FH,0F5H;0D2<BR> DB 016H,0E4H;0D3<BR> DB 0A9H,090H;0D4<BR> DB 020H,081H;0D5<BR> DB 0BBH,0B3H;0D6<BR> DB 032H,0A2H;0D7<BR> DB 0C5H,05AH;0D8<BR> DB 04CH,04BH;0D9<BR> DB 0D7H,079H;0DA<BR> DB 05EH,068H;0DB<BR> DB 0E1H,01CH;0DC<BR> DB 068H,00DH;0DD<BR> DB 0F3H,03FH;0DE<BR> DB 07AH,02EH;0DF<BR> DB 00EH,0E7H;0E0<BR> DB 087H,0F6H;0E1<BR> DB 01CH,0C4H;0E2<BR> DB 095H,0D5H;0E3<BR> DB 02AH,0A1H;0E4<BR> DB 0A3H,0B0H;0E5<BR> DB 038H,082H;0E6<BR> DB 0B1H,093H;0E7<BR> DB 046H,06BH;0E8<BR> DB 0CFH,07AH;0E9<BR> DB 054H,048H;0EA<BR> DB 0DDH,059H;0EB<BR> DB 062H,02DH;0EC<BR> DB 0EBH,03CH;0ED<BR> DB 070H,00EH;0EE<BR> DB 0F9H,01FH;0EF<BR> DB 08FH,0F7H;0F0<BR> DB 006H,0E6H;0F1<BR> DB 09DH,0D4H;0F2<BR> DB 014H,0C5H;0F3<BR> DB 0ABH,0B1H;0F4<BR> DB 022H,0A0H;0F5<BR> DB 0B9H,092H;0F6<BR> DB 030H,083H;0F7<BR> DB 0C7H,07BH;0F8<BR> DB 04EH,06AH;0F9<BR> DB 0D5H,058H;0FA<BR> DB 05CH,049H;0FB<BR> DB 0E3H,03DH;0FC<BR> DB 06AH,02CH;0FD<BR> DB 0F1H,01EH;0FE<BR> DB 078H,00FH;0FF<BR></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></DIV></DIV>
<DIV align=center><BR><BR>
<P align=center>本站所载文章力求原创,部分资料转自网上,假如您认为某些文章侵犯了您的权益,<BR>请<A
href="mailto:aoe@cetinet.com">告知我们</A>,我们将在最短的时间内删除有关文章。本站转载文章均注明出处。<BR>兄弟网站如果转载本站文章请注明本站版权,谢谢!
<P align=center>cetinet 文章管理系统由:<A href="mailto:aoe@cetinet.com">aoe</A>
制作<BR>Copyright (C) 2001 <A href="http://www.cetinet.com/"
target=_blank>http://www.cetinet.com/</A> All Rights Reserved
</P></DIV></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -