爱问知识人 爱问教育 医院库

求51单片机双机通信C程序(中断方式)

首页

求51单片机双机通信C程序(中断方式)

如题

提交回答

全部答案

    2018-05-30 04:36:32
  •   这是我写的一段成熟的串行全功能通信程序,中断或非中断方式收发均可,多少机都可以,直接调用就可以,display是测试用的。 

    #include "stdio。h"
    #include "reg52。
      h"

    typedef unsigned char uint8;
    typedef unsigned short uint16;
    typedef unsigned long uint32;
    typedef char int8;
    typedef short int16;
    typedef long int32;

    uint8 tx_buf,rx_buf;//YYF

    void delays()//延时若干秒,不精确
    {
    uint16 i,j;
    for ( i=100; i!=0; i--)
    {for(j=2000;j!=0;j--)

    ;}//YYF
    }


    void delayms()/*延时若干毫秒,不精确YYF*/
    {
    uint8 i,j;
    for ( i=40; i!=0; i--)
    {for(j=200;j!=0;j--)

    ;}
    }
    //YYF
    void uart_interrupt (void) interrupt 4 using 1
    {
    if(RI==1)
    {
    RI=0;
    ACC=SBUF;
    // nop();
    // nop();
    rx_buf=ACC;
    delayms();
    P1=rx_buf;//**********************************8
    }
    else{TI=0;}
    }

    void uart_init()
    {
    SCON=0xd0;
    TMOD=0x20;//YYF
    TH1=0xfd;
    TL1=0xfd;
    TR1=1;
    TI=0;
    RI=0;
    ES=1;
    EA=1;
    }

    void uart_tx(uint8 tx_data)
    {
    ES=0;
    TI=0;//YYF
    ACC=tx_data;
    TB8=1;
    SBUF=ACC;
    // nop();
    // nop();
    while(TI==0){};
    TI=0;
    ES=1;
    delayms();
    }

    void uart_rx()
    {
    RI=0;
    while(RI==0)
    {}
    ACC=SBUF;
    // nop();//YYF
    // nop();
    // nop();
    rx_buf=ACC;
    RI=0;
    }

    main()
    {

    delays();//YYF

    P1=0x02;//****************************
    uart_init();
    uart_tx(0x16);
    uart_rx();

    while(1);
    }

    更多电子问题请关注我!zhidao_ceo竭诚为您解答!。
      

    傅***

    2018-05-30 04:36:32

类似问题

换一换
  • 程序设计 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):