[贈碼] ASM CRC16 For Keil C51
C宣告:
extern unsigned char data CRCH;
extern unsigned char data CRCL;
#define resetCRC16() {CRCH=0;CRCL=0;}
extern char caCRC16(char c);
ASM:
NAME CRC16_ASM51
CDCRC16_ASM51 SEGMENT CODE
DACRC16_ASM51 SEGMENT DATA
PUBLIC caCRC16
PUBLIC CRCH
PUBLIC CRCL
;-----------------------------------
RSEG DACRC16_ASM51
CRCH: DS 1
CRCL: DS 1
;-----------------------------------
RSEG CDCRC16_ASM51
caCRC16:
_caCRC16:
MOV A,R7
PUSH ACC
XRL A,CRCL
MOV CRCL,CRCH
MOV CRCH,A
MOV C,P
JNC CRCF0
XRL CRCL,#001H
CRCF0:
RRC A
JNC CRCF1
XRL CRCL,#040H
CRCF1:
MOV C,ACC.7
XRL A,CRCH
RRC A
MOV CRCH,A
JNC CRCF2
XRL CRCL,#080H
CRCF2:
POP ACC
RET
;-----------------------------------
;-----------------------------------
END
使用說明:
先RESET掉CRC16的兩個答案REGISTER
然後把要算的東西統統逐字用caCRC()丟進去,然後從 CRCH跟CRCL兩個暫
存變數取得CRC。
著作權宣告:
Wolflord 保留著作權,但無償開放給PTT ASM 板板友自由修改、使用。
免責聲明:
本程式碼無償開放給不特定對象使用,程式作者不擔保任何因使用本程式
碼導致的任何瑕疵或損失。
--
作別人不願作的事,是好人!。 作別人不敢作的事,是壞人!。
作別人不能作的事,是天才!。 作別人不會作的事,是…腦殘!!
WolfLord
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.46.218.248
→
04/26 23:41, , 1F
04/26 23:41, 1F
→
04/26 23:41, , 2F
04/26 23:41, 2F
→
04/27 01:58, , 3F
04/27 01:58, 3F
推
04/27 10:55, , 4F
04/27 10:55, 4F
推
04/27 10:58, , 5F
04/27 10:58, 5F
→
04/27 20:39, , 6F
04/27 20:39, 6F
推
04/28 01:12, , 7F
04/28 01:12, 7F
→
04/28 01:22, , 8F
04/28 01:22, 8F
→
04/28 02:09, , 9F
04/28 02:09, 9F
→
04/28 02:11, , 10F
04/28 02:11, 10F
→
04/28 05:12, , 11F
04/28 05:12, 11F
→
04/28 05:12, , 12F
04/28 05:12, 12F
→
04/28 05:15, , 13F
04/28 05:15, 13F
→
04/28 20:44, , 14F
04/28 20:44, 14F
推
04/29 00:54, , 15F
04/29 00:54, 15F
→
04/29 01:14, , 16F
04/29 01:14, 16F
ASM 近期熱門文章
PTT數位生活區 即時熱門文章