找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3860|回復(fù): 11
打印 上一主題 下一主題
收起左側(cè)

我串口程序把我搞死了,只希望大家?guī)兔Ψ治鲆�,換了3快開發(fā)板了。

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
我目地是比如輸入123456789 返回123456789 就是輸入什么返回什么。我使用ISIS仿真 程序沒有問題,把程序燒入單片機(jī)就不行 我拿了3快51單片機(jī)的開發(fā)板來測(cè)試就是不行,人都急死了,最基本的都出問題實(shí)在沒有辦法玩下再學(xué)。找不到問題點(diǎn)。希望大家?guī)蛶臀��;蛘甙盐页绦驘銈?1里面去實(shí)際測(cè)試看看。我想知道到底是我程序還是我設(shè)備哪里出問題了,按理不可能三臺(tái)開發(fā)板都出問題
#include <reg52.h>
#define uint unsigned int
int a;
uint flag;
void uart_init();
void main()
{
    uart_init();
    while(1)
    {
        if(flag==1) // 如果收到數(shù)據(jù)
        {
            ES=0; //關(guān)閉串口中斷
            flag=0; //標(biāo)志位清零
            SBUF=a; //將收到的數(shù)據(jù)發(fā)送至緩沖區(qū)
            while(!TI); //等待數(shù)據(jù)發(fā)送結(jié)束
            TI=0; // 將發(fā)送結(jié)束標(biāo)志清零
            ES=1; // 使能串口中斷
        }
    }
}
void serial() interrupt 4   // 串口中斷服務(wù)函數(shù)
{
    a=SBUF; // 讀出接收到的數(shù)據(jù)
    RI=0; // 清零接收標(biāo)志位
    flag=1; //標(biāo)志位
}
void uart_init()
{
    TMOD=0x20; // 設(shè)置定時(shí)器1 為方式2
    TH1=0xfd;  //裝入初值 11.0592
    TL1=0xfd;
    TR1=1; //啟動(dòng)定時(shí)器1
    SM0=0;
    SM1=1; //設(shè)置串口為方式1
    REN=1;  // 接受使能
    EA=1; // 打開總中斷開關(guān)
    ES=1; // 打開串口中斷開關(guān)
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:138419 發(fā)表于 2016-9-27 23:28 | 只看該作者
這樣是不是兩邊在無限循環(huán)?
回復(fù)

使用道具 舉報(bào)

板凳
ID:140696 發(fā)表于 2016-9-27 23:59 | 只看該作者
對(duì),一直在收發(fā)
回復(fù)

使用道具 舉報(bào)

地板
ID:140371 發(fā)表于 2016-9-28 05:42 | 只看該作者
中斷函數(shù):
回復(fù)

使用道具 舉報(bào)

5#
ID:140371 發(fā)表于 2016-9-28 05:42 | 只看該作者
void serial() interrupt 4   // 串口中斷服務(wù)函數(shù) {      a=SBUF; // 讀出接收到的數(shù)據(jù)     RI=0; // 清零接收標(biāo)志位      flag=1; //標(biāo)志位 }
回復(fù)

使用道具 舉報(bào)

6#
ID:140371 發(fā)表于 2016-9-28 05:50 | 只看該作者
一直在收發(fā)的...原因是當(dāng)接收到第一個(gè)字組,啟動(dòng)串列傳輸字組 ,當(dāng)傳輸字組完成後又產(chǎn)生中斷的條件,又中斷...因此程式進(jìn)入無窮循環(huán)...
回復(fù)

使用道具 舉報(bào)

7#
ID:140371 發(fā)表于 2016-9-28 06:08 | 只看該作者
首先說明串列中斷函數(shù)的特性:當(dāng) TI=1 或 RI=1 時(shí)皆會(huì)進(jìn)入中斷服務(wù)函數(shù) 一直在收發(fā)的原因在於:發(fā)送完成也會(huì)產(chǎn)生中斷 在中斷服務(wù)函數(shù)加個(gè)判斷 void serial() interrupt 4   // 串口中斷服務(wù)函數(shù) {  if(RI)    {     a=SBUF; // 讀出接收到的數(shù)據(jù)     RI=0; // 清零接收標(biāo)志位      flag=1; //標(biāo)志位    }         }
回復(fù)

使用道具 舉報(bào)

8#
ID:57657 發(fā)表于 2016-9-28 07:12 | 只看該作者
用示波器或邏輯分析儀檢測(cè)串口信號(hào)波形是否正常即可。
硬件串口有問題的話試試軟件模擬串口,適用于任何型號(hào)的單片機(jī)。
回復(fù)

使用道具 舉報(bào)

9#
ID:140371 發(fā)表于 2016-9-28 07:41 | 只看該作者
首先說明串列中斷函數(shù)的特性:當(dāng) TI=1 或 RI=1 時(shí)皆會(huì)進(jìn)入中斷服務(wù)函數(shù) 一直在收發(fā)的原因在於:發(fā)送完成也會(huì)產(chǎn)生中斷 在中斷服務(wù)函數(shù)加個(gè)判斷 void serial() interrupt 4   // 串口中斷服務(wù)函數(shù) {  if(RI)    {     a=SBUF; // 讀出接收到的數(shù)據(jù)     RI=0; // 清零接收標(biāo)志位      flag=1; //標(biāo)志位    }         }

評(píng)分

參與人數(shù) 1黑幣 +60 收起 理由
admin + 60 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

10#
ID:140371 發(fā)表于 2016-9-28 07:43 | 只看該作者
a0931727149 發(fā)表于 2016-9-28 07:41
首先說明串列中斷函數(shù)的特性:當(dāng) TI=1 或 RI=1 時(shí)皆會(huì)進(jìn)入中斷服務(wù)函數(shù) 一直在收發(fā)的原因在於:發(fā)送完成也會(huì) ...

首先說明串列中斷函數(shù)的特性:當(dāng) TI=1 或 RI=1 時(shí)皆會(huì)進(jìn)入中斷服務(wù)函數(shù)

而一直在收發(fā)的原因在於:發(fā)送完成也會(huì)產(chǎn)生中斷
在中斷服務(wù)函數(shù)加個(gè)判斷
void serial() interrupt 4   // 串口中斷服務(wù)函數(shù)
{  if(RI)
   {
    a=SBUF; // 讀出接收到的數(shù)據(jù)
    RI=0; // 清零接收標(biāo)志位
    flag=1; //標(biāo)志位
   }       
}
回復(fù)

使用道具 舉報(bào)

11#
ID:111634 發(fā)表于 2016-9-28 08:38 | 只看該作者
本帖最后由 zl2168 于 2016-9-28 09:32 編輯

經(jīng)�?吹綐侵�2500在51黑網(wǎng)上提出的疑問,說明2500是一個(gè)好學(xué)青年。
但是你提的疑問大多是長(zhǎng)篇沒注釋的程序,要?jiǎng)e人解讀。你是否知道解讀別人冗長(zhǎng)而沒注釋的程序是最煩人的事?因此,你常常得不到正確有效的解答。
你能否換一種學(xué)習(xí)方法?首先,你要拿到正確的程序(估計(jì)你原來拿到的程序都是從網(wǎng)上下載的,網(wǎng)上下載的程序多數(shù)是不靠譜的)。
那么,如何從眾多網(wǎng)上程序中識(shí)別正確有效程序呢?沒法識(shí)別。因?yàn)�,不可能一個(gè)一個(gè)去解讀。
唯一的方法是找到一本靠譜的單片機(jī)書。即電路與程序真實(shí)可靠可信可行,且便于閱讀理解,便于自學(xué)。
真誠(chéng)地給你介紹2本能達(dá)到上述要求的書,

張志良編著的:
80C51單片機(jī)實(shí)用教程——基于Keil CProteus》高等教育出版社ISBN 978-7-04-044532-9

80C51單片機(jī)仿真設(shè)計(jì)實(shí)例教程——基于Keil CProteus》清華大學(xué)出版社ISBN 978-7-302-41682-1

其中,第一本是教材書可用于學(xué)習(xí)51單片機(jī)原理,第二本是案例書,內(nèi)有常用的單片機(jī)應(yīng)用100案例。
以上絕不忽悠你�。�!
為了便于你了解這2本書,在帖上簡(jiǎn)單介紹資料。
12-04962-003-01單片機(jī)實(shí)用教程 (1).pdf (479.45 KB, 下載次數(shù): 5)
目錄.rar (16.49 KB, 下載次數(shù): 3)
前言.rar (7.28 KB, 下載次數(shù): 3)


目錄.rar (11.45 KB, 下載次數(shù): 3)
前言.rar (6.53 KB, 下載次數(shù): 3)
有問題,可email咨詢。zzlls[url=]@126.com[/url]










回復(fù)

使用道具 舉報(bào)

12#
ID:140716 發(fā)表于 2016-9-28 10:12 | 只看該作者
好久沒玩51了,好親切哈
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表