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

QQ登錄

只需一步,快速開始

帖子
查看: 3351|回復(fù): 9
打印 上一主題 下一主題
收起左側(cè)

STC15單片機(jī)串口不能發(fā)送

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
5黑幣
本帖最后由 xianming 于 2020-3-24 19:49 編輯

STC15w4k32s4單片機(jī),用到adc,模擬i2c(OLED12864),串口,我先把a(bǔ)dc和i2c做完了,最后加上串口,本來以為沒問題了,要成功了結(jié)果單片機(jī)發(fā)送完串口就自動(dòng)復(fù)位了,程序不能繼續(xù)運(yùn)行。
main前面有很多頭文件,挺長(zhǎng)的,不知道有沒有影響。

貼代碼
//頭文件比較長(zhǎng)
#include <STC15F2K60S2.H>
#include "IOMode.h"
#include "table.h"
#include "OLED.h"
#include "ADC.h"
#include "Serial.h"

#define uchar unsigned char
uchar ge,shi,bai;
static uchar ch;
bit change;
void dispnum(uchar binnum,uchar xy);
void selectxy(uchar X,uchar Y);
void Delay30ms();
void main()
{
uchar i,x,y;
ch=0x00;
IOMode00();
//OLED_Init(0x20,0x00);
//InitADC(0x00,0x0C);
serialinit(11059200,9600);

SBUF=0x20;
while(!TI);
    TI=0;

/*OLED16dot(0,2,0,xytab);
OLED16dot(0,4,1,xytab);
for(i=0;i<5;i++)
{
OLED16dot(16+i*16,0,i,titletab);
}
for(i=0;i<5;i++)
{
OLED16dot(16+i*16,6,i,keytab);
}  */
//OLED816dot(16,2,4,numbertab);
//OLED816dot(16,4,5,numbertab);

//后面不用貼了,上面已經(jīng)出錯(cuò)了
//下面是串口初始化代碼

#ifndef Serial_H
#define Serial_H

#include <intrins.h>

#define ULONG32 unsigned long
#define UINT16  unsigned int
#define UCHAR8  unsigned char

void serialinit(ULONG32 FOSC,UINT16 BAUD)        //參數(shù):晶振頻率(頻率乘1000000=10^6),波特率                                                                                //(最高波特率65535,串口助手65535之內(nèi)最高可選57600)
{
        P_SW1 &= 0x3F;                                //將P_SW1前兩位設(shè)置成00         (P3.0/RxD, P3.1/TxD)
    SCON = 0x50;                //8位可變波特率
    T2L = (65536 - (FOSC/4/BAUD));   //設(shè)置波特率重裝值
    T2H = (65536 - (FOSC/4/BAUD))>>8;
    AUXR = 0x15;                //T2為1T模式, 并啟動(dòng)定時(shí)器2
    //AUXR |= 0x01;               //選擇定時(shí)器2為串口1的波特率發(fā)生器
    ES = 1;                     //使能串口1中斷
    EA = 1;
}

void sendbyte(UCHAR8 PrintByte)
{
        //_push_(ACC);
    //ACC = PrintByte;                  //獲取校驗(yàn)位P (PSW.0)
       
    SBUF = PrintByte;                 //寫數(shù)據(jù)到UART數(shù)據(jù)寄存器   
        while(!TI);
    TI=0;
        //_pop_(ACC);                 
}

#endif
沒有用上最后sendbyte
大家?guī)臀铱纯�,好長(zhǎng)時(shí)間沒解決了

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

使用道具 舉報(bào)

沙發(fā)
ID:687694 發(fā)表于 2020-3-24 23:09 | 只看該作者

手冊(cè)中的。瞅瞅是不是這個(gè)情況
回復(fù)

使用道具 舉報(bào)

板凳
ID:191511 發(fā)表于 2020-3-24 23:48 | 只看該作者
STC isp下載程序那個(gè)軟件里有各種stc單片機(jī)不同功能的程序模板,直接拿來可用。建議你參考那個(gè)去進(jìn)行學(xué)習(xí)。
回復(fù)

使用道具 舉報(bào)

地板
ID:71233 發(fā)表于 2020-3-25 08:04 | 只看該作者
我有一次使用STC15F104w模擬串口、模擬紅外接收也出現(xiàn)復(fù)位,后來確定是128字節(jié)RAM使用率太高,你編譯后檢查一下結(jié)果,看是否也是同一個(gè)道理。
回復(fù)

使用道具 舉報(bào)

5#
ID:691449 發(fā)表于 2020-3-25 12:40 | 只看該作者
lovexulu 發(fā)表于 2020-3-24 23:09
手冊(cè)中的。瞅瞅是不是這個(gè)情況

你好,我只是寫了SBUF=0x20,程序就出問題,自動(dòng)復(fù)位了,我并沒有長(zhǎng)調(diào)用。
回復(fù)

使用道具 舉報(bào)

6#
ID:691449 發(fā)表于 2020-3-25 12:41 | 只看該作者
wo4fisher 發(fā)表于 2020-3-24 23:48
STC isp下載程序那個(gè)軟件里有各種stc單片機(jī)不同功能的程序模板,直接拿來可用。建議你參考那個(gè)去進(jìn)行學(xué)習(xí)。

我把模板拼湊出來就不行了
回復(fù)

使用道具 舉報(bào)

7#
ID:691449 發(fā)表于 2020-3-25 17:42 | 只看該作者
新新科技 發(fā)表于 2020-3-25 08:04
我有一次使用STC15F104w模擬串口、模擬紅外接收也出現(xiàn)復(fù)位,后來確定是128字節(jié)RAM使用率太高,你編譯后檢查 ...

你好,我只用了大約40字節(jié)ram,但是有一些像unsigned char code tab[] =這樣的字庫(kù),不知道有沒有影響。
回復(fù)

使用道具 舉報(bào)

8#
ID:691449 發(fā)表于 2020-3-26 16:21 | 只看該作者
我的問題還有誰(shuí)能幫我看看啊,第二個(gè)帖了
回復(fù)

使用道具 舉報(bào)

9#
ID:691449 發(fā)表于 2020-3-28 11:04 | 只看該作者
誰(shuí)能有辦法啊,幫我看看
回復(fù)

使用道具 舉報(bào)

10#
ID:691449 發(fā)表于 2020-4-6 10:25 | 只看該作者
帖子沉了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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