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

📄 dimmer.lst

📁 LED控制
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   DIMMER                                                                03/27/2009 09:21:37 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE DIMMER
OBJECT MODULE PLACED IN Dimmer.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Dimmer.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /************************************************************************
   2          主题:DMX512 按键调光---主控程序
   3          单片机:STC12C5404
   4          晶振:8MHZ  波特率-250KB/S
   5          最后修改日期:2008-12-19
   6          功能:按键调光,带记忆功能 
   7                S1:P2.5--POWER (ON/OFF)
   8                S2;P2.6--UP
   9                S3:P2.7--DOWN 
  10          ************************************************************************/
  11          #include    <intrins.h>
  12          #include        <stdio.h>
  13          #include        "stc12c5410.h"
  14          #include        "CodingTable.h"
  15          
  16          #define     uchar   unsigned    char
  17          #define     uint    unsigned    int
  18          typedef     unsigned char       INT8U;          /* 8 bit 无符号整型  */
  19          typedef     unsigned int    INT16U;     /* 16 bit 无符号整型 */
  20          
  21          #define         TRUE    1
  22          #define         FALSE   0
  23          #define     ON          1     
  24          #define     OFF         0
  25          #define         OVERTIME        0xF0
  26          #define         NONE            0x00  
  27          
  28          //#define               GREY_LEVEL_MAX  52                      //最大灰度值
  29          #define         GREY_LEVEL_MIN  0                       //最小灰度值
  30          #define     MAX_ADDR            210             //定义最大的需发送数据次数
  31          #define     eeprom_began        0x2800          //定义EEPROM起始址
  32          
  33          sbit    LED                     = P2^0;                 //on/off指示灯
  34          sbit    KEY_POWER       = P2^5;                 //按键定义
  35          sbit    KEY_INC         = P2^6;
  36          sbit    KEY_DEC         = P2^7;
  37          #define KEY_MASK        0xE0
  38          
  39          #define         EnableInterrupt()       EA = 1
  40          #define         DisableInterrupt()      EA = 0
  41          
  42          /***************************************************************************
  43          **                                                              全局变量                                                                  **
  44          ****************************************************************************/
  45          
  46          uchar   Cnt10us;                                                //延时10us定时器计数器
  47          uchar   Cnt1ms;                                                 //延时1ms定时器计数器
  48          
  49          uchar   PowerState;                                             //电源开关状态 
  50          uchar   GreyLevel;                                              //LED的灰度值
  51          
  52          extern INT8U byte_read(INT16U byte_addr);  //读字节函数
  53          extern INT8U write_flash_with_protect_in_one_sector(INT16U begin_addr, INT16U counter, INT8U array[]);
  54          
  55          /************************************************************************
C51 COMPILER V8.02   DIMMER                                                                03/27/2009 09:21:37 PAGE 2   

  56          输入参数:uint   ms级
  57          返回参数:无  
  58          备注    ;延时函数
  59           ************************************************************************/
  60          void  Delay1ms(uchar t)
  61          {
  62   1              if(t==0) return;
  63   1              Cnt1ms = t;
  64   1          TH1 = (65536-8000)/256;     // 8MHz,1T,8000个时钟周期,定时时间为1ms
  65   1          TL1 = (65536-8000)%256;     
  66   1          
  67   1          TF1 = 0;
  68   1          TR1 = 1;                            // 开定时器
  69   1          while(Cnt1ms);
  70   1          TR1 = 0;                            // 关定时器1
  71   1      }
  72          
  73          /************************************************************************
  74          函数说明:定时10us,使用定时器0  
  75          备注    :定时时间为1us,1000个循环为1ms  
  76          ************************************************************************/
  77          void  Delay10us(uchar t)
  78          {
  79   1              if(t==0) return;
  80   1              Cnt10us = t;
  81   1          TH0 = (256-80);                     // 8MHz,1T,80个时钟周期,定时时间为10us
  82   1          TF0 = 0;
  83   1          TR0 = 1;                            // 开定时器
  84   1          while(Cnt10us);
  85   1          TR0 = 0;                            // 关定时器0
  86   1      }
  87          
  88          /************************************************************************
  89          函数说明:定时器0中断服务程序 
  90          备注    :中断时间为10us ,模式2(8位自动重装)
  91          ************************************************************************/
  92          void ISR_Timer0(void) interrupt 1
  93          {
  94   1              TF0 = 0;
  95   1              if(Cnt10us>0){ 
  96   2                      Cnt10us--;      
  97   2              }
  98   1      }
  99          
 100          /************************************************************************
 101          函数说明:定时器1中断服务程序 
 102          备注    :中断时间为1ms,注意模式1(16位)需要软件装载计数器
 103          ************************************************************************/
 104          void ISR_Timer1(void) interrupt 3 using 2
 105          {
 106   1              TF1 = 0;
 107   1          
 108   1              TH1 = (65536-8000)/256; //8MHz,1T,8000个时钟周期,定时时间为1ms
 109   1          TL1 = (65536-8000)%256;     
 110   1              
 111   1              if(Cnt1ms>0){  
 112   2                      Cnt1ms--;       
 113   2              }
 114   1      }
 115          
 116          /************************************************************************
 117          初始化  : 定时器初始化
C51 COMPILER V8.02   DIMMER                                                                03/27/2009 09:21:37 PAGE 3   

 118          输入参数:无 
 119          返回参数:无  
 120          备注    :无 
 121           ************************************************************************/
 122          void Timer_Init(void)
 123          {       
 124   1              AUXR |= 0xC0;    //T0,T1速度为12倍标准51 
 125   1              TMOD |= 0x12;           // 定时器0为8位自动重装计数器,定时器1为16位计数器
 126   1      
 127   1              TF0 = 0;
 128   1              TF1 = 0;
 129   1              ET0   = 1;       //  允许定时器0中断   
 130   1              ET1   = 1;       //  允许定时器1中断   
 131   1      }
 132          
 133          /************************************************************************
 134          初始化  : 串口初始化
 135          输入参数:无 
 136          返回参数:无  
 137          备注    :baud rate = 8MHz/32 = 250Kbps 
 138           ************************************************************************/
 139          void UART_Init(void)
 140          {
 141   1              PCON    |=      0x80;           // SMOD=1,double baud rate 
 142   1              SCON    |=      0x80;           // Mode 2:9 bit,fixed baud rate(1/32 the oscillator frequency)
 143   1      }
 144          
 145          /************************************************************************
 146          初始化  : IO口初始化
 147          输入参数:无 
 148          返回参数:无  
 149          备注    :无 
 150           ************************************************************************/
 151          void Port_Init(void)
 152          {
 153   1              P2M0 = 0xE0; P2M1 = 0x1F;   //强推挽输出
 154   1      
 155   1              LED = OFF;
 156   1              KEY_POWER = ON;
 157   1              KEY_INC= ON;
 158   1              KEY_DEC = ON;
 159   1      }
 160          
 161          /************************************************************************
 162          初始化  : 系统初始化
 163          输入参数:无 
 164          返回参数:无  
 165          备注    :无 
 166           ************************************************************************/
 167          void Sys_Init(void)
 168          {       
 169   1              Timer_Init();   //定时器初始化
 170   1              UART_Init();    //串口初始化
 171   1              Port_Init();    //IO端口初始化
 172   1      }
 173          
 174          /************************************************************************
 175          输入参数:无 
 176          返回参数:无  
 177          备注    :读按键值--eeprom
 178           ************************************************************************/
 179          void DataResume(void)
C51 COMPILER V8.02   DIMMER                                                                03/27/2009 09:21:37 PAGE 4   

 180          {
 181   1          PowerState = byte_read(eeprom_began);
 182   1          GreyLevel = byte_read(eeprom_began + 1);
 183   1      }
 184          
 185          /************************************************************************
 186          输入参数:无 
 187          返回参数:无  
 188          备注    :读按键值--eeprom
 189           ************************************************************************/
 190          void DataSave(void)
 191          {
 192   1              uchar FlagWrEEPROM;
 193   1              uchar Temp[2];
 194   1              
 195   1              Temp[0] = PowerState;
 196   1              Temp[1] = GreyLevel;
 197   1              do{
 198   2                      FlagWrEEPROM = write_flash_with_protect_in_one_sector(eeprom_began,2,&Temp[0]);  //写EEPROM
 199   2              }while(!FlagWrEEPROM);

⌨️ 快捷键说明

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