您的位置:
首頁
>>
管理中心
>>
行業資訊
>>修改新聞資訊信息
資訊類型:
行業要聞
企業動態
新品速遞
解決方案
交流培訓
嘉賓訪談
產業縱橫
人物聚焦
展會動態
會展報告
本站動態
標 題:
*
頁面廣告:
不顯示
顯示
副 標 題:
關 鍵 字:
多個關鍵字請用“
/
”分隔,如:西門子/重大新聞
內容描述:
新聞來源:
鏈 接:
責任編輯:
標題圖片:
無
當編輯區有插入圖片時,將自動填充此下拉框
*
所屬類別:
(不超過20項)
電源產品分類
:
UPS電源
穩壓電源
EPS電源
變頻電源
凈化電源
特種電源
發電機組
開關電源(AC/DC)
逆變電源(DC/AC)
模塊電源(DC/DC)
電源應用分類
:
通信電源
電力電源
車載電源
軍工電源
航空航天電源
工控電源
PC電源
LED電源
電鍍電源
焊接電源
加熱電源
醫療電源
家電電源
便攜式電源
充電機(器)
勵磁電源
電源配套分類
:
功率器件
防雷浪涌
測試儀器
電磁兼容
電源IC
電池/蓄電池
電池檢測
變壓器
傳感器
軸流風機
電子元件
連接器及端子
散熱器
電解電容
PCB/輔助材料
新能源分類
:
太陽能(光伏發電)
風能發電
潮汐發電
水利發電
燃料電池
其他類
:
其他
靜態頁面:
生成靜態頁面
*
內 容:
<P>一、計算步驟:</P> <P>1、定義一個初始值為FFFF的16位的組合變量(regs),該變量稱為CRC寄存器。</P> <P>2、把欲發送或接收消息的高8位和CRC寄存器的底8位作異或運算,并把結果在賦到CRC寄存器。</P> <P>3、CRC寄存器右移1位(朝最低位),同時最高位添零。取出并檢查最低位是否為1。</P> <P>4、如果為1,則CRC寄存器與多項式A001異或;如果為0,則重復第3步的動作。</P> <P>5、重復3和4直到完成了8次移位。這樣完整的8位字節將完成處理了。</P> <P>6、對于下一個8位字節的處理就是重復第2步到第5步了</P> <P>7、把所有的欲發送或接收消息這樣處理后,CRC寄存器里的值就是我們最終需要得到的CRC校驗碼(在result中)。</P> <P>二、C51源程序</P> <P>/*CRC數組計算程序*/</P> <P>#include <stdio.h></P> <P>typedef unsigned char uchar;//定義簡寫類型</P> <P>typedef unsigned short u16;//定義簡寫類型</P> <P>u16 result;//放計算后的CRC結果值</P> <P>u16 len=6;//參與計算的數組個數(不包括CRC兩子節)</P> <P>//數組1</P> <P>//uchar ppp[]={0xFF,0x03,0xC0,0x21,0x04,0x03,0x00,0x07,0x0D,0x03,0x06};</P> <P>//CRC高節=0x9b,CRC低節=0x03,即result=0x9B03 len=11</P> <P>//數組2</P> <P>uchar ppp[]={0x64,0x03,0x00,0x0A,0x00,0x01};</P> <P>//CRC高節=0xfd,CRC低節=0xad 即result=0xfdad len=6</P> <P>//定義組合結構 </P> <P>typedef union </P> <P>{</P> <P> u16 val;</P> <P> struct</P> <P> {</P> <P> u16 bit0 : 1;</P> <P> u16 bit1 : 1;</P> <P> u16 bit2 : 1;</P> <P> u16 bit3 : 1;</P> <P> u16 bit4 : 1;</P> <P> u16 bit5 : 1;</P> <P> u16 bit6 : 1;</P> <P> u16 bit7 : 1;</P> <P> u16 bit8 : 1;</P> <P> u16 bit9 : 1;</P> <P> u16 bit10 : 1;</P> <P> u16 bit11 : 1;</P> <P> u16 bit12 : 1;</P> <P> u16 bit13 : 1;</P> <P> u16 bit14 : 1;</P> <P> u16 bit15 : 1;</P> <P> } bits;</P> <P>} CRCREGS;</P> <P>CRCREGS regs;</P> <P> </P> <P>u16 CRCCheck(uchar *pp,u16 CRClen)</P> <P>{</P> <P>bit a;</P> <P>int i,j;</P> <P>regs.val=0xffff;</P> <P>pp=&ppp[0];</P> <P>for(i=0;i<CRClen;i++)</P> <P> {</P> <P> regs.val^=pp[i];</P> <P> for(j=0;j<8;j++)</P> <P> {</P> <P> a=regs.bits.bit0;</P> <P> regs.val>>=1; </P> <P> if(a) regs.val^=0xA001;</P> <P> }</P> <P> }</P> <P> return regs.val;</P> <P>}</P> <P> </P> <P>/* 主程序 */</P> <P>void main()</P> <P>{ </P> <P>result=CRCCheck(ppp,len);</P> <P>}</P> <P>三、簡要說明</P> <P>1、程序中列了兩組數,可以做測試用,結果都在注釋中,注意 len 的值要與數組的個數相匹配,數組1為11,數組2為6;</P> <P>2、regs.val是一個共用體變量,該變量既可以作為字用,也可以進行位操作,詳細情況請參照變量union和共用和struct結構類型體說明;</P> <P>3、在主程序中直接調用result=CRCCheck(ppp,len);即可得到CRC-16結果,注意ppp是一個數組變量,在函數中是當成數組變量指針用的。</P>本人參考了許多資料,通過反復修本人認為是比較精練的C51程序,完全可以直接用到編程中去。希望能夠對同行有所幫助。
主站蜘蛛池模板:
综合三区后入内射国产馆
|
狠狠色狠狠色综合日日五
|
99久久婷婷国产综合精品草原
|
精品综合久久久久久97
|
精品国产第一国产综合精品
|
亚洲综合日韩久久成人AV
|
亚洲国产成人久久综合野外
|
一本色道久久99一综合
|
久久综合五月丁香久久激情
|
一本久久综合亚洲鲁鲁五月天
|
色天使亚洲综合在线观看
|
天天久久狠狠色综合
|
亚洲国产综合91精品麻豆
|
精品国产第一国产综合精品
|
国产成人精品综合在线观看
|
激情五月综合综合久久69
|
老色鬼久久亚洲AV综合
|
区三区激情福利综合中文字幕在线一区亚洲视频1
|
激情综合色综合久久综合
|
亚洲伊人色欲综合网
|
一97日本道伊人久久综合影院
|
一本色道久久88加勒比—综合
|
亚洲国产日韩成人综合天堂
|
欧美αv日韩αv另类综合
|
久久久久综合国产欧美一区二区
|
久久综合亚洲欧美成人
|
色综合天天综合网国产成人网
|
色噜噜成人综合网站
|
中文字幕亚洲综合久久
|
亚洲图片综合区
|
91精品国产综合久久香蕉
|
人妻 日韩 欧美 综合 制服
|
伊人亚洲综合网
|
俺来也俺去啦久久综合网
|
亚洲 欧美 日韩 综合aⅴ视频
|
色天使久久综合网天天
|
亚洲香蕉网久久综合影视
|
国产色综合一二三四
|
综合国产在线观看无码
|
伊人情人综合成人久久网小说
|
亚洲国产日韩成人综合天堂
|