|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產業(yè) | CAN-bus/DeviceNe |
遇到奇怪的問題,KEIL中T1、UART0中斷處理函數被編譯器忽略! |
| 作者:emicro 欄目:單片機 |
MCU為77E516,附上主要程序: void main(void) { McuIint(); EN1 = 1; T1_Init(); UART_Init(); EA = 1; while (1) { MainTask(); // 目前為空函數 } } void McuIint(void) { EA = 0; // 中斷禁止 P1 = 0xff; // 初始化P1口 PMR = 0x40; // 設定一個機器周期為4個振蕩器周期 CKCON = 0x3c; // T0、T1、T2計數周期為4個振蕩器周期 IP = 0x00; IE = 0x00; EIE = 0x00; } void T1_Init(void) { TMOD &= 0x0F; // 清除T1控制位(T0不變) TMOD |= 0x10; // T1作為16位定時器 TH1 = T1_RELOADH; TL1 = T1_RELOADL; ET1 = 1; TR1 = 1; } void UART_Init(void) { T2MOD = 0; // T2向上計數 T2CON = 0x30; // T2做波特率發(fā)生器 RCAP2L = T2_RELOADL; RCAP2H = T2_RELOADH; TH2 = T2_RELOADH; TL2 = T2_RELOADL; SCON0 = 0x50; // 串口工作于方式1:8位數據,1位停止位,無奇偶校驗 PCON = 0x80; // 波特率加倍 ES0 = 0; // 串口中斷允許 1-enable // PS0 = 0; // 串口中斷優(yōu)先級 1-高,0-低 TR2 = 0; // 啟動T2 } void T1_ISR(void) interrupt 3 { TR1 = 0; TH1 = T1_RELOADH; TL1 = T1_RELOADL; TR1 = 1; KeyScan(); } void UART_ISR(void) interrupt 4 { TI=0; } 結果編譯過后,KEIL報告說T1_ISR和UART_ISR是未使用的段 真是奇怪了,這到底是什么原因造成的呢? |
| 2樓: | >>參與討論 |
| 作者: dreambird 于 2007/4/15 13:18:00 發(fā)布:
re 很簡單,請問你在哪里掛接了這兩個ISR呢?ISR的地址是需要跟對應的中斷向量掛接的,建議你看看例程,很多例子都有一段初始化的匯編代碼,會有ISR的掛接。 |
|
| 3樓: | >>參與討論 |
| 作者: emicro 于 2007/4/15 15:36:00 發(fā)布:
re 暈了,樓上兄弟,你不會以為我第一次用ISR吧,中斷向量是沒錯的,我以前也是這么用的,不知道這次怎么會遇到這種問題,兄弟們誰有相似的經歷嗎? |
|
| 4樓: | >>參與討論 |
| 作者: dreambird 于 2007/4/15 20:16:00 發(fā)布:
re hehe,sorry |
|
| 5樓: | >>參與討論 |
| 作者: ayb_ice 于 2007/4/16 7:46:00 發(fā)布:
錯誤信息帖出來... |
|
| 6樓: | >>參與討論 |
| 作者: thw 于 2007/4/17 1:55:00 發(fā)布:
貌似是這樣。。。 函數調用前要聲明。建議把MAIN函數放在最后編譯下試試。 |
|
| 7樓: | >>參與討論 |
| 作者: lenglx 于 2007/4/17 10:56:00 發(fā)布:
多半是你把中斷向量的選項搞丟了 在options of target "xxx" -> c51 -> interrupt vectors at 0 勾上. |
|
| 8樓: | >>參與討論 |
| 作者: emicro 于 2007/4/18 22:06:00 發(fā)布:
多謝lenglx! 確實跟你說的情況一樣,出錯的項目工程中 interrupt vectors at 0 被取消了。真納悶什么時候動過這個了,我的mian函數文件和項目文件不在一個文件夾,后來我把它們都提出來重建了一個項目就正常了,一直在懷疑是這個引起的,lenglx要是不說,我八成還暈著呢。多謝了! |
|
|
|
| 免費注冊為維庫電子開發(fā)網會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號 |