国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

C語言實現模擬USB對8bit數據的NRZI編碼輸出

2020-01-26 13:37:09
字體:
來源:轉載
供稿:網友

USB的NRZI編碼方式,將原數據進行處理,原數據為0時,編碼成電平翻轉,原數據為1時,編碼成電平不翻轉,USB要發送數據的時候,硬件把數據流轉化成為NRZI編碼,然后經過USB的差分線D+和D-將數據發送出去,接收方在接收數據的后做逆處理,要注意的是,在沒有數據傳輸的時候,也就是空閑的時候,數據線是保持高電平的,這點一定要注意,很多書上就是一筆代過,根本不知道為什么!

在USB的頭部有一個同步域,由7個0組成,當編碼成NRZI的時候,就是一串0101010的方波了,而方波的頻率就是發送的波特率。

#include <stdio.h>//對8bit數據的NRZI編碼 int main(void){ int i , j; unsigned char RawData = 0x00 ; //0000 0000 unsigned char NRZI_Data ; unsigned char buffer[8] ; unsigned char state = 1 , _state; //打印原始數據  printf("RawData:0x%x/n",RawData); //處理8bit數據,將數據保存到數組里  for(i = 0 ; i < 8 ; i ++) { //如果最高位為1時  //如果為1,翻譯成電平不翻轉 if(RawData & 0x80)   buffer[i] = _state ; else  {  //設置一個空閑位idle,后面NRZI變化的時候也要關注它   if(state == 1)  {  buffer[i] = !state ;   state = -1 ;  goto __flag ;  }  buffer[i] = !_state ; } //保持上一個數據的狀態  __flag: _state = buffer[i] ; RawData <<=1 ; } //組合  for(i = 0 , j = 7 ; i < 8 , j >= 0 ; i++ , j--) NRZI_Data |= buffer[i] << j ; printf("NRZI_Data:0x%x/n",NRZI_Data);  return 0 ;}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。如果你想了解更多相關內容請查看下面相關鏈接

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 龙江县| 凤山县| 霍城县| 四子王旗| 滁州市| 洛南县| 滦平县| 商河县| 西乌珠穆沁旗| 务川| 永泰县| 扶绥县| 清镇市| 府谷县| 博罗县| 宣汉县| 娄底市| 泽库县| 邛崃市| 桃园市| 康马县| 乐东| 贵定县| 大渡口区| 梅河口市| 马尔康县| 上饶市| 濮阳县| 当雄县| 思茅市| 普陀区| 和龙市| 饶河县| 漳浦县| 灯塔市| 青铜峡市| 高邑县| 安乡县| 忻州市| 修武县| 清涧县|