Board logo

標題: 中斷問題... [打印本頁]

作者: kkdc0426    時間: 2012-9-6 14:39     標題: 中斷問題...

//檔名:CH8-1.C
//目的:當系統重置時,單燈右移,當外部中斷0發生中斷時,P0閃爍5次,結束後, 又回到單燈右移
//試不出來

#include <C8051F330.h>

unsigned char LED=0x80;

main()
{
        void delay(unsigned int);
        PCA0MD &= ~0x40;                  //關看門狗
        XBR1 = 0x40;                      //Cossbar Enable
        P0MDOUT=0xff;                     //設定P0.0-7為高電位輸出
        SP=0x60;       
        EA=1;
        EX0=1;               
        TCON=0x01;               
        while(1)
        {
                P0=~LED;
                delay(50000);
                LED>>=1;
                if(LED==0)
                        LED=0x80;
        }
}

void delay(unsigned int count)
{  
        int i;
        for(i=0;i<count;i++);
}

void EX0_int(void) interrupt 0
{
        int i;
        unsigned char j;
        j=LED;
        P0=0xff;
        for(i=0;i<10;i++)
        {
                delay(20000);        
                P0^=0xff;
        }
        LED=j;
}


想請問,我把SW接到P1.0,需如何修改,可以報行,這種式是從8051改的,我想用在F330上面,
作者: kkdc0426    時間: 2012-9-6 14:40

想請問,我把SW接到P1.0落地,需如何修改,才可以執行,
這種式是從8051改的,我想用在F330上面練習
作者: mike    時間: 2012-9-6 17:55

ext_interrupt0 pin 是在p0.0~p0.7 , 把led顯示移到p1去就行了.
作者: kkdc0426    時間: 2012-9-7 08:32

那再請問

1.
void EX0_int(void) interrupt 0
這個"0"代表什麼意思??

2.
我已把SW改到P0,LED改到P1,
已經OK了,但為什麼只能按P0.1,才會產生中斷,我如果要改成P0.0有辦法改嗎???
作者: kkdc0426    時間: 2012-9-7 08:32

那再請問

1.
void EX0_int(void) interrupt 0
最後面這個"0"代表什麼意思??

2.
我已把SW改到P0,LED改到P1,
已經OK了,但為什麼只能按P0.1,才會產生中斷,我如果要改成P0.0有辦法改嗎???
作者: Ivanlin    時間: 2012-9-25 11:31

void EX0_int(void) interrupt 0
後面的數字 代表 中斷對照表
你可以 在 Datasheet 去搜尋 interrupt  就可以找到這個表
作者: mowson    時間: 2012-9-27 14:19

INT0 預設為P0.1 , INT1預設為P0.0 ,
可參考datasheet 關於 IT01CF 的說明 , 選擇你要的 pin ,
不知道怎麼改 , 最快的方法 ,
void EX0_int(void) interrupt 0 改為
void EX0_int(void) interrupt 2 ,
直接使用 INT1 去中斷




歡迎光臨 茂宣企業 產品討論區 (http://www.morrihan.com/newbb/) Powered by Discuz! 6.0.0