| 
  |||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe  | 
  
模擬串口程序接受不到數(shù)據(jù),大家?guī)兔Ψ治鲆幌鲁绦,謝謝 | 
  
| 作者:singlemans 欄目:MCU技術(shù) | 
有做過(guò)模擬串口的兄弟幫忙了,這段接受字符的程序怎么接受不到PC發(fā)出的字節(jié)啊,總是返回01(下面的錯(cuò)誤檢測(cè)),調(diào)2天了,請(qǐng)大家?guī)蛶兔α?br>//MEGA16,8M, //===================================================================== //接收一個(gè)字節(jié) //返回值:接收到的字節(jié)內(nèi)容 //===================================================================== uchar PGetChar(void) { uchar rch,ii; unsigned int dl1=0xFFFF; PORTC |= 0b00001000;//輸入引腳上拉 //等啟始位,并且錯(cuò)后半位再測(cè),抗干擾 while(GET_VMUART_RX() && dl1>0) //低電平是起始位,高電平說(shuō)明沒(méi)有 { ////GET_VMUART_RX()是取輸入引腳的電平 //#define GET_VMUART_RX() (PINC &= (1<<PC3)) if(!GET_VMUART_RX()) break; Nop25();//25個(gè)nop, Nop25(); dl1--; } if (dl1==0) //起始位不來(lái)時(shí) { return 0x01;//返回一個(gè)正常時(shí)不會(huì)用到的數(shù)據(jù),作錯(cuò)誤檢測(cè) } //如果起始位來(lái)了 StartTimer0(Txd_halfBit_Delay);//錯(cuò)后通信的半個(gè)位 loop_until_bit_is_set(TIFR,TOV0); StartTimer0(Txd_Bit_Delay); //等過(guò)起始位延時(shí) loop_until_bit_is_set(TIFR,TOV0);//while(!(TIFR&0x01)); StartTimer0(Txd_Bit_Delay); ii=0; rch=0; //開始接收8位數(shù)據(jù)位 while(ii<8) { rch>>=1; if(GET_VMUART_RX()) { rch |= 0x80; } ii++; loop_until_bit_is_set(TIFR,TOV0);//while(!(TIFR&0x01)); StartTimer0(Txd_Bit_Delay); } //接收停止位 while(!(TIFR&0x01)) { if(GET_VMUART_RX()) //停止位為1 { break; } } //停止timer0 StopTime0(); return rch; }  | 
  
  | 
    
 
  | 
  
| 免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 | 
Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號(hào)  |