************************** Copyright(C) CaKe ****************************************
========================================================================================
==============**版权信息 : CaKen工作室 ==============
==============**文件名 : main.c ==============
==============**作者 : CaKen ==============
==============**版本号 : V1.0 ==============
==============**时间 : 2014.08.27 ==============
==============**功能描述 : 串口中断实验测试 ==============
========================================================================================
****************************************************************************************
#include
#define uchar unsigned char
#define uint unsigned int
uchar idata trdata[]={'C','a','K','e','n','_', 'Z','H','C','K','-','5','1',0xaa};
sbit KEY = P3^2;
***************************************************************************************
函数名:UART_Init();
调 用:();
备 注:
****************************************************************************************
void UART_Init(void)
{
SCON = 0x50; //串口工作方式为1 , 串行允许接收
TMOD = 0x20; //定时器1 工作在方式2
TH1 = 0xfd; //波特率 9600bps fosc="11".0592MHz
TL1 = 0xfd;
EA = 1; //开总中断
ES = 1; //开串口中断
TR1 = 1; //允许定时器1工作
}
***************************************************************************************
函数名:延时函数
调 用:();
****************************************************************************************
void delay1ms(uint i)
{
uchar j;
while(i--)
{
for(j=0;j<115;j++) //1ms基准延时程序
{;}
}
}
***************************************************************************************
函数名:Uart_SendChar();
调 用:();
参 数:
返回值:
结 果:
备 注:发送字符
****************************************************************************************
void Uart_SendChar(unsigned char dat)
{
SBUF = dat; //待发送的数据写入缓冲区
while(!TI); //等待发送完成
TI = 0; //清零发送标志位
}
***************************************************************************************
函数名:Uart_SendString();
调 用:();
参 数:
返回值:
结 果:
备 注:发送字符串
****************************************************************************************
void Uart_SendString()
{ uchar i=0;
while(trdata[i]!=0xaa)
{
SBUF=trdata[i];
while(!TI);
TI=0;
i++;
}
}
***************************************************************************************
函数名:
调 用:();
参 数:
返回值:
结 果:
备 注:
****************************************************************************************
void main(void)
{
UART_Init(); //初始化串口
while(1)
{
if(KEY==0)
{
delay1ms(20);
if(KEY==0)
{
Uart_SendString();
while(!KEY);//等待按键释放
}
}
}
}
***************************************************************************************
函数名:串口中断函数
****************************************************************************************
void INT_UartRcv(void) interrupt 4
{
unsigned char Rcv = 0;
if(RI) //查询接收标志位(有数据发送过来时置为1)
{
RI = 0; //接收标志位清零
Rcv = SBUF; //存储缓冲区的数据
P0 = SBUF;
Uart_SendChar(Rcv); //让从计算机上传到单片机的数据 , 传回的计算机显示
}
}
=======================================================================================
------------------- CaKen工作室 原创作品 --------------------
------------------- CaKen工作室 版权所有 --------------------
========================================================================================