ap0705122 发表于 2011-4-5 10:09:08

STC12c5s32s2的串口调试程序,大侠帮忙,急急

#include "stc12c5a.h"
#include "intrins.h"
#include "string.h"
#include "absacc.h"

#define uint unsigned int
#define uchar unsigned char
#define nop _nop_()
#define RELOAD_COUNT 0xdc
char bdata bittest;
sbit TIbit=bittest^1;
sbit RIbit=bittest^0;

/*--------------延时函数delay-----------*/
void delay(uint ss)
{
        while(ss!=0)
                ss--;
}


/*--------------发送一个字节-----------*/
void uart2_send_byte(uchar c)
{        bittest=S2CON;
        S2BUF=c;//串口2缓存
        while(TIbit!=1);//等待发送完成,为1即为停止位发送,硬件自动置位,发送完毕
        TIbit=0;          //软件复位
}

/*--------------发送字符串-----------*/
void uart2_send_string(uchar *str)
{
        while(*str!='\0')
                {
                        uart2_send_byte(*str++);
                }       
}

/*--------------读字节-----------*/
void uart2_read_byte(void)
{
        uchar k;
        bittest=S2CON;
        if(RIbit!=0)                   //接收中断标志位,接收停止位的中间时刻由硬件置位
                {
                        k=S2BUF;
                        nop;
                        RIbit=0;
                        S2BUF=k;
                        while(TIbit!=1);
                        TIbit=0;
                }
}


/*--------------短信发送设置-----------*/
void message_send(void)
{
        uart2_send_string("AT");       //选择短信格式为文本形式
        uart2_send_byte(0x0D);                       //AT指令的结尾
        delay(10000);
        uart2_send_string("AT+CMGF=1");       //选择短信格式为文本形式
        uart2_send_byte(0x0D);                       //AT指令的结尾
        delay(10000);
        uart2_send_string("AT+CSCA=+8613800773500");
        uart2_send_byte(0x0D);                       //AT指令的结尾
        delay(10000);
        uart2_send_string("AT+CMGS=+8613428255882");
        uart2_send_byte(0x0D);                       //AT指令的结尾
        delay(10000);
        uart2_send_string("oh yeh!");        //短信内容
        uart2_send_byte(0x1A);                   // 确认发送短信
        uart2_send_byte(0x0D);
}

/*--------------mc55初始化-----------*/
void mc55_init(void)
{
        uart2_send_string("AT+CMGF=1\n\r");
        delay(10000);
        uart2_send_string("AT+CNMI=0,1,1,1\n\r");
        delay(10000);       
}


/*--------------mcu初始化-----------*/
void mcu_init()
{
        S2CON=0x50;//串口2,方式1
        BRT=RELOAD_COUNT;   //9600波特率                BRT=256-(11.0592M/32/9600/12^n)
        AUXR=0x14;   //0001 0100 允许独立波特率,1T模式即独立波特率发生器每一时钟记数一次,n=0
        IE2=0x01;   //开总中断,串口中断
        EA=1;
}
/**********************主函数******************/
main()
{        //delay(50000);
        mcu_init();
       
        mc55_init();
        //open_mc55();
        message_send();
        while(1);
}


串口调试助手接受不到,大侠看看
小弟不是很懂

ap0705122 发表于 2011-4-7 19:48:41

怎么没人看啊?
给点意见啊

li8303 发表于 2011-5-10 07:25:12

没有看到你的波特率是怎样产生的啊!!!

djjyi 发表于 2011-5-10 09:20:59

先用keil软件仿真看有 数据出来没有 然后排查下电路 波特率 软件程序是否有问题
页: [1]
查看完整版本: STC12c5s32s2的串口调试程序,大侠帮忙,急急