📄 12_3.c
字号:
//双机点对点通信C51程序:
/* 8051双机点对点通信程序 */
# include < reg51. h >
# define FLAG 1 /* 发送或接收标记 */
unsigned char temp;
unsigned char idata buf [10 ];
void main (void)
{
init () ; /* 串行口初始化 */
if ( FLAG = = 0)
send (buf);
else
receive (buf) ;
}
void init (void) /* 串行口初始化 */
{
TMOD = 0X20; /* 定时器1,方式2 */
TH1 = 0xE8; /* fosc =11. 0592MHz,波特率1200 */
TL1 = 0xE8;
PCON = 0x00; /* SMOD=0 */
FLAG = 1;
SCON = 0x50; /* 8位UART,允许接收 */
}
void send(unsigned char idata *p) /* 发送*/
{
unsigned char i ;
do
{
SBUF = 0xAA;
while ( TI = = 0);
TI = 0;
while (RI = = 0);
RI = 0;
}
while ( (SBUF^0xBB) ! = 0);
do
{
temp = 0;
for (i = 0;i < 16;i + + )
{
SBUF = p[ i ];
temp + = p[ i ];
while ( TI = = 0);
TI = 0;
}
SBUF = temp;
while ( TI = = 0);
TI = 0;
while (RI = = 0);
RI = 0;
}
while (SBUF ! = 0);
}
void receive (unsigned char idata *p) /* 接收 */
{
unsigned char i;
do
{
while (RI = = 0);
RI = 0;
}
while ( (SBUF^0xAA) ! = 0);
SBUF = 0xBB;
while ( TI = = 0);
TI = 0;
while (1)
{
temp = 0;
for (i = 0;i < 16;i + + )
{
while (RI = = 0);
RI = 0;
p[ i ] = SBUF;
temp + = p[ i ];
}
while (RI = = 0);
{
RI = 0 ;
if ( (SBUF^pf) = = 0)
SBUF = 0x00;
break;
else
{
SBUF = 0xFF;
while ( TI = = 0);
TI = 0;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -