1::::::::::::::
#include <REG52.H>
bit Flag;
unsigned int R_D,S_D;
unsigned char i;
void usart_init(void); ///串口初始化
void main (void) {
usart_init(void); ///串口初始化
while(1)
{
if (Flag==1)
{
SBUF = S_D; //SUBF接受/發送緩沖器(又叫串行通信特殊功能寄存器)
while(!TI);// 等特數據傳送(TI發送中斷標誌)
TI = 0;// 清除數據傳送標誌
Flag=0;
}
}
}
}
void ser_int (void) interrupt 4 using 1
{
if(RI == 1) //RI接受中斷標誌
{
RI = 0; //清除RI接受中斷標誌
R_D = SBUF; //SUBF接受/發送緩沖器
S_D=R_D;///////返回PC發送
Flag=1;
}
}
void usart_init(void)///串口初始化
{
SCON = 0x50; //REN=1允許串行接受狀態,串口工作模式1
TMOD|= 0x20; //定時器工作方式2
PCON|= 0x80;
TH1 = 0xF3;// //baud*2 /* 波特率4800、數據位8、停止位1。效驗位無 (12M)
TL1 = 0xF3;
TR1 = 1;
ES = 1; //開串口中斷
EA = 1; // 開總中斷
}
2:::::::::::::
#include <REG52.H>
sbit p34=P3^4;////////定義壹個按鍵
bit Flag=1;
unsigned int S_D;
unsigned char i;
void usart_init(void); ///串口初始化
void delay (unsigned int Z) ; //延時程序 Z倍 MS
void key_p34(void) ; /////按鍵檢
void main (void) {
usart_init(void); ///串口初始化
key_p34(void) ; ////上電後檢測壹次按鍵的狀態
if (Flag==1)//上電後發送壹次按鍵的狀態
{
SBUF =1; //SUBF接受/發送緩沖器(又叫串行通信特殊功能寄存器)
while(!TI);// 等特數據傳送(TI發送中斷標誌)
TI = 0;// 清除數據傳送標誌
}
else
{
SBUF =0; //SUBF接受/發送緩沖器(又叫串行通信特殊功能寄存器)
while(!TI);// 等特數據傳送(TI發送中斷標誌)
TI = 0;// 清除數據傳送標誌
}
while(1)
{
key_p34(void) ;
if (Flag==1)
{
SBUF =1; //SUBF接受/發送緩沖器(又叫串行通信特殊功能寄存器)
while(!TI);// 等特數據傳送(TI發送中斷標誌)
TI = 0;// 清除數據傳送標誌
}
else
{
SBUF =0; //SUBF接受/發送緩沖器(又叫串行通信特殊功能寄存器)
while(!TI);// 等特數據傳送(TI發送中斷標誌)
TI = 0;// 清除數據傳送標誌
}
}
}
void usart_init(void)///串口初始化
{
SCON = 0x50; //REN=1允許串行接受狀態,串口工作模式1
TMOD|= 0x20; //定時器工作方式2
PCON|= 0x80;
TH1 = 0xF3;// //baud*2 /* 波特率4800、數據位8、停止位1。效驗位無 (12M)
TL1 = 0xF3;
TR1 = 1;
ES = 1; //開串口中斷
EA = 1; // 開總中斷
}
void delay (unsigned int Z)//延時程序 Z倍 MS
{
unsigned int x,y;
for(x=Z;x>0;x--)
for(y=110;y>0;y--) ;
}
void key_p34(void) /////按鍵檢測
{
if(p34==0)
{ delay(10);
if(p34==0)
{
while(!p34) ;/////等待按鍵松手
Flag=0;
}
}
}
不懂得歡迎交流