#include<p18cxxx.h>
void PIC18F_High_isr(void); //中断服务函数声明
#pragma code high_vector_section=0x8
void high_vector (void)
{
_asm goto PIC18F_High_isr _endasm
}
#pragma code
#pragma interrupt PIC18F_High_isr
void PIC18F_High_isr (void)
{
PIR1bits.RCIF=0;
// TXREG=RCREG; 把上位机发送的数据再发回上位机,为什么这一句能实现我所想要的功能,而下一句不能
TXREG='A'; //上位机发送数据,单片机发送一个A回来 但问题是发了很多个A回来,这是为什么
}
void main(void)
{
DDRDbits.RD7=1 ;
//TRISC=0X00;
DDRCbits.RC6 =0 ; //把RC6的方向设置为输出
DDRCbits.RC7 =1 ; //把RC7的方向设置为输入
RCSTAbits.SPEN=1; //设置串口模块 (把RX/DT 和TX/CK 引脚配置为串口引脚)
TXSTAbits.SYNC=0; //设置为异步模式
TXSTAbits.BRGH=1; //高速
SPBRG=16000000/64*(1*3+1)/9600-1; //波特率寄存器置位,9600
RCSTAbits.CREN=1; //使能接收
TXSTAbits.TXEN=1; //使能发送
IPR1bits.RCIP=1; //高优先级
PIE1bits.RCIE=1; //串口接收中断使能
// PIE1bits.TXIE=1;
INTCONbits.PEIE=1; //外设中断使能,使能所有未被屏蔽的外设中断
INTCONbits.GIE=1;
// PIR1bits.RCIF=0;
while(1)
{
}
}
问题写在中断代码的右边了