求一个51单片机C语言程序编程

2024-11-28 06:55:06
推荐回答(2个)
回答1:

实验内容:单片机甲、乙进行双机串行通信,甲机通过串口控制乙机LED闪烁(如下图所示,要求利用芯片MAX232),双方的晶振频率均为11.0592MHz(波特率为9600kb/s)要求:甲机按开关K1一次,发送字符“A”给乙机,点亮灯D1与D2;按开关K1两次,发送字符“B”给乙机,点亮灯D3与D4;按开关K1三次,发送字符“C”给乙机,全部点亮;按下第四次K1,灯全灭


#include           /*甲机*/

sbit  k=P1^0;

sbit  P00=P0^0;

sbit  P03=P0^3;

unsigned chari,NO;   

 void main(void)             /* 主函数*/

{

SCON=0x40;  /*方式1只发送,不接收*/ TMOD=0x20; 

TH1=0xfd;   /*给定时器T1赋初值,波特率为9600*/

TL1=0xfd;

TR1=1;

k=1;

NO=0;

  while(1)

  { 

        if(k==0)

        {while(k==0);

        NO=(NO+1)%4;

        }

        switch (NO)

        {case 0 :P0=0xff; 

                 

                 break;

       

        case 1 :P00=0;P03=1; 

                SBUF='A';   

                while(TI==0);   

              TI=0;   

                break;

 

        case 2 : P00=1;

                 P03=0; 

                SBUF='B';   

                while(TI==0);   

              TI=0;   

                break;

 

        case 3 : P00=0; 

                 P03=0;

                SBUF='C';   

                while(TI==0);   

              TI=0;   

                break; 

        }

             

   }

   for(i=250;i>0;i--){;}   //延时

}

 

 

#include      /*乙机*/

sbit  k=P1^0;

sbit  P00=P0^0;

sbit  P03=P0^3;

unsigned char NO;

 

void main()         /*主函数*/

 {

       SCON=0x50;      /*设置串口为方式3,允许接收REN=1*/

       TMOD=0x20;   

       TH1=0xfd;   /*给定时器T1赋初值,波特率为9600*/

       TL1=0xfd;

       TR1=1;

       P0=0xff;

while(RI==0); /*检测接收中断标志RI,RI=0,未接收完,则循环等待*/

       {RI=0;                     

        switch (SBUF)

         { case 'A': P00=0;P03=1;

                 break;

       

         case 'B':P00=1;P03=0;     

                   break;

 

         case 'C': P00=P03=0;               

                    break;

 

     

         }

        }

 }           




符合不???


回答2:

89c51吗?