/****************************************************************
//函數名稱:int0_isr(void)
//功 能:中斷0處理函數
//入口參數:無
//出口參數:無
*****************************************************************/
#pragma interrupt_handler int0_isr:iv_INT0
void int0_isr(void)
{
char i,j;
SREG=0x00; // 我試過,不用關中斷也沒問題。
i=(PIND&0B00001000); //讀第一腳值
j=(PIND&0B00000100); //讀第二腳值
if(i){i=1;}else{i=0;} //整理
if(j){j=1;}else{j=0;}
if(i==j){pp--;}else{pp++;} //若是同樣就是+,不同就-
SREG=0x80; // 不用關中斷的話,固然這句也能夠不用,
}
/****************************************************************
//函數名稱:MAIN
//功 能:
//入口參數:無
//出口參數:無
*****************************************************************/
void main()
{
MCUCR=0B00000001; //我用的這個和你們畫的那個圖不同,因此只要變更就觸發。
GICR=0b01000000; //INT0
SREG=0x80; //使能全局中斷
while(1)
{
show1(pp);
}}函數