?? communication1.c.bak
字號:
/*********************************************************************************/
//程序名:commucation1.c
//功能描述:利用單片機的串口實現雙機雙工通信
//調用函數:Timer_10ms(uint_1ms),Led_Off(),Led_On()
//輸入:
//返回:
//設計者:wei 日期:2006.10.25
//修改者: 日期:
//版本:
/********************************************************************************/
#include<Reg51.h>
#define unit unsigned int
#define uchar unsigned char
#define ulong unsigned long
#define OSC_FREQ 12000000
#define C10ms (65536-OSC_FREQ/(12000000/9970))
uchar ucSBUF232;
/******************************************************************************************
*********************************初始化CPU****************************************
*****************************************************************************************/
void serial_Init(void)
{
IE =0x00;
TMOD = 0x20;
TH0 = C10ms/256;
TL0 = C10ms%256;
TH1 = 0xfa;
TL1 = 0xfa;
PCON = 0x00;
SCON = 0xd8;
RI = 0 ;
TI = 0;
TR0 = 0;
TR1 = 1;
ES = 1;
EA = 1;
}
/******************************************************************************************
*********************************串行口中斷處理****************************************
*****************************************************************************************/
void serialInterrupt() interrupt 4
{
if(RI)
{
RI = 0;
ucSBUF232 = SBUF;
if(ucSBUF232 == 0x01)
{
P1 = 0x01;
}
else if(ucSBUF232 == 0x02)
{
P1 = 0x02;
}
else if(ucSBUF232 == 0x04)
{
P1 = 0x04;
}
}
else if(TI)
{
TI = 0;
REN =1;
ucSBUF232 = 0xff;
}
}
/******************************************************************************************/
//函數名:void Delay(void)
//功能:延時
//調用函數:
//輸入參數:
//輸出參數:
//說明:
/*******************************************************************************************/
void Delay(void)
{
uchar i,j,h;
for(i = 0;i<2;i++)
{
for(j=0;j<200;j++)
{
for(h=0;h<250;h++);
}
}
}
/******************************************************************************************
*********************************主函數:初始化CPU****************************************
*****************************************************************************************/
void main(void)
{
uchar i=0;
serial_Init();
REN = 0;
RI = 0;
while(1)
{
if(ucSBUF232 == 0x01)
{
P1=0x01;
Delay();
Delay();
SBUF = 0x02;
}
else if(ucSBUF232 == 0x02)
{
P1=0x02;
Delay();
Delay();
SBUF = 0x04;
}
else if(ucSBUF232 == 0x04)
{
P1=0x04;
Delay();
Delay();
SBUF = 0x01;
}
else
{
SBUF=0x01;
Delay();
Delay();
Delay();
P1 =0x00;
if(REN && ucSBUF232 ==0xff)
REN=0;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -