⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dm114.lst

📁 小功率LED条形灯的全彩控制含64阶灰度变化
💻 LST
📖 第 1 页 / 共 2 页
字号:
  90          void clock_inital1() reentrant                   //定时器1的初始化;
  91          {TR1=0;
  92   1       TH1=0x00;
  93   1       TL1=0x00;
  94   1       TR1=1;}
  95          //////////////////////////////////////////////////
C51 COMPILER V7.06   DM114                                                                 05/07/2008 09:59:14 PAGE 4   

  96          void keynum0()                      //display mode
  97          {
  98   1         flag++;
  99   1         mode=0;
 100   1         ET1=1;
 101   1         if(flag>=5) {flag=0; mode=1;  ET1=0;j=0;}
 102   1      
 103   1       }
 104          ////////////////////////////////////////
 105          void key()                                     //键盘子程序;
 106          { unsigned char keycode;
 107   1        key0=1;
 108   1       
 109   1        keycode=P1&0x10;                 
 110   1       if(keycode!=0x10)                            //判断是否有键按下;
 111   1       {
 112   2         delay(20);                                 //延时去抖动;
 113   2         keycode=P1&0x10; 
 114   2         while(keycode!=0x10)                       //确认有键按下;
 115   2         {
 116   3            if(key0==0)                             //KEY0按下后执行子程序;
 117   3                { 
 118   4                   keynum0();                           //       
 119   4                          while(1)                          //等待键释放; 
 120   4              { if(key0==1) break;
 121   5                        delay(10);
 122   5                           }
 123   4                            }
 124   3           break; }
 125   2         }
 126   1        
 127   1      }
 128          ////////////////////////////////////////////////
 129          
 130          ///////////////////////////////////////////////////
 131          main()
 132          {
 133   1       
 134   1        TMOD=0x11;
 135   1        EA=1;
 136   1        TF1=0;
 137   1        TF0=0;
 138   1        clock_inital1();
 139   1        clock_inital0();
 140   1        ET1=1;
 141   1        ET0=1;
 142   1        EX0=1;              // INT0中断开
 143   1        IT0=0;              // INT0低电平触发(为1则为下降沿触发)
 144   1      
 145   1      
 146   1        STB=0;
 147   1        OE=0;
 148   1        flag=1;
 149   1        mode=0;
 150   1        number=0;
 151   1        p=0;
 152   1      
 153   1      
 154   1      
 155   1        while(1)  
 156   1        {       if(mode==1)
 157   2        {    if(error==0) 
C51 COMPILER V7.06   DM114                                                                 05/07/2008 09:59:14 PAGE 5   

 158   3             {for(i0=0;i0<45;i0++)
 159   4                    {send(ANODE[j][i0]);}
 160   4                         STB=1;
 161   4                             STB=0;
 162   4                        error=1;}
 163   3                     for(m=0;m<750;m++)
 164   3                     {          
 165   4                     for(t=0;t<k;t++)
 166   4                      { OE=0;OE=0;}
 167   4             
 168   4                               for(t=0;t<(32-k);t++)
 169   4                         { OE=1;OE=1;}
 170   4                       }  
 171   3         
 172   3      
 173   3                       k++;
 174   3        }
 175   2      
 176   2      
 177   2      
 178   2      
 179   2      
 180   2         }
 181   1      
 182   1        
 183   1      }
 184          /////////////////////////////////////////////////////////////////
 185          //INT0中断  由P3.2引脚产生
 186          void int_0() interrupt 0 using 0
 187          {    
 188   1         key();  
 189   1          
 190   1      }
 191          ///////////////////////////////////////////////////////////////
 192          void clk_int0() interrupt 1                 //定时器0中断程序;
 193          { 
 194   1         clock_inital0();  
 195   1      
 196   1         number++;
 197   1                     if(error==1)
 198   1                    {      if(k==32)
 199   2                       { k=0;j++;if(j==7) {j=0; }
 200   3                         for(i0=0;i0<45;i0++)
 201   3                            {send(ANODE[j][i0]);}
 202   3                         STB=1;
 203   3                             STB=0;}}
 204   1      
 205   1      }
 206          ///////////////////////////////////////////////////////////////
 207          void clk_int1() interrupt 3  
 208          { unsigned char i;   
 209   1         clock_inital1();
 210   1        if(mode==0)
 211   1         {switch(flag)
 212   2          { 
 213   3           case 1:  if(number>=5){ number=0;p++;}
 214   3                       if(p>=7) p=0;
 215   3                       for(i=0;i<45;i++)
 216   3                            { send(ANODE2[p][i]);}  STB=1;STB=0;error=0;OE=0;
 217   3      
 218   3                                      break;
 219   3               
C51 COMPILER V7.06   DM114                                                                 05/07/2008 09:59:14 PAGE 6   

 220   3               case 2:  if(number>=4){ number=0;p++;}
 221   3                       if(p>=16) p=0;
 222   3                       for(i=0;i<45;i++)
 223   3                            { send(ANODE4[p][i]);}  STB=1;STB=0;error=0;OE=0;
 224   3                                      break;
 225   3           case 3:   if(number>=10){ number=0;p++;}
 226   3                       if(p>=7) p=0;
 227   3                       for(i=0;i<45;i++)
 228   3                            { send(ANODE3[p][i]);}  STB=1;STB=0;error=0;OE=0;
 229   3                                      break;
 230   3          
 231   3       
 232   3               case 4:  if(number>=7){ number=0;p++;}
 233   3                       if(p>=7) p=0;
 234   3                       for(i=0;i<45;i++)
 235   3                            { send(ANODE1[p+i]);}  STB=1;STB=0;error=0;OE=0;
 236   3        
 237   3                       /*
 238   3                        if(k==32)
 239   3                         { k=0;j++;if(j==7) {j=0; }
 240   3                         for(i=0;i<45;i++)
 241   3                            {send(ANODE[j][i]);}
 242   3                         STB=1;
 243   3                             STB=0;}*/
 244   3                                      break;
 245   3      
 246   3           default : flag=1;break;
 247   3             }
 248   2         
 249   2               }
 250   1      
 251   1      
 252   1      
 253   1      
 254   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    677    ----
   CONSTANT SIZE    =   1901    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     11    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -