查看: 915|回复: 0
打印 上一主题 下一主题

012、STC12C5A60S2单片机之不同波特率串口12通讯演示

[复制链接]
跳转到指定楼层
沙发
发表于 2015-5-5 16:42:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/********************************************************************
                            汇诚科技

实现功能:STC12C5A60S2单片机之双串口通信
使用芯片:STC12C5A60S2
晶振:11.0592MHZ
波特率:9600
编译环境:Keil
作者:zhangxinchun
网站:www.ourhc.cn
淘宝店:
汇诚科技 http://ourhc.taobao.com
郑兴电子直销部 http://shop68451856.taobao.com
【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!  

功能    :串口一,串口二,同步发送接收数据(采用中断方式,波特率发生器产生波特率)
波特率  :串口一,4800  串口二,57600
日期    :11.5.19
注意    :下载完程序后请复位系统!!(切记!)
*********************************************************************/
#include "STC12C5A60S2.h"  //库文件
#define uchar unsigned char//宏定义无符号字符型
#define uint unsigned int  //宏定义无符号整型
/********************************************************************
                            初始定义
*********************************************************************/
uchar dat1=0,dat2=0;
uchar tab[]={"www.ourhc.cn"};
/********************************************************************
                            串口初始化
*********************************************************************/
void init ()
{
        TMOD = 0x20;                                  //定时器1产生波特率
        SCON = 0x50;                                 //方式1,8位数据,波特率可变
        TH1  = TL1 = 0xfa;                         //波特率 4800
        S2CON = 0x50;                                 //方式1,八位数据,可变波特率
        BRT   = 0XFD;                                  //设置波特率9600
        TR1  = 1;                                          //启动定时器产生波特率       
        AUXR  = 0x10;                                 //启动波特率发生器

        AUXR |= 0x08;                //使能波特率倍速位S2SMOD
        S2CON = 0x50;                //8位数据,可变波特率
        BRT = 0xFF;                //设定独立波特率发生器重装值
        AUXR &= 0xfb;                //独立波特率发生器时钟为Fosc/12,即12T
        AUXR |= 0x10;                //启动独立波特率发生器

        IP   = 0x00;                                 //优先级默认
        EA    = 1;                                      //开总中断
        ES = 1;                                             //开串口1中断
        IE2   = 0x01;                                 //开串口2中断
}

/********************************************************************
                            串口一 发送一个字符
*********************************************************************/
void  uart1_txd(uchar x)
{
        SBUF = x;
}
/********************************************************************
                            串口一 发送接收中断函数
*********************************************************************/
void uart_isr()  interrupt 4
{
        if( RI ) RI = 0;
        dat1 = SBUF;
        if( TI ) TI = 0;
}
/********************************************************************
                            串口二   发送一个字符
*********************************************************************/
void  uart2_txd(uchar x)
{
        S2BUF = x;
}
/********************************************************************
                            串口二    发送接收中断函数
*********************************************************************/
void uart2_isr()  interrupt 8
{
        if( S2CON & 0x01 )
        {
                S2CON &= ~0x01;
                dat2    = S2BUF;
        }
        if( S2CON & 0x02 )
        {
                S2CON &= ~0x02;
        }

}
/********************************************************************
                             延时函数
*********************************************************************/

void delay ( uint t )
{
        uint i,j;
        for( i=0; i<t; i++)
        for( j=0; j<250; j++);
}

/********************************************************************
                              主函数
*********************************************************************/
void main()
{
    uchar i;
        uchar *p;
        init();
        p=tab;
        for(i=0;i<13;i++)
        {
        uart1_txd(p);
        uart2_txd(p);
        delay(150);          
        }
        while(1)
        {
        P0=dat1;
        delay(500);
        P0=dat2;
        delay(500);
        }
}
/********************************************************************
                              结束
*********************************************************************/】



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入中科因仑

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入中科因仑

本版积分规则

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