当前位置:文档之家› 串口发送接收程序中断法

串口发送接收程序中断法

//XTAL最好f=11.0592
//SCON=0x50(接收数据) (T1做bps发生器)
// =0x40(不接收数据) TMOD=0x20(T1 定时 方式2)
// → →TR1=1 →RI/TI==1? → 中断法(事先开EA,ES,软件清零)
// PCON=0x80(SMOD加倍) TL1=TH1=X; ↓ ↓
// =0x00(不加倍) (做发生器不能开T1中断) 查询法 → 处理SBUF(核心)
//发数据格式:SBUF=。。;
// while(!TI);TI=0;
#include
#define uchar unsigned char
#define uint unsigned int
uchar idata trdata[]={0xfc,0xec,0xe4,0xee};
sbit K1=P3^2; //对应开发板K1按键
sbit K2=P3^3;
/*-------------------------------------------------------------*/
//串口初始化
void UART_Init(void)
{
//T1做波特率发生器
/*
SCON = 0x50; //串口工作方式为1 , 串行允许接收
//SM0=0;
//SM1=1;
//REN=1;
TMOD = 0x20; //定时器1 工作在方式2
//PCON = 0x80; //SMOD = 1; 波特率加倍
TH1 = 0xfd; //波特率 9600bps fosc="11".0592MHz
TL1 = 0xfd;
ES = 1; //开串口中断
TR1 = 1; //允许定时器1工作
EA = 1; //开总中断
*/

/*T2做波特率发生器 */

SCON = 0x50; //串口工作方式为1 , 串行允许接收
T2CON = 0x00; //定时器2
RCLK=1;
TCLK=1;
TH2=RCAP2H =0xff; //波特率 9600bps fosc="11".0592MHz 波特率=fosc/(32X[65536-X]) X是RCAP2H/L所对应的初值
TL2=RCAP2L =0xDC;
ES = 1; //开串口中断
TR2 = 1; //允许定时器2工作
EA = 1; //开总中断

}



void delay1ms(uint i)
{
uchar j;
while(i--)
{
for(j=0;j<115;j++) //1ms基准延时程序
{
;
}


}
}


/*-------------------------------------------------------------*/
//串口发送一个字节
void Uart_SendChar(unsigned char dat)
{
SBUF = dat; //待发送的数据写入缓冲区
while(!TI); //等待发送完成
TI = 0; //清零发送标志位
}



/*-------------------------------------------------------------*/
//串口发送一个字符串
void Uart_SendString()
{ uchar i=0;
while(trdata[i]!=0x00)
{
SBUF=trdata[i];
while(!TI);
TI=0;
i++;
}
}




/*-------------------------------------------------------------*/
//主函数
void main(void)
{
UART_Init(); //初始化串口
while(1)
{
if(K1==0)
{
delay1ms(20);
if(K1==0)
{
Uart_SendString(); //发送数据
delay1ms(100);
while(!K1); //等待按键释放
}
}
if(K2==0)
{
delay1ms(15);
if(K2==0)
{
Uart_SendChar(0x00); //发送数据
delay1ms(100);
while(!K2); //等待按键释放
}
}
}
}



/*-------------------------------------------------------------*/
//串口接收中断函数
void INT_UartRcv(void) interrupt 4
{
if(RI) //查询接收标志位(有数据发送过来时置为1)
{
RI = 0; //接收标志位清零
P0

= SBUF; //存储缓冲区的数据
Uart_SendChar(SBUF); //让从计算机上传到单片机的数据 , 传回的计算机显示
}
}

相关主题
文本预览
相关文档 最新文档