#pragma CODE_SEG __NEAR_SEG NON_BANKED
interrupt 20 void SCI0_interrupt(void) { while(SCI0SR1_RDRF) { inbuf1[count3]=ch; count3++; if( (count3==(INBUF_LEN-1)) { flag=1; //如果串口接收的数据达到INBUF_LEN个,且校验没错,就置位取数标志 } }
} #pragma CODE_SEG DEFAULT
void main(void) { /* put your own code here */ init_sci(); init_io(); EnableInterrupts; for(;;) { if(flag) //如果取数标志已置位,就将读到的数从串口发出 { flag=0; //取数标志清0 send_string_com(inbuf1,INBUF_LEN); } } /* wait forever */ }
我想实现通过串口发送一串数字,比如“11 22 33 44”,SCI串口接收(中断)和发送例程,可
以用来测试单片机的中断接收,可是老是不正确(中断只能进入1次),例如
我用串口助手发送了“11 22 33 44”,会接收到“11 22 33 44”,可是第二次发送“11 22 33 44”,就没有接收到数据。邵贝贝的书中说要清中断服务后用RTI作中断返回,可是没有RTI指令,CW不认呀, 麻烦各位给看看,那里有问题?谢谢了
[此贴子已经被作者于2006-4-7 10:32:22编辑过] |