首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PIC到PIC UART通信闪烁LED

PIC到PIC UART通信闪烁LED
EN

Stack Overflow用户
提问于 2017-01-23 01:13:33
回答 2查看 841关注 0票数 0

我想通过PIC12F1572发送一个命令到另一个PIC12F1572通过UART,在这我想发送一个功能,将闪烁的PIC12F1572上从事先知情同意。我做了一些代码,但我有点困惑,有人能在这里帮助我吗?P.S-我正在使用MPLAB X IDE v3.50

主/发射机PIC12F1572:

代码语言:javascript
复制
    #include <xc.h>
    #include "main.h"
    #include "config.h"
    #include "TYPEDEF_Definitions.h"
    #include "PIC_12_Timer0.h"
    #include "PIC_12_UART.h"
    #include "System_init.h"
    #include "Pin_manager.h"
    #include "LED.h"

    #define _XTAL_FREQ 16000000
void main()
{   
    SYSTEM_Initialize();
    //pin_config();
    LATA = 0x00;  
    UART_Init();                  //Initialize UART
  // StartLedBlinkingWithColor(color);

    TRISAbits.TRISA2  = 1; //make RA2 as input

    while (1)
    {   
      //LATAbits.LATA2 = 1;
      uint8_t Var = 0x61;
       //uint8_t Var = LATAbits.LATA2;

        if(TXSTAbits.TRMT == 1)
            {

                  UART_write(LED_Blink()); // is it possible?? or how it will be possible

                 // __delay_ms(1000);
            }

       LATAbits.LATA2 = 1;


    }
}

void LED_Blink()
{
       LATAbits.LATA2   = 1; 
       LATAbits.LATA5   = 1; 

       __delay_ms(1000);


       LATAbits.LATA2   = 0; 
       LATAbits.LATA5   = 0;


}

接收机/从PIC12F1572:

代码语言:javascript
复制
#include <xc.h>
#include "config.h"
#include "PIC_12F_GPIO.h"
#include "Led.h"
#include "Interruptmanage.h"
#include "PIC_12F_UART.h"
#include "PIC_12F_TIMER0.h"
#include "main.h"

void main( void)
{
    uint8 data;   

    InterruptInit();
    TIMER0_Init();
    UART_Init();
    InitLeds(); // here I init GPIO pin..no prb here

    // SetLedOff();

    /*-------------R E C E I V E R*------------*/
    while (1) 
    {   // Endless loop

        if (UART_DataReady() )     // I get prob here ..
        { 
          PORTA = UART_ReadOneByte(); // read the received data, [how can I receive my Led_Blink() function??
          LATAbits.LATA2   = 1;      
          //LATAbits.LATA2 = data;

          //SendByteSerially(data);
        }
     }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-13 07:54:03

因此,为了从UART接收数据并将其保存在数组中,并使用这些数据进行vlink n,我已经完成了以下代码:任何感兴趣的人都可以查看

代码语言:javascript
复制
 while (1)
 {

        if (EUSART_DataReady)
        {
            for (i = 0; i<FRAMESIZE; i++)   //#define FRAMESIZE 19
            {
                RX_Buffer[i] = EUSART_Read();
                if (RX_Buffer[i] == '\n')        //check'\n' in the end of frame
                   break;
            }

            RX_Buffer[i] = '\n';                        //append '\n' at the end of stoaring array for detection of frame
            RX_Buffer[i+1] = '\0';                      // End of an array
            EUSART_WriteAnArrayOfBytes(RX_Buffer);


        if(RX_Buffer[0]=='R' && RX_Buffer[FRAMESIZE-2] == '\n')   //check for correct frame
          {

            LATAbits.LATA2 = 1;
            __delay_ms(2000);
            LATAbits.LATA2 = 0;
            __delay_ms(1000);
          }
        }

  }  
票数 0
EN

Stack Overflow用户

发布于 2017-01-23 06:38:09

有几件事需要考虑:

  • 您不能通过UART“发送函数”。因此,LED_Blink()函数需要位于接收端。在执行任何其他操作之前,请验证该函数是否在接收端工作,没有任何UART交互。
  • 接下来,您可以定义一个协议,它基本上决定通过UART发送的哪个字节值应该触发接收端的LED_Blink()调用。例如,如果您决定使用42字节值触发LED闪烁,则发送方将调用UART_write(42),在接收方,您将得到如下内容: data = UART_ReadOneByte();if (数据== 42) { LED_Blink();}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41797952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档