************************** Copyright(C) CaKe ****************************************
========================================================================================
==============**版權(quán)信息 : CaKen工作室 ==============
==============**文件名 : main.c ==============
==============**作者 : CaKen ==============
==============**版本號 : V1.0 ==============
==============**時間 : 2014.08.27 ==============
==============**功能描述 : 串口中斷實(shí)驗(yàn)測試 ==============
========================================================================================
****************************************************************************************
#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;
***************************************************************************************
函數(shù)名:UART_Init();
調(diào) 用:();
備 注:
****************************************************************************************
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工作
}
***************************************************************************************
函數(shù)名:延時函數(shù)
調(diào) 用:();
****************************************************************************************
void delay1ms(uint i)
{
uchar j;
while(i--)
{
for(j=0;j<115;j++) //1ms基準(zhǔn)延時程序
{;}
}
}
***************************************************************************************
函數(shù)名:Uart_SendChar();
調(diào) 用:();
參 數(shù):
返回值:
結(jié) 果:
備 注:發(fā)送字符
****************************************************************************************
void Uart_SendChar(unsigned char dat)
{
SBUF = dat; //待發(fā)送的數(shù)據(jù)寫入緩沖區(qū)
while(!TI); //等待發(fā)送完成
TI = 0; //清零發(fā)送標(biāo)志位
}
***************************************************************************************
函數(shù)名:Uart_SendString();
調(diào) 用:();
參 數(shù):
返回值:
結(jié) 果:
備 注:發(fā)送字符串
****************************************************************************************
void Uart_SendString()
{ uchar i=0;
while(trdata[i]!=0xaa)
{
SBUF=trdata[i];
while(!TI);
TI=0;
i++;
}
}
***************************************************************************************
函數(shù)名:
調(diào) 用:();
參 數(shù):
返回值:
結(jié) 果:
備 注:
****************************************************************************************
void main(void)
{
UART_Init(); //初始化串口
while(1)
{
if(KEY==0)
{
delay1ms(20);
if(KEY==0)
{
Uart_SendString();
while(!KEY);//等待按鍵釋放
}
}
}
}
***************************************************************************************
函數(shù)名:串口中斷函數(shù)
****************************************************************************************
void INT_UartRcv(void) interrupt 4
{
unsigned char Rcv = 0;
if(RI) //查詢接收標(biāo)志位(有數(shù)據(jù)發(fā)送過來時置為1)
{
RI = 0; //接收標(biāo)志位清零
Rcv = SBUF; //存儲緩沖區(qū)的數(shù)據(jù)
P0 = SBUF;
Uart_SendChar(Rcv); //讓從計(jì)算機(jī)上傳到單片機(jī)的數(shù)據(jù) , 傳回的計(jì)算機(jī)顯示
}
}
=======================================================================================
------------------- CaKen工作室 原創(chuàng)作品 --------------------
------------------- CaKen工作室 版權(quán)所有 --------------------
========================================================================================