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

📄 table_lamp.lst

📁 《爱上单片机》配书光盘
💻 LST
字号:
C51 COMPILER V6.12  TABLE_LAMP                                                             07/25/2009 05:54:23 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE TABLE_LAMP
OBJECT MODULE PLACED IN Table_lamp.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Table_lamp.c DEBUG OBJECTEXTEND

stmt level    source

   1          /*********************************************************************************************
   2          程序名:    
   3          编写人:    杜洋 
   4          编写时间:  20 年 月 日
   5          硬件支持:  
   6          接口说明:    
   7          修改日志:  
   8            NO.1-								
   9          /*********************************************************************************************
  10          说明:
  11          
  12          /*********************************************************************************************/
  13          
  14          #include <STC12C2052AD.H> //STC12Cx052或STC12Cx052AD系列单片机头文件
  15          
  16          #include <intrins.h>
  17          
  18          sbit ON_OFF_Key = P1 ^ 7; //ON/OFF开关键
  19          sbit Add_Key = P1 ^ 6; //加亮度(+)
  20          sbit Doc_Key = P1 ^ 5; //减亮度(-)
  21          //LED与P3.7(PWM0)连接
  22          
  23          unsigned char Bright=0x88; //全局变量,亮度值
  24          
  25          
  26          /*********************************************************************************************
  27          函数名:PWM初始化函数
  28          调  用:PWM_init();
  29          参  数:无
  30          返回值:无
  31          结  果:将PCA初始化为PWM模式,初始占空比为0
  32          备  注:需要更多路PWM输出直接插入CCAPnH和CCAPnL即可
  33          /**********************************************************************************************/
  34          void PWM_init (void){
  35   1      CMOD=0x02; //设置PCA定时器
  36   1       	CL=0x00; 
  37   1       	CH=0x00;
  38   1      	CCAPM0=0x42; //PWM0设置PCA工作方式为PWM方式(0100 0010)
  39   1       	CCAP0L=0x00; //设置PWM0初始值与CCAP0H相同
  40   1       	CCAP0H=0x00; // PWM0初始时为0
  41   1      
  42   1       	CR=1; //启动PCA定时器
  43   1      }
  44          /**********************************************************************************************/
  45          
  46          /*********************************************************************************************
  47          函数名:PWM0占空比设置函数
  48          调  用:PWM0_set();
  49          参  数:0x00~0xFF(亦可用0~255)
  50          返回值:无
  51          结  果:设置PWM模式占空比,为0时全部高电平,为1时全部低电平
  52          备  注:如果需要PWM1的设置函数,只要把CCAP0L和CCAP0H中的0改为1即可
  53          /**********************************************************************************************/
  54          void PWM0_set (unsigned char a){
  55   1      	CCAP0L= a; //设置值直接写入CCAP0L
C51 COMPILER V6.12  TABLE_LAMP                                                             07/25/2009 05:54:23 PAGE 2   

  56   1       	CCAP0H= a; //设置值直接写入CCAP0H
  57   1      }
  58          /**********************************************************************************************/
  59          
  60          
  61          
  62          
  63          /*********************************************************************************************
  64          函数名:毫秒级CPU延时函数
  65          调  用:DELAY_MS (?);
  66          参  数:1~65535(参数不可为0)
  67          返回值:无
  68          结  果:占用CPU方式延时与参数数值相同的毫秒时间
  69          备  注:应用于1T单片机时i<600,应用于12T单片机时i<125
  70          /*********************************************************************************************/
  71          void DELAY_MS (unsigned int a){
  72   1      	unsigned int i;
  73   1      	while( --a != 0){
  74   2      		for(i = 0; i < 600; i++);
  75   2      	}
  76   1      }
  77          /*********************************************************************************************/
  78          
  79          
  80          
  81          
  82          
  83          /*********************************************************************************************
  84          函数名:主函数
  85          调  用:无
  86          参  数:无
  87          返回值:无
  88          结  果:程序开始处,无限循环
  89          备  注:
  90          /**********************************************************************************************/
  91          void main (void){
  92   1      	bit POWER=0;
  93   1      	PWM_init(); //PWM初始化
  94   1      
  95   1      	P1M0 = 0xff; //将P1接口设置为高阻态输入 
  96   1      	P1M1 = 0x00; //触摸按键启用
  97   1      
  98   1      	DELAY_MS (200);
  99   1      
 100   1      	while(1){
 101   2      		unsigned char a;
 102   2      		
 103   2      		if(ON_OFF_Key == 1){
 104   3      			if(POWER == 0){
 105   4      				for(a=0;a<=Bright;a++){
 106   5      					PWM0_set(a);
 107   5      					DELAY_MS (20);	
 108   5      				}
 109   4      				PWM0_set(Bright); //将值写入PWM控制LED亮度
 110   4      				POWER = 1;	
 111   4      			}else{
 112   4      				for(a=Bright;a>0;a--){
 113   5      					PWM0_set(a);
 114   5      					DELAY_MS (20);	
 115   5      				}
 116   4      				PWM0_set(0);
 117   4      				POWER = 0;
C51 COMPILER V6.12  TABLE_LAMP                                                             07/25/2009 05:54:23 PAGE 3   

 118   4      			}
 119   3      			while(ON_OFF_Key == 1); //等待按键放开
 120   3      		}
 121   2      		if(Add_Key == 1 && POWER == 1){
 122   3      			Bright++;
 123   3      			PWM0_set(Bright); //将值写入PWM控制LED亮度
 124   3      			if(Bright >= 0xFD){
 125   4      				Bright = 0xFD;
 126   4      			}
 127   3      			DELAY_MS (20);
 128   3      		}
 129   2      		if(Doc_Key == 1 && POWER == 1){
 130   3      			Bright--;
 131   3      			PWM0_set(Bright); //将值写入PWM控制LED亮度
 132   3      			if(Bright < 0x08){
 133   4      				Bright = 0x08;
 134   4      			}
 135   3      			DELAY_MS (20);
 136   3      		}
 137   2      		
 138   2      
 139   2      
 140   2      	}
 141   1      }
 142          /**********************************************************************************************/
 143          
 144          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    192    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1       1
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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