#include <reg52.h>
#define Fosc 11059200l
#define Boud 9600
unsigned char Uart_Rdat, Uart_Flag;
void Uart_Stop()
{
ES=0; //中断关闭
TR1=0;//定时器关闭
}
void Uart_Init(void)
{
TMOD = 0x20; //串行口模式2,8位波特率不变
SCON = 0x50;
TH1 = 0xfd; // 11.0592工作方式下初值为fd。
// TH1 = -(Fosc/12/32/Boud);
TL1 = TH1;
PCON = 0x00; //波特率不加倍
EA=1;
ES=1;
TR1 = 1;
}
void Uart_SendByte(unsigned char c)
{
ES=0;
SBUF = c;
while(TI==0) ;
TI = 0;
ES=1;
}
void Uart_SendString(unsigned char *puts)
{
ES=0;
while(*puts)
{
SBUF=*puts;
while(TI==0);
TI=0;
puts++;
}
ES=1;
}
/**************************************
主文件中调用,好像不能同时存在
编译会出错
***************************************/
/*
void UART_Interrupt(void) interrupt 4
{ // ES=0;
if(RI)
{
RI = 0;
Uart_Rdat=SBUF;
Uart_Flag=1; //查询法 标志位
//add your code here!
}
else
TI=0;
}
*/
/**************************************
这个多文件调用时绝对不能有,不能同时有多个主函数的
这是可以看看 里面的调用方法要屏蔽
***********************************************/
/*void main(void)
{ unsigned char Wait;
Uart_Init();
while(1)
{ Wait=200;
while(--Wait);
if(Uart_Flag)
{
Uart_Flag=0;
Uart_SendByte(Uart_Rdat);
Uart_SendString("zheshichuankoutongxintiaoshi\r\n");
}
}
} */
评论0