音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(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

請教串口,怎么沒人理我

作者:19840312 欄目:單片機
請教串口,怎么沒人理我
下面是我做的測試程序,功能:串口發(fā)送數(shù)據(jù),不接收,模式1,可是接收的有0x20之外,還有0x60,不知道哪兒出問題了?請教各位大俠,謝謝!
#include "AT89X51.H"
#include "main.h"
#include<intrins.h>

void main(void)
{
CHAR testti,testtime=3;

serial_init ();
while(testtime--)
  {testti=0;
   SBUF=0x20;
   while(TI==0);   
   if(TI==1)
   {testti=1;}
   TI=0;
  }  
  while(1);
}
//=================
serial_init ()
{ TR1   = 0;

  SCON  = 0x40;                      /* mode 1: 8-bit UART, disable RECEIVER   */
  TMOD |= 0x20;                      /* timer 1 mode 2: 8-Bit reload          */
  PCON |= 0x80; TH1 = 0xf9;TL1=0xf9; //baud*2     reload VALUE 9600 baud
                           
  EA    = 0; REN=0; EA=1; SM2=0;          //disenble interupt  disenble receive
  
  TR1   = 1;                        /* timer 1 run                           */
}


* - 本貼最后修改時間:2005-6-1 11:43:35 修改者:19840312

2樓: >>參與討論
19840312

 
3樓: >>參與討論
19840312
我發(fā)的數(shù)據(jù)是FE遞減到0,數(shù)據(jù)如下
我發(fā)的數(shù)據(jù)是FE遞減到0,數(shù)據(jù)如下:FE FD FC FB FA F9 F8 F7 F6 F5 F4 F3 F2 F1 F0 EF
EE ED EC EB EA E9 E8 E7 E6 E5 E4 E3 E2 E1 E0 DF 9E DD 9C DB 9A 99 D8 97 D6 95
D4 D3 92 D1 90 CF 8E 8D CC 8B CA 89 C8 C7 86 C5 84 C3 82 81 C0 7F 3E 7D 3C 7B
7A 39 78 37 76 75 34 73 32 71 30 6F 6E 2D 6C 2B 6A 69 28 67 26 65 24 63 62 21
60 1F 1E 1D 1C 1B 1A 19 18 17 16 15 14 13 12 11 10 0F 0E 0D 0C 0B 0A 09 08 07
06 05 04 03 02 01 00 FF FE FD FC FB FA F9 F8 F7 F6 F5 F4 F3 F2 F1 F0 EF EE ED
EC EB EA E9 E8 E7 E6 E5 E4 E3 E2 E1 E0 9F DE 9D DC 9B 9A D9 98 D7 96 D5 D4 93
D2 91 D0 8F 8E CD 8C CB 8A C9 C8 87 C6 85 C4 83 82 C1 80 3F 7E 3D 7C 7B 3A 79
38 77 76 35 74 33 72 31 70 6F 2E 6D 2C 6B 6A 69 68 27 66 25 64 63 22 61 20 1F
1E 1D 1C 1B 1A 19 18 17 16 15 14 13 12 11 10 0F 0E 0D 0C 0B 0A 09 08 07 06 05
04 03 02 01 00

有時對,有時不對,請高手指教



4樓: >>參與討論
zjuzy
我也出現(xiàn)同樣問題
我和你遇到了同樣的問題,我用的是wave仿真c196的時候,串口出現(xiàn)的問題
測試方法一樣,數(shù)據(jù)也幾乎一樣
我設(shè)置,異步串口,4800波特率,不知道怎么會出現(xiàn)這種問題
你解決了的話,也告訴我一聲,謝謝


5樓: >>參與討論
hejoin
不要用仿真器看結(jié)果
直接燒到芯片里面去看,下面的代碼肯定正常的,你試試看


// 串口中斷 c語言應(yīng)用實驗,在恒堅系列(http://www.hejoin.com)開發(fā)板上調(diào)試通過
// 本實驗實現(xiàn)串口中斷實驗,通過中斷和計算機進行通信
// 首先接受聯(lián)機信號,然后接受計算機的相關(guān)控制信號
// 本實驗中,采用發(fā)送不同的字符給計算機來模擬接收到的不同的計算機控制命令
// 通過擴展,可以實現(xiàn)不同的功能
// 實驗的時候請注意,串口線的選擇請參考說明書,波特率如果機器是12M就選擇
// 2400,如果是6M就選擇1200,否則通信可能不正常

#include <8051.h>

unsigned CHAR time,b_break,b_break_3;
unsigned CHAR buf;

void waitsend()
{
     while(!TI)
     {
     };
     TI = 0;
}
//串行中斷程序
void int_s(void) interrupt 4 {
    ES = 0;    //關(guān)閉串行中斷
    RI = 0;    //清除串行接受標(biāo)志位
    buf = SBUF;  //從串口緩沖區(qū)取得數(shù)據(jù)
    P1 = buf;    //數(shù)據(jù)送往p1口顯示出來
    if(buf == 255) SBUF = 255; //發(fā)送聯(lián)絡(luò)信號
    else{
        SWITCH(buf)
        {
            case 1: SBUF = 'h',waitsend();break;   //如果接受到1,發(fā)送字符'h'給計算機
            case 2: SBUF = 'e',waitsend();break;   //如果接受到2,發(fā)送字符'e'給計算機
            case 3: SBUF = 'j',waitsend();break;   //如果接受到3,發(fā)送字符'j'給計算機
            case 4: SBUF = 'o',waitsend();break;   //如果接受到4,發(fā)送字符'o'給計算機
            case 5: SBUF = 'i',waitsend();break;   //如果接受到5,發(fā)送字符'i'給計算機    
            
            case 100: SBUF = 100,waitsend(),P3_7 = 1;break;   //如果接受到100,打開蜂鳴器
            case 111: SBUF = 111,waitsend(),P3_7 = 0;break;   //如果接受到111,關(guān)閉蜂鳴器
                                
            default: SBUF = 'n',waitsend();break;  //如果接受到其它數(shù)據(jù),發(fā)送n給計算機
            
        }
    }
    ES = 1;    //允許串口中斷
    
}

void main(void) {

    P0 = 0;
    P2 = 255;    //關(guān)閉數(shù)碼管顯示
    P1 = 255;   //關(guān)閉LED 顯示
    P3_7 = 0;   //關(guān)閉蜂鳴器
    
    EA=1;
    SCON=0x50;PCON=0;
    TMOD=0x20;ES = 1;
    TL1=TH1=0xf3;TR1=1;   //串口工作在模式3,波特率2400(12M)/1200(6M)
    
    while(1)
    {  };                  //無限循環(huán)等待串行中斷
}

6樓: >>參與討論
gbchang
談從軟現(xiàn)象看硬故障:數(shù)據(jù)線的D7/D6懸空了。分析如下:
談從軟件現(xiàn)象看硬故障
數(shù)據(jù)線的D7/D6懸空了。分析如下:

錯誤數(shù)據(jù):
“可是接收的有0x20之外,還有0x60,”
“ FE FD FC FB FA F9 F8 F7 F6 F5 F4 F3 F2 F1 F0
EF EE ED EC EB EA E9 E8 E7 E6 E5 E4 E3 E2 E1 E0
DF 9E DD 9C DB 9A 99 D8 97 D6 95 D4 D3 92 D1 90
CF 8E 8D CC 8B CA 89 C8 C7 86 C5 84 C3 82 81 C0
7F 3E 7D 3C 7B 7A 39 78 37 76 75 34 73 32 71 30
6F 6E 2D 6C 2B 6A 69 28 67 26 65 24 63 62 21 60
1F 1E 1D 1C 1B 1A 19 18 17 16 15 14 13 12 11 10
0F 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00
FF FE FD FC FB FA F9 F8 F7 F6 F5 F4 F3 F2 F1 F0
EF EE ED EC EB EA E9 E8 E7 E6 E5 E4 E3 E2 E1 E0
9F DE 9D DC 9B 9A D9 98 D7 96 D5 D4 93 D2 91 D0
8F 8E CD 8C CB 8A C9 C8 87 C6 85 C4 83 82 C1 80
3F 7E 3D 7C 7B 3A 79 38 77 76 35 74 33 72 31 70
6F 2E 6D 2C 6B 6A 69 68 27 66 25 64 63 22 61 20
1F 1E 1D 1C 1B 1A 19 18 17 16 15 14 13 12 11 10
0F 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00”

一。找到規(guī)律:所有數(shù)據(jù)的低4位沒有問題
二。高4位有時出問題,以二進制查看,找規(guī)律:
  F(1111)對
  E(1110)對
  D(1101)出現(xiàn)9(1001),D6由1=>0
  C(1100)出現(xiàn)8(1000),現(xiàn)象同D
  B(1011)變成7(0111)或3(0011),D7由1=>0,d6由0=>1
  A(1010)變成6(0110)或2(0010)現(xiàn)象同B
  9(1001)變成1(0001),d7由1=>0
  8(1000)變成0(0000)現(xiàn)象同9
  7(0111)變成F(1111),d7由0=>1
  6(0110)變成E(1110)現(xiàn)象同7
  5(0101)變成9(1001)或D(1101),d7由0=>1,d6由1=>0
  4(0100)變成8(1000)或C(1100)現(xiàn)象同5
  3(0011)出現(xiàn)7(0111),d6由0=>1
  2(0010)出現(xiàn)6(0110)現(xiàn)象同3
  1(0001)對
  0(0000)對
三?偨Y(jié),只有d7/d6會出錯,有幾種可能:
  對地短路,該位數(shù)據(jù)一直為0,排除
  對電源短路,該位數(shù)據(jù)一直為1,排除
  兩線互相粘連,發(fā)生線與,有0則都為0,常用硬件是這樣的,排除
  一線懸空,此線會經(jīng)常出現(xiàn)與其相鄰線的數(shù)據(jù)(線間電容耦合),但只懸空的會出問題,排除
  兩線懸空,沒有任何規(guī)律。符合。
四。結(jié)論:數(shù)據(jù)線的D7/D6懸空了。

* - 本貼最后修改時間:2005-6-3 9:30:41 修改者:gbchang

7樓: >>參與討論
hejoin
波特率的問題?
波特率的問題?

8樓: >>參與討論
xuhuadong
波特率的問題,不會吧?

我分析應(yīng)該是仿真器的問題,很肯定,
你可以用232接口進行測試單片機程序

9樓: >>參與討論
gbchang
請19840312君有結(jié)果后上來發(fā)個貼...
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
能否用MOV A,P5?
LED靜態(tài)顯示
有人知道ICL8038函數(shù)發(fā)生器的嗎?
硬件:請教大家一個關(guān)VGA信號的問題? 幫忙找找問題所在
用硬件將數(shù)據(jù)存貯器中的數(shù)據(jù)讀出,送出數(shù)據(jù)總線?
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號