?? www.ourhc.cn.c
字號:
/********************************************************************
匯誠科技
實(shí)現(xiàn)功能:STC12C5A60S2單片機(jī)之雙串口通信
使用芯片:STC12C5A60S2
晶振:11.0592MHZ
波特率:9600
編譯環(huán)境:Keil
作者:zhangxinchun
網(wǎng)站:www.ourhc.cn
淘寶店:
匯誠科技 http://ourhc.taobao.com
鄭興電子直銷部 http://shop68451856.taobao.com
【聲明】此程序僅用于學(xué)習(xí)與參考,引用請注明版權(quán)和作者信息!
功能 :串口一,串口二,同步發(fā)送接收數(shù)據(jù)(采用中斷方式,波特率發(fā)生器產(chǎn)生波特率)
波特率 :串口一,4800 串口二,57600
日期 :11.5.19
注意 :下載完程序后請復(fù)位系統(tǒng)!!(切記!)
*********************************************************************/
#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產(chǎn)生波特率
SCON = 0x50; //方式1,8位數(shù)據(jù),波特率可變
TH1 = TL1 = 0xfa; //波特率 4800
S2CON = 0x50; //方式1,八位數(shù)據(jù),可變波特率
BRT = 0XFD; //設(shè)置波特率9600
TR1 = 1; //啟動定時器產(chǎn)生波特率
AUXR = 0x10; //啟動波特率發(fā)生器
AUXR |= 0x08; //使能波特率倍速位S2SMOD
S2CON = 0x50; //8位數(shù)據(jù),可變波特率
BRT = 0xFF; //設(shè)定獨(dú)立波特率發(fā)生器重裝值
AUXR &= 0xfb; //獨(dú)立波特率發(fā)生器時鐘為Fosc/12,即12T
AUXR |= 0x10; //啟動獨(dú)立波特率發(fā)生器
IP = 0x00; //優(yōu)先級默認(rèn)
EA = 1; //開總中斷
ES = 1; //開串口1中斷
IE2 = 0x01; //開串口2中斷
}
/********************************************************************
串口一 發(fā)送一個字符
*********************************************************************/
void uart1_txd(uchar x)
{
SBUF = x;
}
/********************************************************************
串口一 發(fā)送接收中斷函數(shù)
*********************************************************************/
void uart_isr() interrupt 4
{
if( RI ) RI = 0;
dat1 = SBUF;
if( TI ) TI = 0;
}
/********************************************************************
串口二 發(fā)送一個字符
*********************************************************************/
void uart2_txd(uchar x)
{
S2BUF = x;
}
/********************************************************************
串口二 發(fā)送接收中斷函數(shù)
*********************************************************************/
void uart2_isr() interrupt 8
{
if( S2CON & 0x01 )
{
S2CON &= ~0x01;
dat2 = S2BUF;
}
if( S2CON & 0x02 )
{
S2CON &= ~0x02;
}
}
/********************************************************************
延時函數(shù)
*********************************************************************/
void delay ( uint t )
{
uint i,j;
for( i=0; i<t; i++)
for( j=0; j<250; j++);
}
/********************************************************************
主函數(shù)
*********************************************************************/
void main()
{
uchar i;
uchar *p;
init();
p=tab;
for(i=0;i<13;i++)
{
uart1_txd(p[i]);
uart2_txd(p[i]);
delay(150);
}
while(1)
{
P0=dat1;
delay(500);
P0=dat2;
delay(500);
}
}
/********************************************************************
結(jié)束
*********************************************************************/
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -