|
|||||||||||
| 技術(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 |
PIC的高低優(yōu)先級(jí)中斷怎么使用 |
| 作者:ambercctv 欄目:單片機(jī) |
為什么低優(yōu)先級(jí)的中斷不發(fā)生 |
| 2樓: | >>參與討論 |
| 作者: ttjlc 于 2004/6/7 16:51:00 發(fā)布:
程序的問(wèn)題嘍,你這樣什么都沒(méi)有,人家怎么說(shuō)? void interrupt HI_ISR(void); void interrupt low_priority LOW_ISR(void); //====================================================================== // 串口、中斷初始化 //---------------------------------------------------------------------- void Init_intr(void) { T0CON = 0x47; //0x47 1:256 Prescaler;8BIT mode;TMR0 off TMR0 = TMR0_20MS; //延時(shí)20ms TXSTA = 0x24; //High Baud Rate減少誤差;Asynchronous mode//TXEN=1 TXIF = 0; TRIS_TXD = 0; TRIS_RXD = 1; RCSTA = 0x90; SPBRG = 77; //77:9600 Baud Rate//38:19200//155:4800 PIE1 = 0x20; //RC interrupt enable;TX interrupt disable//PSP/AD/SSP/CCP/TMR2/TMR1 disable PIE2 = 0x00; //Comparator/EEPROM/Bus Collision/LVD/TMR2/ECCP1 disable PIE3 = 0x00; // IPR1 = 0x20; //RC high priority INTCON = 0xE0; //high_priority、low_priority interrupt enable,TMR0 interrupt enable INTCON2 = 0xF0; //TMR0IP(INTCON2.2):TMR0 interrupt High priority//0x00 low priority INTCON3 = 0xC0; //INT2/INT1 disable RCON = 0x80; //Enable priority levels on interrupts } //====================================================================== // high-priority interrupt // 高優(yōu)先級(jí)中斷 //---------------------------------------------------------------------- void interrupt HI_ISR(void) { if((RCIF)&&(RCIE)&&(RCIP)) { RCIF = 0; if (RXD_Len>=sizeof(RXD_buff)) RXD_Len = 0; //長(zhǎng)度溢出,設(shè)為0 RXD_buff[RXD_Len++] = RCREG; //保存接收數(shù)據(jù) } /* if((TMR2IF)&&(TMR2IE)&&(TMR2IP)) { TMR2IF = 0; } */ } //====================================================================== // low-priority interrupt // 低優(yōu)先級(jí)中斷 //---------------------------------------------------------------------- void interrupt low_priority LOW_ISR(void) { if ((TMR0IF)&&(TMR0IE)&&(!TMR0IP)) { TMR0IF = 0; TMR0 = TMR0_20MS; if(current_Key==None) //沒(méi)有按鍵查詢按鍵動(dòng)作 { send_data(TX_KeyAct,4); } else //有按鍵查詢按鍵狀態(tài) { send_data(TX_KeyStau,4); } } } |
|
|
|
| 免費(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) |