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

📄 leddriver.lst

📁 通过AD5258和单片机控制的LED驱动程序
💻 LST
字号:
C51 COMPILER V8.02   LEDDRIVER                                                             01/11/2007 14:49:21 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE LEDDRIVER
OBJECT MODULE PLACED IN LedDriver.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LedDriver.c ROM(SMALL) BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*--------------------------------------------------------------------------------------------------------
             ---------------------------------
   2           说明:本程序主要完成ColorSort的一个LED light的控制。
   3           ---------------------------------------------------------------------------------------------------------
             ---------------------------------*/
   4          #include "LedDriver.h"
   5          #include "Ad5258.h"
   6          
   7          
   8          //Entry----------------------------------------------------
   9          void main(void)
  10          {
  11   1              uchar index = 0;
  12   1              //close all interrupt
  13   1              EA  = 0;
  14   1              EX1 = 0;
  15   1              EX0 = 0;
  16   1              TMOD = 0x01;    //timer0, mod = 1 
  17   1              //init
  18   1              InitParams(); 
  19   1              //configure AD5258              
  20   1              for(index = 0; index < ADDR_NUM; index ++)
  21   1              {
  22   2                      RdDataFromEEprom(index);                
  23   2              }       
  24   1              //Timer0        
  25   1              InitTimer0();   //Initial clock0
  26   1              //Init uart     
  27   1              InitUart();             //
  28   1              EnableDog();
  29   1              
  30   1              /*---------------------------------------------------------*/
  31   1              ET0 = 1;                //Timer0 enable         
  32   1              EA  = 1;        //All Int enable
  33   1              //loop for ever------------------------------------
  34   1              while (1)
  35   1              {
  36   2                       KickDog();
  37   2                       //adjust
  38   2                       TEST_TP0 = 1;                  
  39   2                       if(light_flag_up == 2) 
  40   2                       {
  41   3                              EA = 0; 
  42   3                              light_flag_up = 0;                                                              
  43   3                              ConfigAd5258(uaddr_index, I2C_val[uaddr_index]);
  44   3                              WrData2EEprom(uaddr_index);
  45   3                              EA = 1;
  46   3                       }
  47   2                      TEST_TP0 = 0;
  48   2                      if(light_flag_down == 2) 
  49   2                       {
  50   3                              EA = 0; 
  51   3                              light_flag_down = 0;                                                            
  52   3                              ConfigAd5258(uaddr_index, I2C_val[uaddr_index]); 
  53   3                              WrData2EEprom(uaddr_index);
C51 COMPILER V8.02   LEDDRIVER                                                             01/11/2007 14:49:21 PAGE 2   

  54   3                              EA = 1;
  55   3                       }
  56   2                      if(bSendBack == 1)
  57   2                      {
  58   3                              EA = 0;
  59   3                              bSendBack = 0;                  
  60   3                              SendByteUart(uart_val);
  61   3                              EA = 1;
  62   3                      }
  63   2              }
  64   1      }
  65          
  66          //
  67          void InitParams(void)
  68          {       
  69   1              //max3221
  70   1              MAX3221_EN = 1;
  71   1              MAX3221_FORCE_ON  = 1;
  72   1              MAX3221_FORCE_OFF = 0;  
  73   1              //configure
  74   1              for(uaddr_index = 0; uaddr_index < ADDR_NUM; uaddr_index ++)
  75   1                 I2C_val[uaddr_index] = 160;  
  76   1              //Light
  77   1              light_flag_up   = 0;
  78   1              light_flag_down = 0;
  79   1              //Test
  80   1              time_count = 0;
  81   1              time_flag  = 1; 
  82   1              uart_val   = 0;
  83   1              //connect
  84   1              led_flag  = 0;
  85   1              led_count = 0;
  86   1              CONNECT_LED = 0;
  87   1      }
  88          
  89          //Timer0-----------------------------------------------------
  90          //timer interrupt ISR 
  91          void Timer0ISR(void) interrupt 1
  92          {
  93   1              //disable interrupt
  94   1              EA = 0;   
  95   1              //light key up
  96   1              /*----------------------------------------------------------------------------------*/
  97   1              if(LIGHT_UP == 0)
  98   1              {
  99   2                      if(light_flag_up == 0)
 100   2                              light_flag_up  = 1;
 101   2              }                               
 102   1              else
 103   1              {
 104   2                      if(light_flag_up == 1)
 105   2                      {
 106   3                              //get address
 107   3                              /*----------------------------------------------------------------------------------*/
 108   3                              uaddr_index = JUMP0;
 109   3                              if(JUMP1 == 1) uaddr_index += 2;
 110   3                              if(I2C_val[uaddr_index] < MAX_STEP_NUM)
 111   3                                      I2C_val[uaddr_index] = I2C_val[uaddr_index] + 1;                        
 112   3                              light_flag_up  = 2;
 113   3                              //uart_val = I2C_val[uaddr_index];                      
 114   3                              //bSendBack = 1;
 115   3                      }
C51 COMPILER V8.02   LEDDRIVER                                                             01/11/2007 14:49:21 PAGE 3   

 116   2              }               
 117   1              //light key down
 118   1              if(LIGHT_DOWN == 0)
 119   1              {
 120   2                      if(light_flag_down == 0)
 121   2                              light_flag_down  = 1;
 122   2              }
 123   1              else 
 124   1              {
 125   2                      if(light_flag_down == 1)
 126   2                      {
 127   3                              //get address
 128   3                              /*----------------------------------------------------------------------------------*/
 129   3                              uaddr_index = JUMP0;
 130   3                              if(JUMP1 == 1) uaddr_index += 2;
 131   3                              if(I2C_val[uaddr_index] > 0)
 132   3                                      I2C_val[uaddr_index] = I2C_val[uaddr_index] - 1;                        
 133   3                              light_flag_down  = 2; 
 134   3                              //uart_val = I2C_val[uaddr_index];                      
 135   3                              //bSendBack = 1;
 136   3                      }
 137   2              }
 138   1              /*-------------------------------------------------------------------------------------*/ 
 139   1              if(time_flag == 1)      
 140   1              {
 141   2                      time_count ++;
 142   2                      if(time_count == 20)
 143   2                      {
 144   3                          time_flag = 0;
 145   3                              MAX3221_EN = 0;
 146   3                              MAX3221_FORCE_ON  = 1;
 147   3                              MAX3221_FORCE_OFF = 1; 
 148   3                      }
 149   2              }
 150   1              //light led
 151   1              if(led_flag == 1)
 152   1              {
 153   2                      led_count ++;
 154   2                      if(led_count == 1)
 155   2                              CONNECT_LED = 1;
 156   2                      else if(led_count == 5)
 157   2                      {
 158   3                              CONNECT_LED = 0;
 159   3                              led_flag = 0;
 160   3                      }       
 161   2              } 
 162   1              //enable interrupt 
 163   1              /*--------------------------------------------------------------------------------------*/
 164   1              InitTimer0(); 
 165   1              EA = 1;
 166   1      }
 167          
 168          //initlazition timer0
 169          void InitTimer0(void)
 170          {
 171   1              TR0 = 0;
 172   1              TH0 = 0x3C;             // 50ms
 173   1              TL0 = 0xAF;
 174   1              TR0 = 1;
 175   1      }
 176          
 177          /*-----------------------------------------------------------------------------------------*/
C51 COMPILER V8.02   LEDDRIVER                                                             01/11/2007 14:49:21 PAGE 4   

 178          void UartISR(void) interrupt 4
 179          {
 180   1              if(_testbit_(RI))
 181   1              {
 182   2                      uart_val = SBUF;
 183   2                      if(uart_val < ADDR_NUM) //instruct
 184   2                      {
 185   3                              uaddr_index = uart_val;
 186   3                      }
 187   2                      else  //data
 188   2                      {
 189   3                              if(I2C_val[uaddr_index] > uart_val)
 190   3                                      light_flag_down = 2;
 191   3                              else
 192   3                                      light_flag_up = 2;
 193   3                              I2C_val[uaddr_index] = uart_val;
 194   3                              bSendBack = 1;
 195   3                              led_count = 0;
 196   3                              led_flag  = 1;
 197   3                      }                               
 198   2              }
 199   1      }
 200          
 201          /*uart----------------------------------------------------------------------------------------*/
 202          void InitUart(void)
 203          {               
 204   1              SCON  = 0x50;       //SCON: serail mode 1, 8-bit UART, enable recv 
 205   1          TMOD |= 0x20;       //TMOD: timer 1, mode 2, 8-bit reload 
 206   1          PCON |= 0x80;       //SMOD=1; 
 207   1          TH1   = 0xFD;       //Baud:19.2k  fosc=11.0592MHz 
 208   1          IE   |= 0x90;       //Enable Serial Interrupt 
 209   1          TR1   = 1;          //timer 1 run   
 210   1      }
 211          
 212          /*--------------------------------------------------------------------------------------------*/
 213          void SendByteUart(uchar val)  
 214          {
 215   1          SBUF = val;
 216   1          while(TI == 0);
 217   1          TI = 0;
 218   1      }
 219          
 220          /*enable watch dog----------------------------------------------------------------------------*/
 221          void EnableDog(void)
 222          {
 223   1              WDTRST = 0x1E;
 224   1              WDTRST = 0xE1;
 225   1      }
 226          
 227          /*kick the dog---------------------------------------------------------------------------------*/
 228          void KickDog(void)
 229          {
 230   1              WDTRST = 0x1E;
 231   1              WDTRST = 0xE1;
 232   1      }
 233             


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    464    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
C51 COMPILER V8.02   LEDDRIVER                                                             01/11/2007 14:49:21 PAGE 5   

   PDATA SIZE       =   ----    ----
   DATA SIZE        =     10       1
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      3    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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