找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2781|回复: 9
打印 上一主题 下一主题
收起左侧

STC15单片机串口不能发送

[复制链接]
跳转到指定楼层
楼主
5黑币
本帖最后由 xianming 于 2020-3-24 19:49 编辑

STC15w4k32s4单片机,用到adc,模拟i2c(OLED12864),串口,我先把adc和i2c做完了,最后加上串口,本来以为没问题了,要成功了结果单片机发送完串口就自动复位了,程序不能继续运行。
main前面有很多头文件,挺长的,不知道有没有影响。

贴代码
//头文件比较长
#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);

//后面不用贴了,上面已经出错了
//下面是串口初始化代码

#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)        //参数:晶振频率(频率乘1000000=10^6),波特率                                                                                //(最高波特率65535,串口助手65535之内最高可选57600)
{
        P_SW1 &= 0x3F;                                //将P_SW1前两位设置成00         (P3.0/RxD, P3.1/TxD)
    SCON = 0x50;                //8位可变波特率
    T2L = (65536 - (FOSC/4/BAUD));   //设置波特率重装值
    T2H = (65536 - (FOSC/4/BAUD))>>8;
    AUXR = 0x15;                //T2为1T模式, 并启动定时器2
    //AUXR |= 0x01;               //选择定时器2为串口1的波特率发生器
    ES = 1;                     //使能串口1中断
    EA = 1;
}

void sendbyte(UCHAR8 PrintByte)
{
        //_push_(ACC);
    //ACC = PrintByte;                  //获取校验位P (PSW.0)
       
    SBUF = PrintByte;                 //写数据到UART数据寄存器   
        while(!TI);
    TI=0;
        //_pop_(ACC);                 
}

#endif
没有用上最后sendbyte
大家帮我看看,好长时间没解决了

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:687694 发表于 2020-3-24 23:09 | 只看该作者

手册中的。瞅瞅是不是这个情况
回复

使用道具 举报

板凳
ID:191511 发表于 2020-3-24 23:48 | 只看该作者
STC isp下载程序那个软件里有各种stc单片机不同功能的程序模板,直接拿来可用。建议你参考那个去进行学习。
回复

使用道具 举报

地板
ID:71233 发表于 2020-3-25 08:04 | 只看该作者
我有一次使用STC15F104w模拟串口、模拟红外接收也出现复位,后来确定是128字节RAM使用率太高,你编译后检查一下结果,看是否也是同一个道理。
回复

使用道具 举报

5#
ID:691449 发表于 2020-3-25 12:40 | 只看该作者
lovexulu 发表于 2020-3-24 23:09
手册中的。瞅瞅是不是这个情况

你好,我只是写了SBUF=0x20,程序就出问题,自动复位了,我并没有长调用。
回复

使用道具 举报

6#
ID:691449 发表于 2020-3-25 12:41 | 只看该作者
wo4fisher 发表于 2020-3-24 23:48
STC isp下载程序那个软件里有各种stc单片机不同功能的程序模板,直接拿来可用。建议你参考那个去进行学习。

我把模板拼凑出来就不行了
回复

使用道具 举报

7#
ID:691449 发表于 2020-3-25 17:42 | 只看该作者
新新科技 发表于 2020-3-25 08:04
我有一次使用STC15F104w模拟串口、模拟红外接收也出现复位,后来确定是128字节RAM使用率太高,你编译后检查 ...

你好,我只用了大约40字节ram,但是有一些像unsigned char code tab[] =这样的字库,不知道有没有影响。
回复

使用道具 举报

8#
ID:691449 发表于 2020-3-26 16:21 | 只看该作者
我的问题还有谁能帮我看看啊,第二个帖了
回复

使用道具 举报

9#
ID:691449 发表于 2020-3-28 11:04 | 只看该作者
谁能有办法啊,帮我看看
回复

使用道具 举报

10#
ID:691449 发表于 2020-4-6 10:25 | 只看该作者
帖子沉了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表