我是新编写的8位PIC固件,可以使用我的代码帮助.我将PIC16F1829用于获取RX命令的LED模块.我只是试图获得基本设置,如在RX引脚上接收到某个值时打开LED,但是甚至无法实现.
想让UART通过中断工作,但是甚至无法在主循环中使用轮询.我的中断向量在下面的代码中被注释掉了.
RX引脚:RC5
TX引脚:RB7
用于打开和关闭LED的引脚:RA5
引脚RA5工作正常,可以打开和关闭LED.TX引脚工作正常,但我还没有确认中断TXIF是否也不起作用,就像RCIF不能正常工作一样.
我试过读RCIF和PIR1bits.RCIF.他们都编译了.两个人都没有工作.我在两个不同的LED模块上尝试了两个不同的PIC.它们打开,但读取RX引脚也不起作用.
变量RXIN最初被定义为3,因此由于主循环内的RXIN--循环,灯在启动时闪烁3次,所以我知道它正在进入主循环.但据我所知,RCIF中断在RX引脚接收时没有触发.
我已经在示波器上确认使用相同的波特率将信号送入RX和TX引脚,因此我认为波特率配置正确(300波特,8N1.)我还在示波器上确认RX引脚接收到强而干净的5V信号.到目前为止,轮询RCIF或使用中断服务路由都没有奏效.如果有人能够看到我没有看到的代码问题,我们将非常感谢您的帮助.
我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
// This is for 300 baud rate
#define _BAUD_PRESCALER_LOW_ 0x2A
#define _BAUD_PRESCALER_HIGH_ 0x68
#define _XTAL_FREQ 32000000
#pragma config FOSC = INTOSC // Oscillator Selection->INTOSC oscillator: I/O function on CLKIN pin
#pragma config WDTE = OFF // Watchdog Timer Enable->WDT enabled
#pragma config PWRTE = OFF // Power-up Timer Enable->PWRT disabled
#pragma config MCLRE = OFF // MCLR Pin Function Select->MCLR/VPP pin function is digital …Run Code Online (Sandbox Code Playgroud)