發新話題
打印

中斷問題...

中斷問題...

//檔名: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上面,

TOP

想請問,我把SW接到P1.0落地,需如何修改,才可以執行,
這種式是從8051改的,我想用在F330上面練習

TOP

ext_interrupt0 pin 是在p0.0~p0.7 , 把led顯示移到p1去就行了.

TOP

那再請問

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

2.
我已把SW改到P0,LED改到P1,
已經OK了,但為什麼只能按P0.1,才會產生中斷,我如果要改成P0.0有辦法改嗎???

TOP

那再請問

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

2.
我已把SW改到P0,LED改到P1,
已經OK了,但為什麼只能按P0.1,才會產生中斷,我如果要改成P0.0有辦法改嗎???

TOP

void EX0_int(void) interrupt 0
後面的數字 代表 中斷對照表
你可以 在 Datasheet 去搜尋 interrupt  就可以找到這個表

TOP

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

TOP

發新話題