************************** 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工作室 版權所有 --------------------
========================================================================================