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

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

請(qǐng)教MSC1210單片機(jī)與計(jì)算機(jī)串口通信的問題

作者:莊莊 欄目:單片機(jī)
請(qǐng)教MSC1210單片機(jī)與計(jì)算機(jī)串口通信的問題
本人從網(wǎng)上下載程序如下:
#include <\ti\reg1210.h>
#include <string.h>

#define INBUF_LEN 4   //數(shù)據(jù)長(zhǎng)度

unsigned CHAR inbuf1[INBUF_LEN];
unsigned CHAR CHECKSUM,count3;
bit           read_flag=0;

void init_serialcomm(void)
{
    SCON0 = 0x50;       //SCON: serail mode 1, 8-bit UART, enable ucvr
    TMOD |= 0x20;       //TMOD: timer 1, mode 2, 8-bit reload
    PCON |= 0x80;       //SMOD=1;
    TH1   = 0xF4;       //Baud:4800  fosc=11.0592MHZ
    IE   |= 0x90;       //Enable Serial Interrupt
    TR1   = 1;          //timer 1 run
   // TI=1;
}

//向串口發(fā)送一個(gè)字符
void send_CHAR_com(unsigned CHAR ch)  
{
    SBUF=ch;
    while(TI==0);
    TI=0;
}

//向串口發(fā)送一個(gè)字符串,strlen為該字符串長(zhǎng)度
void send_string_com(unsigned CHAR *str,unsigned int strlen)
{
    unsigned int k=0;
    do
    {
        send_CHAR_com(*(str + k));
        k++;
    } while(k < strlen);
}


//串口接收中斷函數(shù)
void serial () interrupt 4 using 3
{
    if(RI)
    {
        unsigned CHAR ch;
        RI = 0;
        ch=SBUF;
        if(ch>127)
        {
             count3=0;
             inbuf1[count3]=ch;
             CHECKSUM= ch-128;
        }
        else
        {
             count3++;
             inbuf1[count3]=ch;
             CHECKSUM ^= ch;
             if( (count3==(INBUF_LEN-1)) && (!CHECKSUM) )
             {
                 read_flag=1;  //如果串口接收的數(shù)據(jù)達(dá)到INBUF_LEN個(gè),且校驗(yàn)沒錯(cuò),
                               //就置位取數(shù)標(biāo)志
             }
        }
    }
}


main()
{
    init_serialcomm();  //初始化串口
    while(1)
    {
          if(read_flag)  //如果取數(shù)標(biāo)志已置位,就將讀到的數(shù)從串口發(fā)出
          {
               read_flag=0; //取數(shù)標(biāo)志清0
               send_string_com(inbuf1,INBUF_LEN);
          }
    }

}
我在用download.exe 下載程序后,復(fù)位執(zhí)行程序。
我在計(jì)算機(jī)端用串口調(diào)試助手,但是接收不到任何數(shù)據(jù)。
我判斷程序能夠下載,硬件肯定沒有問題,不知道軟件應(yīng)怎么設(shè)置?
請(qǐng)高手指教,謝謝。


* - 本貼最后修改時(shí)間:2005-12-12 11:52:46 修改者:莊莊

2樓: >>參與討論
莊莊
請(qǐng)高手指教,謝謝。
MSC1210單片機(jī)與計(jì)算機(jī)通信是不是和RS232有關(guān)

3樓: >>參與討論
莊莊
現(xiàn)在已能夠接收到數(shù)據(jù)
現(xiàn)在已能夠接收到數(shù)據(jù),但是數(shù)據(jù)內(nèi)容還是不對(duì),有時(shí)應(yīng)是33變成了93,有時(shí)發(fā)送好多0,不知道到底那里設(shè)置不對(duì)?請(qǐng)高手們指教,謝謝
硬件設(shè)置情況為:?jiǎn)纹瑱C(jī)與計(jì)算機(jī)之間用MAX232聯(lián)結(jié)。
請(qǐng)高手們指教,謝謝


* - 本貼最后修改時(shí)間:2005-12-12 15:59:16 修改者:莊莊

4樓: >>參與討論
ccelec
首先要確認(rèn)是大部分?jǐn)?shù)據(jù)都不對(duì),還偶有不對(duì)。
如果是大量數(shù)據(jù)不對(duì),那可能是配置(如波特率或校驗(yàn))問題,如果是偶有數(shù)據(jù)錯(cuò)誤,可能鏈路的問題

5樓: >>參與討論
莊莊
謝謝樓上的回答
所有數(shù)據(jù)都不對(duì),我是第一次作單片機(jī)通信,不知道從哪里下手,樓上說(shuō)的配置(如波特率或校驗(yàn))問題,波特率應(yīng)該沒錯(cuò)誤都是9600,通信協(xié)議為:第1字節(jié),MSB為1,為第1字節(jié)標(biāo)志,第2字節(jié),MSB為0,為非第一字節(jié)標(biāo)志,其余類推……,最后一個(gè)字節(jié)為前幾個(gè)字節(jié)后7位的異或校驗(yàn)和。
我是從網(wǎng)上下載的程序,應(yīng)該沒有錯(cuò)誤,可能是硬件環(huán)境改變的緣故,單片機(jī)串口與計(jì)算機(jī)串口之間用MAX232聯(lián)結(jié)。我應(yīng)該怎樣改動(dòng)程序使它適應(yīng)我的硬件環(huán)境?請(qǐng)指教,謝謝


6樓: >>參與討論
莊莊
感謝指導(dǎo)
問題已經(jīng)解決,波特率錯(cuò)誤
將    TH1   = 0xF4;       //Baud:4800  fosc=11.0592MHZ
改為:TH1   = 0xF3;       //Baud:4800  fosc=11.0592MHZ
就可以了。
謝謝ccelec的指教。

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
Keil C51程序的HEX文件超過了3K,我能優(yōu)化到2K以下嗎?
農(nóng)講所的"狀態(tài)機(jī)"和HOTPOWER的"前后臺(tái)".誰(shuí)能簡(jiǎn)單給概括一下思想
一條指令多少錢?
請(qǐng)問一下用C寫片子要掌握哪些基本的數(shù)據(jù)結(jié)構(gòu)
求一電源模塊DC/DC 24V~5V,謝謝了先!!
免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)