アプリ版:「スタンプのみでお礼する」機能のリリースについて

下記の添付ファイルで、xc8 pic16f1827にUART送信を行っていますが、
RB2のRXピンがpic16f1827によりHiの5Vに駆動されているので、
PCからデーターが送信出来ません。

Q1)この不具合の解決に関して、コメント頂けますと
大変有難いです。

貼付コード:
===========================-
#include <xc.h>
#include <pic16f1827.h>

//====================
#define _XTAL_FREQ 8000000 // 8MHz
// CONFIG1
#pragma config FOSC = INTOSC // Oscillator Selection bits (INTRC oscillator; CLKO function on RA6/OSC2/CLKO pin and port I/O function on RA7/OSC1/CLKI pin)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = ON //OFF-->ON *** Power-up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = ON // RA5/MCLR/VPP Pin Function Select bit (RA5/MCLR/VPP pin function is MCLR)
#pragma config BOREN = OFF // Brown-out Reset Enable bit (BOR disabled)
#pragma config LVP = OFF // Low-Voltage Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
#pragma config CPD = OFF // Data EE Memory Code Protection bit (Code protection off)
//#pragma config CCPMX = RB0 // CCP1 Pin Selection bit (CCP1 function on RB0)
#pragma config CLKOUTEN = ON
#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)
#pragma config FCMEN = OFF // Fail-Safe Clock Monitor Enable bit (Fail-Safe Clock Monitor disabled)
#pragma config IESO = OFF //ON-->OFF ****Internal External Switchover bit (Internal External Switchover mode enabled)

// コンフィギュレーション2の設定
#pragma config WRT = OFF // Flashメモリーを保護しない(OFF)
#pragma config PLLEN = OFF // 動作クロックを32MHzでは動作させない(OFF)
#pragma config STVREN = ON // スタックがオーバフローやアンダーフローしたらリセットをする(ON)
#pragma config BORV = HI // 電源電圧降下常時監視電圧(2.5V)設定(HI)
#pragma config LVP = OFF // 低電圧プログラミング機能使用しない(OFF)

unsigned char RC_DATA; //EQU 0x75
unsigned char RC_DATAWK; //EQU 0x76

void RESET_RCIF(void);
void tx_rs232c_main(void);

void LED_toggle(){
if(PORTBbits.RB0==0) {
PORTBbits.RB0=1;
}
else PORTBbits.RB0=0;
}
void __interrupt() myIsr(void){
if(PIE1bits.TMR1IE && PIR1bits.TMR1IF) {
PIR1bits.TMR1IF = 0;
LED_toggle();
}
// btfsc PIR1,RCIF ;RS232C割込み
if(PIR1bits.RCIF){
RESET_RCIF();
}
}
void RESET_RCIF(void){
PIR1bits.RCIF=0;
PIR1bits.TXIF=0;
PIE1bits.RCIE=0;
RC_DATA=RCREG;

// andをとる
RC_DATAWK=RC_DATA & 0xc0;

tx_rs232c_main();//割込み処理
PIE1bits.RCIE=1;
}

A 回答 (1件)

ご提示のプログラムは小生にはちょっとわかり兼ねますが、UART機能の使用宣言やボーレートの設定が見当たらないように思います。

    • good
    • 0
この回答へのお礼

お世話になります。
pic16f88とはuartの設定が変わっている様です。
APFCON0=0xff APFCON1=0x00の設定が必要でした。
データーシートが2個あり、その内1個は不完全でした。
また、開発環境MPLAB XIDEは外注で制作しているようで、
その機能、操作方法の十分なチェックが出来ていない様です。
VisualStudioの制作を行った所と同じようです。

以上、回答有難う御座いました。

お礼日時:2020/07/15 07:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!