會員登陸
帳號:

密碼:

記住我



忘記密碼?

現在註冊!
網站導航
最新下載
訪問統計 (自2012/5/3)


正在流覽:   1 名訪客





[求助]外部中斷程式問題-PIC18F4520
新會員
註冊日期:
2012/08/23 09:38
來自 台中市龍井區沙田路五段116巷7弄13號
所屬群組:
註冊會員
文章: 6
等級: 1; EXP: 47
HP : 0 / 11
MP : 2 / 250
離線
/*
* File: newmain1.c
* Author: Bahamut
*
* Created on November 11, 2019, 5:45 PM
*/
#include <xc.h>

void interrupt INT_0(void)
{
if(INTCONbits.RBIF==1)
{
INTCONbits.RBIF=0;
LATB++;
}
}

void inti_int(void)
{
INTCONbits.GIE=1;
INTCONbits.PEIE=1;
INTCONbits.INT0IE=1;
INTCONbits.INT0IF=1;
INTCON2bits.INTEDG0=0;
}



void main(void) {
TRISB=0x01;
LATB=0x0f;
inti_int();
while(1)
{
// LATB++;
// _delay(1000);
}

}


上面是我依Datasheet寫的程式可是都無法讓RB0成為外部中斷,是有少哪部分宣告嗎
翻了很多書本跟網路上範例,可是都不能用,很奇怪的晶片PIC18F4520,像是PIC16F1824就很單純也有成功完成外部中斷過。

請教各位先進一下
謝謝

11月11日 22:38:22
轉換PDF檔 列印


Re: [求助]外部中斷程式問題-PIC18F4520
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14865
等級: 73; EXP: 62
HP : 1089 / 1815
MP : 4955 / 82777
離線
void interrupt INT_0(void)
{
INTCONbits.INT0IF=0; //只有一個中斷其他就不要檢查了
LATB++;
}


void inti_int(void)
{
INTCONbits.INT0IF=0;
INTCONbits.INT0IE=1;
INTCON2bits.INTEDG0=0;
RCONbits.IPEN = 1;
INTCONbits.GIEH = 1;
INTCONbits.GIEL = 1;

}

主要是高優先權中斷弄錯了,RBIF 不等於是INTIF。看一下底下的中斷方塊圖架構。

附加檔案:



jpg  擷取.JPG (25.98 KB)
16_5dca1606494e3.jpg 489X247 px

11月12日 10:15:54
轉換PDF檔 列印


Re: [求助]外部中斷程式問題-PIC18F4520
新會員
註冊日期:
2012/08/23 09:38
來自 台中市龍井區沙田路五段116巷7弄13號
所屬群組:
註冊會員
文章: 6
等級: 1; EXP: 47
HP : 0 / 11
MP : 2 / 250
離線
謝謝回覆

用了這方法燒錄後RB0中斷測試能無法產生,但程式有跑出一開始的LATB=0.0f,我可能要檢查電路有沒有問題。

11月12日 11:48:51
轉換PDF檔 列印


Re: [求助]外部中斷程式問題-PIC18F4520
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14865
等級: 73; EXP: 62
HP : 1089 / 1815
MP : 4955 / 82777
離線
應該這樣說 INT0 的中斷與 RB0 的中段無關,一個是 External Interrupt 一個是 Interrupt on Pin Change。這兩個是不一樣的東西,只不過是共用到 PORTB<0> 而已。

忘了說一下,因為有用到 RB0,所以 LATB++; 可以改用 LATD++ 嗎?

11月12日 11:57:31
轉換PDF檔 列印


Re: [求助]外部中斷程式問題-PIC18F4520
中級會員
註冊日期:
2014/05/28 13:30
所屬群組:
註冊會員
文章: 58
等級: 6; EXP: 48
HP : 0 / 137
MP : 19 / 2214
離線
除了版主說的以外,
如附圖,
Datasheet 108頁,

要去config PORTB為digital input,如附圖.

附加檔案:



jpg  123.jpg (33.38 KB)
44755_5dca31b598c9f.jpg 445X187 px

jpg  321.jpg (102.69 KB)
44755_5dca31beb6f7c.jpg 977X432 px

11月12日 12:15:18
轉換PDF檔 列印


Re: [求助]外部中斷程式問題-PIC18F4520
新會員
註冊日期:
2012/08/23 09:38
來自 台中市龍井區沙田路五段116巷7弄13號
所屬群組:
註冊會員
文章: 6
等級: 1; EXP: 47
HP : 0 / 11
MP : 2 / 250
離線
因為我有購買實習版
電路是layout在PB所以在寫在那邊,感謝回覆。

成功了 感謝兩位的幫忙。

11月12日 13:51:17

bahamut 於 2019年11月12日 14:39:38
轉換PDF檔 列印


Re: [求助]外部中斷程式問題-PIC18F4520
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14865
等級: 73; EXP: 62
HP : 1089 / 1815
MP : 4955 / 82777
離線
引用:

energy0364 寫道:
除了版主說的以外,
如附圖,
Datasheet 108頁,

要去config PORTB為digital input,如附圖.


感謝 energy0364 網友的提醒。
PORTB 也支援 ADC 輸入腳的功能,如果是用在 Digital I/O 上就需關閉 ADC 輸入腳功能。

11月13日 10:47:03
轉換PDF檔 列印






無法在此發表文章
可以在此觀看文章
無法回覆文章
無法編輯自己的文章
無法刪除自己的文章
無法發起投票調查
無法在此投票
無法上傳附加檔案
無法不經審核直接發表文章

[進階搜尋]


搜尋
Microchip連結
產品技術問題產品技術支援專線:0800-717718 台北02-25088600 新竹03-5778366 Ext. 8600 高雄07-2137830 MicrochipDIRECT 專線: 07-2137830
Powered by XOOPS © 2001-2012 The XOOPS Project