旋轉編碼開關程序



/****************************************************************
//函數名稱: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);  

          }}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM