#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) { } } 问题写在中断代码的右边了
|