|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
求助通信問題 |
| 作者:wangyanshuai 欄目:單片機 |
有誰碰到過這種情況說一下經(jīng)驗? |
| 2樓: | >>參與討論 |
| 作者: aibxyz 于 2007/1/10 14:50:05 發(fā)布:
先看下軟件上,有沒有出現(xiàn)反應(yīng)不及丟失數(shù)據(jù)或緩存區(qū)溢出未處理等問題 調(diào)整下發(fā)送的頻率,看看和時間又沒什么關(guān)系 再分析其他的 |
|
| 3樓: | >>參與討論 |
| 作者: vico 于 2007/1/10 15:44:18 發(fā)布:
同意,換個波特率試試! |
|
| 4樓: | >>參與討論 |
| 作者: wangyanshuai 于 2007/1/10 16:24:12 發(fā)布:
我試過了,還是不行,我又把接受到的數(shù)據(jù)顯示了一下,發(fā)現(xiàn)第二次的數(shù)據(jù)向后推了兩個地址空間,所以無法通信,不過不知道怎么會事,再一次又好了,自動恢復(fù)了?郁悶 |
|
| 5樓: | >>參與討論 |
| 作者: wujing198 于 2007/1/10 22:10:16 發(fā)布:
以下是引用 wangyanshuai 在(2007-1-10 16:24:12)的發(fā)言 我試過了,還是不行,我又把接受到的數(shù)據(jù)顯示了一下,發(fā)現(xiàn)第二次的數(shù)據(jù)向后推了兩個地址空間,所以無法通信,不過不知道怎么會事,再一次又好了,自動恢復(fù)了?郁悶 第2次的數(shù)據(jù)向后推了兩個地址空間是什么意思? |
|
| 6樓: | >>參與討論 |
| 作者: wangyanshuai 于 2007/1/11 8:11:36 發(fā)布:
就是第二次接受到的數(shù)據(jù)是從規(guī)定的開始地址后的兩個地址以后 |
|
| 7樓: | >>參與討論 |
| 作者: 慕容帝 于 2007/1/11 11:39:58 發(fā)布:
看看發(fā)送和接收的字節(jié)數(shù)是否對應(yīng)?(發(fā)送了幾個字節(jié),接收的字節(jié)也應(yīng)該是幾) |
|
| 8樓: | >>參與討論 |
| 作者: 慕容帝 于 2007/1/11 11:41:59 發(fā)布:
懷疑可能是你的接收字節(jié)比發(fā)送的多了兩個。如果可以把程序發(fā)上來給大家看看更好明白問題所在~! |
|
| 9樓: | >>參與討論 |
| 作者: wangyanshuai 于 2007/1/11 12:48:59 發(fā)布:
我是根據(jù)0DH判斷結(jié)束的,而不是字節(jié)數(shù),可以,不過我怕耽誤大家的時間啊,只要誰碰到過這種情況就告訴我,我把我的程序發(fā)上來你們看看 ORG 0000H LJMP MAIN ORG 000BH LJMP INTR0 ORG 0023H LJMP ZHUYAO ORG 0100H ;--------------------寫顯示------------ XS: CLR P1.7 ;選通 SETB P1.5 ;數(shù)據(jù)發(fā)送 SETB P1.6 ;時鐘發(fā)送 ; MOV R0,#55H ;r0數(shù)據(jù)地址 MOV R1,#05H ;數(shù)據(jù)個數(shù)(5位) ;---------------循環(huán)送顯--------------- XS2: MOV R2,#08H MOV A,@R0 XS1: RLC A ;左移 MOV P1.5,C CLR P1.6 NOP NOP SETB P1.6 NOP DJNZ R2,XS1 ;發(fā)送完一個數(shù)據(jù)。地址減1 DEC R0 DJNZ R1,XS2 SETB P1.5 SETB P1.7 ;點亮 RET /*****************************延時子程序****************************/ DELAY: MOV R6,#05FH ;延時1.5ms DELAY1: MOV R7,#10H DELAY2: DJNZ R7,DELAY2 DJNZ R6,DELAY1 RET DELAY10: MOV R6,#50H ;延時10ms DE1: MOV R7,#7BH DE2: DJNZ R7,DE2 DJNZ R6,DE1 RET DELAY100:MOV R5,#0AH DE100: LCALL DELAY10 DJNZ R5,DE100 RET /*****************************取顯示代碼****************************/ QUSHU: MOV R0,#20H ;取顯示代碼,如果為#40H,則不變,直接送顯。 MOV R1,#55H MOV R7,#05H MOV DPTR,#TAB QULOOP: MOV A,@R0 CJNE A,#40H,GOON SJMP GOON1 GOON: MOVC A,@A+DPTR GOON1: MOV @R1,A INC R0 INC R1 DJNZ R7,QULOOP RET /***************************將串口得到的數(shù)處理后存入20后的地址空間*********/ CUNSHU: MOV R7,#05H ; 接收到的數(shù)據(jù)移動到20H開始的地址中,如果為#40H,則不變,直接存入。 MOV R1,#20H MOV R0,#61H CUNLOOP:MOV A,@R0 CJNE A,#40H,GO SJMP GO1 GO: CLR C SUBB A,#30H GO1: MOV @R1,A INC R0 INC R1 DJNZ R7,CUNLOOP RET GXS: MOV R2,#40 ;發(fā)送5*8=40段 GXS1: CLR P1.5 GXS2: CLR P1.6 NOP SETB P1.6 DJNZ R2,GXS2 SETB P1.5 MOV R2,#0FFH GXS4: MOV R3,#0FFH GXS3: NOP DJNZ R3,GXS3 DJNZ R2,GXS4 RET TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;------------------------------------*/ DOG: CLR P1.4 ;看門狗 NOP NOP NOP NOP SETB P1.4 RET ;---------------清0地址空間------------------------------/ QING: MOV A,#00H MOV R7,#0FH QING1: MOV R0,#60H MOV @R0,A DJNZ R7,QING1 RET /***************************串口發(fā)送子程序,配合中斷程序,此處無中斷*************/ GSES: CLR ES SETB P3.2 SEND2: MOV A,@R0 INC R0 CJNE A,#0AH,SEND SJMP SENDP SEND: MOV SBUF,A SEND1: JNB TI,SEND1 CLR TI SJMP SEND2 SENDP: CLR P3.2 SETB ES RET /****************************中斷處理子程序***********************/ ZHUYAO: PUSH DPH PUSH DPL PUSH PSW PUSH ACC CLR ES JBC TI,SSSS1 JNB RI,SSSGD CLR RI |
|
| 10樓: | >>參與討論 |
| 作者: 慕容帝 于 2007/1/11 16:59:13 發(fā)布:
呵呵,程序有點長。有興趣的可以看看,一定會有收獲的。先置頂~。 |
|
| 11樓: | >>參與討論 |
| 作者: 慕容帝 于 2007/1/11 17:14:17 發(fā)布:
問下。是所有命令都會錯還是單獨哪個? |
|
| 12樓: | >>參與討論 |
| 作者: wangyanshuai 于 2007/1/12 17:22:55 發(fā)布:
謝謝斑竹了,我已經(jīng)解決了,我用舜的堵的方法把那些接收到的沒用的給堵上了,呵呵,拐了個彎。 我在接收到以后只有接收到特定的符號才開始存入緩沖區(qū),就可以防止多接收的那幾位。 |
|
| 13樓: | >>參與討論 |
| 作者: 慕容帝 于 2007/1/13 11:27:33 發(fā)布:
哦。那就好。如果有時間還是搞清楚問題原因好,避免留下隱患。 |
|
| 14樓: | >>參與討論 |
| 作者: LB 于 2007/1/14 22:21:33 發(fā)布:
學習 |
|
| 15樓: | >>參與討論 |
| 作者: wangyanshuai 于 2007/1/15 8:33:55 發(fā)布:
是啊,這點是肯定的,如果不行的話,我就每一步都檢測,肯定行。 |
|
| 16樓: | >>參與討論 |
| 作者: vico 于 2007/1/15 9:07:14 發(fā)布:
你把關(guān)鍵的部分弄出來就oK了,這麼長的程序,看得人頭暈! 單片機 串口通信要求1,接口連結(jié)無誤2,理解RS-232通信協(xié)議3,數(shù)據(jù)收發(fā)程序. 單片機數(shù)據(jù)傳送很容易受到干擾,因此要數(shù)據(jù)校驗.一般用的奇偶校驗,但這種方法容易出現(xiàn)很多誤碼.最保險的用冗余碼校驗或者查表法,具體的你看看書. 把你的程序關(guān)鍵部分分為 發(fā)送數(shù)據(jù)程序 接收數(shù)據(jù)程序 顯示數(shù)據(jù)程序 再給大家看看@__@ |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |