pic18f452串口通信程序纠结问题

2019-03-25 19:26发布

#include<p18cxxx.h> 

void PIC18F_High_isr(void);  //中断服务函数声明#pragma code high_vector_section=0x8void high_vector (void)
{
 _asm goto PIC18F_High_isr _endasm
}#pragma code
#pragma interrupt PIC18F_High_isrvoid 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)
 {
 }}    问题写在中断代码的右边了  此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。