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

📄 main.lst

📁 KEIL C编译 到位监控程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.20   MAIN                                                                  10/13/2008 13:13:43 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //main.c 可能中文文件夹下有问题 //电机输出应该屏蔽其他电机异动
   2          //风扇 12v 0.37A  灯 12mA 12V  门磁 0.67A 24V
   3          #include "AT89X51.h"
   4          #include "main.h"
   5          #include <intrins.h>
   6          #include <absacc.h>
   7          //#include <reg52.h>
   8          #define  uchar unsigned char
   9          #define  uint unsigned int
  10          
  11          BYTE workState = HALT_STATUS;   //工作状态
  12          
  13          
  14          //输出数组
  15          uchar ACK_BUF[LENMAX];                //Command in length=3 数据(命令) 接收 缓冲区
  16          uchar DLE_BUF[DLELENMAX];               //state out length=3  数据(状态) 发送 缓冲区
  17          //uchar    TRUE_LEN=0;                   //接收字符个数统计变量
  18          uchar    IN_LENGTH;
  19          bit first_DLE=0;
  20          
  21          uchar CMDIN[LENMAX];                //Command in length=3 数据(命令) 接收 缓冲区
  22          
  23          uchar    count=0;                   //接收字符个数统计变量
  24          bit      RECE_flag=0;               //接收标志位(1=成功接收)
  25          //bit      RECE_bak=0;                //接收标志位(1=成功接收) 长时间保留位
  26          //bit      SEND_flag=0;               //发送标志位(1=一次发送完毕,接下去等待 成功接收了)
  27          //bit timerOver;                        //=1:定时器时间到了 标志位
  28          //uint timeCounter=0;
  29          
  30          bit timerHap;                        //=1:定时器时间到了 标志位
  31          uint counter=0;                      //定时器循环次数计数器
  32          
  33          
  34          extern BYTE bdata outputByte2;   //XBYTE[0x1000];
  35          extern bit OLT8;  //控制投币口   开 关
  36          extern bit OLT9;  //控制维修灯   亮 灭 
  37          extern bit OLTA;  //控制出卡处灯 亮 灭
  38          //extern bit OLTB;  //
  39          extern bit OLTE;  //控制fan1 亮 灭
  40          extern bit OLTF;  //控制fan2 亮 灭
  41          
  42          uchar pwm1;       //调制脉宽计数
  43          bit fan1=0;      //风扇1
  44          
  45          uchar pwm2;       //调制脉宽计数
  46          bit fan2=0;      //风扇2
  47          
  48          uchar pwm3;       //调制脉宽计数
  49          bit cardlamp=0;  //出票口灯
  50          
  51          uchar pwm4;       //调制脉宽计数
  52          bit mainlamp=0;  //维修处灯
  53          //time0
  54          #define RELOAD_HIGH 0xD8        
  55          #define RELOAD_LOW 0xF0
C51 COMPILER V7.20   MAIN                                                                  10/13/2008 13:13:43 PAGE 2   

  56          //time2
  57          #define LD_T2H 0xFF     
  58          #define LD_T2L 0x9B
  59          //FC17 1ms 
  60          //FE0C 0.5ms
  61          //FFCD 50us 
  62          //FF9B 100us
  63          /**********************************************************************
  64          ** 函数名称:    init_time2
  65          ** 功能描述:    初始化定时器2  Door
  66          ** 输 入:      无     
  67          ** 输 出:              无
  68          ** 全局变量:    无
  69          ** 调用模块:    无
  70          ***********************************************************************/
  71          void INIT_TIME2(void)
  72          {
  73   1          T2CON=0x00;   //16位自动重载定时器
  74   1          T2MOD=0x00;   //DCEN=0,定时器向上计数
  75   1          TH2=0xFF;     //
  76   1          TL2=0xFF;     //上顶点,加计数到该点了 就溢出
  77   1          RCAP2H=LD_T2H;//
  78   1          RCAP2L=LD_T2L;//下位点,向上计数的开始点
  79   1          ET2=1;        //使能定时器2中断
  80   1          EA = 1;
  81   1          TR2=1;        //开始定时
  82   1      }
  83          /**********************************************************************
  84          ** 函数名称:    init_time0
  85          ** 功能描述:    初始化定时器0  com
  86          ***********************************************************************/
  87          void INIT_TIME0(void)
  88          {
  89   1          PX0=1;              //
  90   1              PX1=1;              //外部中断01位高于定时器0的中断级别
  91   1          TMOD=TMOD|0x01;             //定时器0在模式1下工作
  92   1              TL0=RELOAD_LOW;//0x00;                  //定时器每50ms产生一次溢出
  93   1              TH0=RELOAD_HIGH;//0x4C;                 //自动重装的值
  94   1              ET0=1;                          //使能定时器0中断
  95   1              EA=1;                           //使能总中断
  96   1          TR0=1;                              //开始计时 
  97   1      }
  98          void tick_int(void) interrupt 1 //using 0 //定时器
  99          {
 100   1              TR0=0; // 停止定时器
 101   1         
 102   1              P2_0=!P2_0;      //先不喂狗
 103   1      
 104   1              if(counter > 0)
 105   1              {
 106   2                      counter--;
 107   2                      if(counter == 0) timerHap=1;
 108   2              }
 109   1      
 110   1              TH0=RELOAD_HIGH; // 设置重装值
 111   1              TL0=RELOAD_LOW;
 112   1              TR0=1; // 重新启动定时器
 113   1      }
 114          
 115          
 116          /**********************************************************************
 117          ** 函数名称:    TIME2 定时器中断益处程序--
C51 COMPILER V7.20   MAIN                                                                  10/13/2008 13:13:43 PAGE 3   

 118          ** 全局变量:    
 119          ***********************************************************************/
 120          void timer2 (void) interrupt 5
 121          {
 122   1       TR2=0;        //关定时
 123   1       P2_0=!P2_0;     //先不喂狗
 124   1      
 125   1       /*if(timeCounter > 0)
 126   1              {
 127   1                      timeCounter--;
 128   1                      if(timeCounter == 0) timerOver=1;
 129   1              }*/
 130   1      
 131   1      if(fan1)
 132   1         { 
 133   2           if(pwm1<=PWM50)//导通时间 1-8
 134   2                  {
 135   3                       OLTE = 0;
 136   3                      }//正方向  转
 137   2               else
 138   2                 { 
 139   3                   if(pwm1<PWM100) //关断时间 9-10
 140   3                     {
 141   4                          OLTE = 1;
 142   4                      }//停 
 143   3                        else
 144   3                         { pwm1=0; }
 145   3                  }
 146   2                pwm1++;
 147   2         }
 148   1        else { OLTE = 1; }  //停
 149   1      
 150   1      if(fan2)
 151   1         { 
 152   2           if(pwm2<=PWM50)//导通时间 1-8
 153   2                  {
 154   3                       OLTF = 0;
 155   3                      }//正方向  转
 156   2               else
 157   2                 { 
 158   3                   if(pwm2<PWM100) //关断时间 9-10
 159   3                     {
 160   4                          OLTF = 1;
 161   4                      }//停 
 162   3                        else
 163   3                         { pwm2=0; }
 164   3                  }
 165   2                pwm2++;
 166   2         }
 167   1        else { OLTF = 1; }  //停 
 168   1      
 169   1      /*if(mainlamp)
 170   1         { 
 171   1           if(pwm4<=PWM50)//导通时间 1-8

⌨️ 快捷键说明

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