/*
说明:
1. U1为发信机,U2位收信机;
2. U1收到数据后会打印出AT89C51 U1-->..., 并循环点亮8个LED;
3. U2接收输入数据后保存最新的30个字符,按‘\’后输出AT89C51 U2-->...
*/
#include <reg51.h> /* define 8051 registers */
#include <stdio.h> /* define I/O functions */
void delays(unsigned int ms)
{
unsigned int ii,jj;
for(ii=0;ii<ms;ii++)
for(jj=0;jj<5000;jj++);
}
void delayms(void)
{
unsigned int ii;
for(ii=0;ii<100;ii++);
}
void ledloop(unsigned char ss)
{
unsigned int ii;
P1=0xFF;
for(ii=0;ii<8;ii++)
{
P1=~(0x01<<ii);
delays(ss);
P1=0xff;
delays(ss);
}
P1=0xFF;
}
void initcom(void){
SCON = 0x52;
TMOD = 0x20;
TCON = 0x69;
TH1 = 0xf3;
}
void main (void){ /* main program */
unsigned char ch;
initcom();
//printf ("\n-----------------------");
//printf ("\n|Here is the receiver!|");
//printf ("\n-----------------------\n");
ledloop(10);
while (1){
P1=0;
delays(10);
P1=0xFF;
delays(10);
P1=0;
delays(10);
P1=0xFF;
delays(10);
ch = getchar();
if( (ch>30)&&(ch<123))
{
printf("\nAT89C51 U1-->%c\n", ch);
delayms();
ledloop(3);
}
}
}
温馨提示:答案为网友推荐,仅供参考