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

📄 led.lst

📁 LED控制器程序
💻 LST
字号:
C51 COMPILER V8.05a   LED                                                                  10/09/2008 20:25:45 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE LED
OBJECT MODULE PLACED IN led.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE led.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include"reg51.h"
   2          #include "intrins.h"
   3          
   4          #define uchar unsigned char
   5          #define uint unsigned int
   6          
   7          #define ON 0
   8          #define OFF 1
   9          /*
  10          //led
  11          sbit R_led=P1^0;
  12          sbit G_led=P1^1;
  13          sbit B_led=P1^2;
  14          */
  15          //key
  16          sbit MODE=P1^7;
  17          sbit PUSE=P3^7;
  18          sbit B_ADD=P3^5;
  19          sbit B_DEC=P3^4;
  20          sbit S_ADD=P3^0;
  21          sbit S_DEC=P3^1;
  22          
  23          extern void Pwm_delay(); //占空比延时
  24           
  25          uchar //C_time1,
  26                    C_time2, //切换速度
  27                    Pwm_time,//占空比
  28                    Pwm_s,   //LED状态
  29                    MODE_ID, //运行模式
  30                    R_time,  //速度计数器
  31                    Max_ID,  //状态最大值
  32                    Min_ID,  //状态最小值
  33                    Run_ID;  //运行状态
  34          /*
  35          uchar bdata F;
  36          sbit F_run=F^0;
  37          */
  38          uchar code Run_s[]={ 0x01,0x02,0x04,      0x01,0x02,0x04,      0x01,0x02,0x04,      0x01,0x02,0x04,      0
             -x01,0x02,0x04,0x07,0x00,
  39          
  40                                                    0x07,0x06,0x04,0x00, 0x07,0x06,0x04,0x00, 0x07,0x06,0x04,0x00, 0x07,0x06,0x04,0x00, 0x07,0x06,0x04,
             -0x00, 
  41                                                    
  42                                                    0x03,0x00, 0x03,0x00, 0x05,0x00, 0x05,0x00, 0x06,0x00, 0x6,0x00,
  43                                                    0x03,0x00, 0x03,0x00, 0x05,0x00, 0x05,0x00, 0x06,0x00, 0x6,0x00,
  44                                                    0x03,0x00, 0x03,0x00, 0x05,0x00, 0x05,0x00, 0x06,0x00, 0x6,0x00,
  45                                                    0x03,0x00, 0x03,0x00, 0x05,0x00, 0x05,0x00, 0x06,0x00, 0x6,0x00,
  46                                                    0x03,0x00, 0x03,0x00, 0x05,0x00, 0x05,0x00, 0x06,0x00, 0x6,0x00 };//led输出状态表
  47          
  48          uchar code Max_tab[]= { 16,36,96 };//状态最大值表
  49          
  50          uchar code Min_tab[]= { 0,17,37 };//状态最小值表
  51          
  52          
  53          void Int0()interrupt 0 {
C51 COMPILER V8.05a   LED                                                                  10/09/2008 20:25:45 PAGE 2   

  54   1              EX0=0;//暂停键盘扫描
  55   1              if(!MODE) {     //模式切换
  56   2                      MODE_ID++;
  57   2                      if(MODE_ID==3)MODE_ID=0;
  58   2                      Max_ID=Max_tab[MODE_ID];
  59   2                      Min_ID=Min_tab[MODE_ID]; 
  60   2                      Run_ID=Min_ID;
  61   2                      R_time=C_time2;
  62   2              }       
  63   1              if(!PUSE)ET1=~ET1;//开始/暂停
  64   1              if(!S_ADD){     //运行速度加速
  65   2                      if(C_time2==48)C_time2=16;
  66   2                      else C_time2+=16;
  67   2                      R_time=C_time2;
  68   2              }
  69   1              if(!S_DEC) { //运行速度减速
  70   2                      if(C_time2==16)C_time2=48;
  71   2                      else C_time2-=16;
  72   2                      R_time=C_time2;
  73   2              }
  74   1              if(!B_ADD) { //占空比增加
  75   2                      if(Pwm_time==12)Pwm_time=4;
  76   2                      else Pwm_time+=4;
  77   2              }
  78   1              if(!B_DEC){     //占空比减少
  79   2                      if(Pwm_time==4)Pwm_time=12;
  80   2                      else Pwm_time-=4;
  81   2              }
  82   1              EX0=1;//开始键盘扫描
  83   1      }
  84          
  85          void Timer1()interrupt 3 {
  86   1              TH1=0x0b;
  87   1              TL1=0xdc;
  88   1              R_time--;
  89   1              if(R_time==0) {//切换LED输出状态
  90   2                      R_time=C_time2;
  91   2                      if(Run_ID==Max_ID) { Run_ID=Min_ID;/*ET1=0;return;*/ }
  92   2                      else Run_ID++;
  93   2                      Pwm_s=~Run_s[Run_ID];
  94   2              }
  95   1      }
  96          
  97          void Init_system(){
  98   1              //初始化运行状态
  99   1              MODE_ID=0;
 100   1              Max_ID=Max_tab[MODE_ID];
 101   1              Run_ID=Min_ID=Min_tab[MODE_ID];
 102   1              Pwm_time=12;
 103   1              Pwm_s=~Run_s[Run_ID];
 104   1      
 105   1              //INT0中断设置
 106   1              IT0=1;
 107   1              EX0=1;
 108   1      
 109   1              //Timer0中断设置
 110   1              TH1=0x0b;
 111   1              TL1=0xdc;
 112   1              C_time2=R_time=16; 
 113   1              TR1=1;
 114   1              ET1=1;
 115   1              EA=1;   
C51 COMPILER V8.05a   LED                                                                  10/09/2008 20:25:45 PAGE 3   

 116   1      }
 117          
 118          void Pwm_delay() {//占空比延时
 119   1              uchar i;
 120   1              for(i=0;i<5;i++)_nop_();
 121   1      }
 122          
 123          
 124          void main() {
 125   1              uchar Pwm;//占空比计数器
 126   1              Init_system();
 127   1              while(1) {
 128   2                      //启动时间
 129   2                      Pwm=Pwm_time;
 130   2                      P1=Pwm_s;
 131   2                      while(Pwm--)Pwm_delay();
 132   2      
 133   2                      //关闭时间
 134   2                      Pwm=12-Pwm_time;
 135   2                      if(Pwm) {
 136   3                              P1=0xff;
 137   3                              while(Pwm--)Pwm_delay();
 138   3                      }
 139   2              }
 140   1      }
 141                  
 142                  
 143          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    297    ----
   CONSTANT SIZE    =    103    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      8    ----
   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 + -