|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
請教周公關于兩個中斷的問題 |
| 作者:melearn 欄目:ARM技術 |
我現(xiàn)在編一個程序,此程序功能是用定時器0產(chǎn)生的中斷來出發(fā)串口向上位機發(fā)送數(shù)據(jù),其中有些函數(shù)語句我不知道怎么寫,請您幫忙看看,謝謝了 /*******串口中斷:********/ void __irq IRQ_UART0(void) { uint8 i; if( 0x04==(U0IIR&0x0F) ) rcv_new = 1;// 設置接收到新的數(shù)據(jù)標志 for(i=0; i<8; i++) rcv_buf[i] = U0RBR; // 讀取FIFO的數(shù)據(jù),并清除中斷標志 VICVectAddr = 0x00; // 中斷處理結(jié)束 } .................................................... .................................................... /*定時器0中斷服務函數(shù)*/ void __irq IRQ_Time0(void) { if(rcv_new==1) for(i=0; i<8; i++) HC595_SendDat(DISP_TAB[rcv_buf[i]&0x0f]); T0IR=0x01; rcv_new = 0; VICVectAddr=0x00; } /************主函數(shù)********/ int main(void) { .................... T0PR=0; //不分頻 T0MCR=0x03; //匹配通道0,復位T0TC并產(chǎn)生中斷 T0MR0=2*Fpclk; //二秒定時 T0TCR=0x03; T0TCR=0x01; /* 設置中斷允許 */ VICIntSelect = 0x00000000; // 設置所有通道為IRQ中斷,0即優(yōu)先級最高 VICVectCntl0 = 0x26; // UART0中斷通道分配到IRQ slot VICVectCntl1 = 0x24; //定時器0中斷通道分配到IRQ slot1,即第二優(yōu)先級 VICVectAddr0 = (int)IRQ_UART0; // 設置UART0向量地址 VICVectAddr1 =(int)IRQ_Time0; T0IR=0x01; VICIntEnable = 0x00000050; // 使能UART0中斷和定時器0中斷 ........................... |
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |