|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
SCI通訊中斷 |
| 作者:dong1021 欄目:DSP技術(shù) |
SCI通訊中斷是不是每次接收中斷只能接收到一個(gè)字節(jié)呀!?發(fā)送可以連續(xù)的. |
| 2樓: | >>參與討論 |
| 作者: tjsheep 于 2006/10/22 20:33:00 發(fā)布:
不是可以有緩沖區(qū)的 |
|
| 3樓: | >>參與討論 |
| 作者: dong1021 于 2006/10/24 7:45:00 發(fā)布:
好象還是一次接收一個(gè)呀。 void SCIRXINT() { PBDATDIR|=0x0fe02;//測(cè)試中斷時(shí)間 IFR=IFR|0x0010;//clear the int5 flag scir[bagpointer]=SCIRXBUF; bagpointer++;//接受數(shù)據(jù)指針 if(bagpointer>=9) bagpointer=0; //測(cè)試入中斷次數(shù) ss++; if(ss>=10000) ss=0; //測(cè)試入中斷次數(shù) PBDATDIR=PBDATDIR&0x0fefd;//測(cè)試中斷時(shí)間 enable(); return; } |
|
| 4樓: | >>參與討論 |
| 作者: dong1021 于 2006/10/24 8:08:00 發(fā)布:
這條指令能在中斷接收N個(gè)字節(jié)嗎? scir[bagpointer++]=SCIRXBUF; |
|
| 5樓: | >>參與討論 |
| 作者: lanmanck 于 2006/10/24 16:35:00 發(fā)布:
有個(gè)fifo,要設(shè)置,你看看手冊(cè) |
|
| 6樓: | >>參與討論 |
| 作者: dong1021 于 2006/10/25 8:00:00 發(fā)布:
謝謝!我看看 |
|
| 7樓: | >>參與討論 |
| 作者: dong1021 于 2006/10/25 8:22:00 發(fā)布:
下面是我的程序,好象有錯(cuò)誤!請(qǐng)指點(diǎn),能進(jìn)中斷,但不能出! unsigned SHORT SCICOMMBAUDRATE; unsigned CHAR tx_record; unsigned CHAR var[7]= {0xeb,0x90,0xeb,0x90,0x02,0x06,0x03}; unsigned CHAR var1[7]= {0xeb,0x90,0xeb,0x90,0x02,0x06,0x03}; #define RXRDY (SCIRXST&0x40) void tx_rec(void); void InitSCI(void) { SCICCR = 0x0007; SCICTL1 = 0x0003; SCICTL2 = 0x0002;//接收中斷使能 SWITCH(SCICOMMBAUDRATE) { case BAUDRATE_1200: SCIHBAUD =0x0010 ;SCILBAUD = 0x0046;break; case BAUDRATE_2400: SCIHBAUD =0x0008 ;SCILBAUD = 0x0022;break; case BAUDRATE_4800: SCIHBAUD =0x0004 ;SCILBAUD = 0x0011;break; case BAUDRATE_9600: SCIHBAUD =0x0002 ;SCILBAUD = 0x0008;break; case BAUDRATE_14400: SCIHBAUD =0x0001 ;SCILBAUD = 0x005a;break; case BAUDRATE_19200: SCIHBAUD =0x0001;SCILBAUD = 0x0003;break; case BAUDRATE_38400: SCIHBAUD =0x0000 ;SCILBAUD = 0x0081;break; default: SCIHBAUD =0x0002 ;SCILBAUD = 0x0008;break; } SCIPRI = 0x0038;//SCI接收低優(yōu)先級(jí)中斷 SCICTL1 = 0x0023; } void SCI_receive(void)//通訊信息接收和發(fā)送 { unsigned CHAR sci_receive_compare; if(PIVR!=0x06) //低優(yōu)先級(jí)的SCI接收中斷 { asm(" CLRC INTM "); return; } PBDATDIR|=0x2020; sci_receive_compare=SCIRXBUF; if(sci_receive_compare==0xeb) { while(RXRDY); sci_receive_compare=SCIRXBUF; if(sci_receive_compare==0x90) { while(RXRDY); sci_receive_compare=SCIRXBUF; if(sci_receive_compare==0xeb) { while(RXRDY); sci_receive_compare=SCIRXBUF; if(sci_receive_compare==0x90) { while(RXRDY); sci_receive_compare=SCIRXBUF; if(sci_receive_compare==0x02) { while(RXRDY); sci_receive_compare=SCIRXBUF; if(sci_receive_compare==tx_address) { while(RXRDY); sci_receive_compare=SCIRXBUF; if(sci_receive_compare==0x03) { tx_rec(); } } } } } } PBDATDIR&=0xffcf;//發(fā)送和接收燈滅 PCDATDIR&=0xfffe; asm(" CLRC INTM "); } } void tx_rec(void)//發(fā)送 { unsigned SHORT i; PBDATDIR&=0xffdf; PCDATDIR|=0x0101; if(tx_record==1) { tx_record=0; for(i=0;i<=7;i++) { SCICTL2=(SCICTL2)&0x00C0; while((SCICTL2)!=0x00C0); SCITXBUF=var[i]; } } else { for(i=0;i<=7;i++) { SCICTL2=(SCICTL2)&0x00C0; while((SCICTL2)!=0x00C0); SCITXBUF=var1[i]; } } } |
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |