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

📄 c彩灯.lst

📁 《爱上单片机》配书光盘
💻 LST
字号:
C51 COMPILER V6.12  C瞋__                                                                  05/14/2009 16:54:46 PAGE 1   


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

stmt level    source

   1          /*********************************************************************************************
   2          程序名:    渐明渐暗的闪烁彩灯
   3          编写人:    杜洋 
   4          编写时间:  2009年5月13日
   5          硬件支持:  STC12C2052 内部RC或外部12MHZ晶振
   6          接口说明:  8个LED彩灯接P1口  
   7          修改日志:  
   8            NO.1-2009年5月14日 在程序前面加入参数定义项 
   9          /*********************************************************************************************
  10          说明:
  11          使用PWM方式调整LED的亮灭周期,达到亮度变化。
  12          
  13          /*********************************************************************************************/
  14          
  15          #include <REG51.h> //51头文件
  16          /*********************************************************************************************
  17          //《C_无级亮度闪烁》
  18          #define DY_PORT		P1 //设置LED连接的I/O组
  19          #define DY_SPEED	1 //设置每一个明亮级的停留时间(值域:0~65535)
  20          #define DY_PWM		50 //设置明亮的总级数(级数过大会出现闪烁)(值域:0~65535)
  21          #define DY_MAX		50 //设置最大明亮(值域:小于明亮总级数)
  22          /*********************************************************************************************/
  23          //《B_无级亮度变化》
  24          #define DY_PORT		P1 //设置LED连接的I/O组
  25          #define DY_SPEED	1 //设置每一个明亮级的停留时间(值域:0~65535)
  26          #define DY_PWM		500 //设置明亮的总级数(级数过大会出现闪烁)(值域:0~65535)
  27          #define DY_MAX		500 //设置最大明亮(值域:小于明亮总级数)
  28          /*********************************************************************************************
  29          //《A_8级亮度变化》
  30          #define DY_PORT		P1 //设置LED连接的I/O组
  31          #define DY_SPEED	100 //设置每一个明亮级的停留时间(值域:0~65535)
  32          #define DY_PWM		500 //设置明亮的总级数(级数过大会出现闪烁)(值域:0~65535)
  33          #define DY_MAX		8 //设置最大明亮(值域:小于明亮总级数)
  34          /*********************************************************************************************
  35          
  36          bit [自定义名] ; //定义一个位(位的值只能是0或1)例:bit LED
  37          #define [代替名]	[原名]  //用代替名代替原名(可以方便修改常改或调试的值)例:#define LED P1
  38          sbit  [自定义名] = [系统位名] ; //自定义系统位名。例:sbit Add_Key = P3 ^ 1;
  39          unsigned char [自定义名] ; //定义一个0~255的整数变量.例:unsigned char a;
  40          unsigned int [自定义名] ; //定义一个0~65535的整数变量
  41          
  42          /*********************************************************************************************/
  43          void delay (unsigned int a){ // 0.1ms延时程序(12MHz 10倍于51单片机速度时)
  44   1      	unsigned char i;
  45   1      	while( --a != 0){
  46   2      		for(i = 0; i < 12; i++); 
  47   2      	}   				   
  48   1      }
  49          /*********************************************************************************************/
  50          void display (unsigned int a){ //显示程序(50ms的PWM宽度)
  51   1      	DY_PORT = 0x00; //LED小灯亮
  52   1      	delay (a); 		//延时a的长度
  53   1      	DY_PORT = 0xff; //LED小灯灭
  54   1      	delay (DY_PWM-a);//延时总PWM长度减a
  55   1      }
C51 COMPILER V6.12  C瞋__                                                                  05/14/2009 16:54:46 PAGE 2   

  56          /*********************************************************************************************/
  57          void main (void){ //主程序 
  58   1          unsigned int t=1;
  59   1      	unsigned int i;
  60   1      	bit LOOP=0; //LOOP是循环切换标志
  61   1      
  62   1      	while (1){
  63   2      		if(LOOP == 0){ //变亮循环
  64   3      			for(i = 0; i < DY_SPEED; i++){
  65   4      				display(t);
  66   4      			}
  67   3      			t++;
  68   3      			if(t>(DY_MAX-2)){
  69   4      				LOOP = 1;
  70   4      			}
  71   3      		}
  72   2      		if(LOOP == 1){ //变暗循环
  73   3      			for(i = 0; i < DY_SPEED; i++){
  74   4      				display(t);
  75   4      			}
  76   3      			t--;
  77   3      			if(t<2){
  78   4      				LOOP = 0;
  79   4      			}
  80   3      		}
  81   2          }
  82   1      }
  83          /*********************************************************************************************/


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