|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
接收PS/2條形碼掃描器數(shù)據(jù)源程序,有問題!! |
| 作者:TragicJun 欄目:通信技術(shù) |
用外部中斷去讀取PS/2接口的數(shù)據(jù)端,但是發(fā)現(xiàn)從頭到尾的數(shù)據(jù)位都為1,顯然是有錯誤,請大家看看有什么問題!! //======================================================== // 讀取條形碼掃描器傳送的編碼數(shù)據(jù)程序 //======================================================== #include "SPCE061A.h" #define CLK_Port 0x0004 //IOB2接時鐘口 #define Data_Port 0x0001 //IOB0接數(shù)據(jù)口 void main() { int i; int clkinput=0x0001,datainput; CHAR getCHAR=0x00; //設置IOB口為懸浮式輸入 *P_IOB_Dir=0x0000; *P_IOB_Attrib=0xffff; *P_IOB_Data=0xffff; for(i=0;i<8;i++) { while(clkinput)//等待時鐘線變低,即產(chǎn)生下降沿 { *P_Watchdog_Clear=0x0001; clkinput=*P_IOB_Data; clkinput&=CLK_Port; } datainput=*P_IOB_Data; //立刻讀數(shù)據(jù)端獲得數(shù)據(jù)位 datainput&=Data_Port; getCHAR|=datainput; getCHAR<<=1; //左移一位準備接收下一位 getCHAR&=0xfffe; while(!clkinput)//等待時鐘線變高,一位數(shù)據(jù)接受完畢準備下次接收 { *P_Watchdog_Clear=0x0001; clkinput=*P_IOB_Data; clkinput&=CLK_Port; } *P_Watchdog_Clear=0x0001; } while(1) { *P_Watchdog_Clear=0x0001; } } |
| 2樓: | >>參與討論 |
| 作者: gaolf_2000 于 2006/9/8 8:33:00 發(fā)布:
這樣試試 for(i=0;i<8;i++) { getchar<<=1; //左移一位準備接收下一位 getchar&=0xfffe; while(clkinput)//等待時鐘線變低,即產(chǎn)生下降沿 { *P_Watchdog_Clear=0x0001; clkinput=*P_IOB_Data; clkinput&=CLK_Port; } datainput=*P_IOB_Data; //立刻讀數(shù)據(jù)端獲得數(shù)據(jù)位 datainput&=Data_Port; getchar|=datainput; while(!clkinput)//等待時鐘線變高,一位數(shù)據(jù)接受完畢準備下次接收 { *P_Watchdog_Clear=0x0001; clkinput=*P_IOB_Data; clkinput&=CLK_Port; } *P_Watchdog_Clear=0x0001; } |
|
| 3樓: | >>參與討論 |
| 作者: TragicJun 于 2006/9/8 12:30:00 發(fā)布:
請問這樣跟上面的有什么不同嗎? 請問這樣跟上面的有什么不同嗎? |
|
| 4樓: | >>參與討論 |
| 作者: gaolf_2000 于 2006/9/9 12:16:00 發(fā)布:
按照你原來的程序,8位的最低一位會丟失 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |