[求助] pic18f452串口通信程序纠结问题

god_of_death   2012-4-7 09:12 楼主

#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)
 {
 }

}

 

 

 

 

问题写在中断代码的右边了

 

  • 问题的现象

回复评论 (6)

有人有18FXXXX USB 通信方面的资料吗?
初学  求啊
点赞  2012-4-24 21:31
hehe  pic串口中断不是这样搞的!发出很多a正常
点赞  2012-4-26 12:11
路过此地
点赞  2012-4-27 13:28

回复 板凳 afei9527 的帖子

大神,求指点呀
点赞  2012-7-2 20:42
可能是你发下去的数据没有读走,所以它一直进入中断了,断点调试下
点赞  2012-7-3 00:01
中断里代码不是这样写的。
点赞  2012-7-3 09:08
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复