標(biāo)題:
單片機(jī)雙串口通信程序問題
[打印本頁(yè)]
作者:
wyx丶
時(shí)間:
2018-4-25 11:12
標(biāo)題:
單片機(jī)雙串口通信程序問題
/***********************************************************************
時(shí)間:2012.11.24
芯片:STC12C5A60S2
晶振:22.1184MHz 波特率:9600bps
引腳定義:串行口1:發(fā)送————TxD/P3.1; 接收———.000—RxD/P3
串行口2: 發(fā)送————TxD2/P1.3;接收————RxD2/P1.2
功能描述:STC12雙串口通信(中斷方式)
當(dāng)串行口1接收數(shù)據(jù)后,將此數(shù)據(jù)由串行口2發(fā)送出去
當(dāng)串行口2接收數(shù)據(jù)后,將此數(shù)據(jù)由串行口1發(fā)送出去
***********************************************************************/
#include<STC12C5A60S2.h>
#define S2RI 0x01 //串口2接收中斷請(qǐng)求標(biāo)志位
#define S2TI 0x02 //串口2發(fā)送中斷請(qǐng)求標(biāo)志位
unsigned char flag1,flag2,temp1=0xaa,temp2=0x55;
/****************串行口初始化函數(shù)****************/
void InitUART(void)
{
TMOD = 0x20; //定時(shí)器1工作在方式2 8位自動(dòng)重裝
SCON = 0x50; //串口1工作在方式1 10位異步收發(fā) REN=1允許接收
TH1 = 0xFA; //定時(shí)器1初值
TL1 = TH1;
TR1 = 1; //定時(shí)器1開始計(jì)數(shù)
EA =1; //開總中斷
ES =1; //開串口1中斷
S2CON = 0x50; //串口2工作在方式1 10位異步收發(fā) S2REN=1允許接收
BRT = 0xFA; //獨(dú)立波特率發(fā)生器初值
AUXR = 0x10; //BRTR=1 獨(dú)立波特率發(fā)生器開始計(jì)數(shù)
IE2 =0x01; //開串口2中斷 ES2=1
}
/****************串行口1發(fā)送****************/
void UART_1SendOneByte(unsigned char c)
{
SBUF = c;
while(!TI); //若TI=0,在此等待
TI = 0;
}
/****************串行口2發(fā)送****************/
void UART_2SendOneByte(unsigned char c)
{
S2BUF = c;
while(!(S2CON&S2TI)); //若S2TI=0,在此等待
S2CON&=~S2TI; //S2TI=0
}
void delay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=600;y>0;y--);
}
/*****************主函數(shù)******************/
void main(void)
{
InitUART(); //串行口初始化
while(1)
{P0=temp2;
//如果串口1接收到數(shù)據(jù),將此數(shù)據(jù)由串口2發(fā)送
if(flag1==1)
{
flag1=0;
UART_2SendOneByte(temp1);
}
delay(300);
P0=temp1;
//如果串口2接收到數(shù)據(jù),將此數(shù)據(jù)由串口1發(fā)送
if(flag2==1)
{
flag2=0;
UART_1SendOneByte(temp2);
}
delay(300);
}
}
/************串行口1中斷處理函數(shù)*************/
void UART_1Interrupt(void) interrupt 4
{
if(RI==1)
{
RI=0;
flag1=1;
temp1=SBUF;
}
}
/************串行口2中斷處理函數(shù)*************/
void UART_2Interrupt(void) interrupt 8
{
if(S2CON&S2RI)
{
S2CON&=~S2RI;
flag2=1;
temp2=S2BUF;
}
}
復(fù)制代碼
作者:
wyx丶
時(shí)間:
2018-4-25 11:13
提問:USB轉(zhuǎn)TTL接stc12c5a60s單片機(jī)再接GA6-GSM模塊,,,這個(gè)程序可用嗎
作者:
wyx丶
時(shí)間:
2018-4-25 11:15
還有我的單片機(jī)晶振為11.0592,串口波特率為115200,在如上代碼中如何修改,謝謝
作者:
wyx丶
時(shí)間:
2018-4-25 11:18
審核這么慢嗎?我就想問個(gè)問題啊~
作者:
最小似然估計(jì)
時(shí)間:
2018-4-26 16:17
將串口初始化程序相應(yīng)的改一下
作者:
wyx丶
時(shí)間:
2018-4-28 16:11
最小似然估計(jì) 發(fā)表于 2018-4-26 16:17
將串口初始化程序相應(yīng)的改一下
初始化程序修改它的波特率和晶振之后,GSM模塊怎么寫進(jìn)去呢?
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1