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

📄 main.lst

📁 本程序是一个人机接口程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   MAIN                                                                  06/30/2000 09:45:23 PAGE 1   


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

stmt level    source

   1          #include "T6963_Driver.c"
   2          #include "logo.h"
   3          #include "tlv5618.c"
   4          #include "common.h"
   5          #include "ds1302.c"
   6          #include "tlv2544.c"
   7          #include "ch452w2.c"
   8          #include "18b20.c"
   9          #include "iap.c"
  10          #include "fault.c"
  11          #include "modbus.c"
  12          
  13          /*
  14          void show_days(void)
  15          {
  16                  ShowChar(7,10,Days_Passed/10000+0x30);
  17                  ShowChar(7,11,Days_Passed%10000/1000+0x30);
  18                  ShowChar(7,12,Days_Passed%1000/100+0x30);
  19                  ShowChar(7,13,Days_Passed%100/10+0x30);
  20                  ShowChar(7,14,Days_Passed%10+0x30);
  21          }
  22          */
  23          
  24          void delay(unsigned int i)
  25          {
  26   1              while(i--);
  27   1      }
  28          
  29          //键值转换函数
  30          //根据键盘按键排列不同在此修改case后的键值
  31          unsigned char Key_value_conver(unsigned char key1)
  32          {
  33   1      //      ShowChar(0,0,key1/100+0x30);
  34   1      //      ShowChar(0,1,key1%100/10+0x30);
  35   1      //      ShowChar(0,2,key1%10+0x30);
  36   1      
  37   1              switch(key1)
  38   1              {
  39   2                      case 0x75: return 1;
  40   2                      case 0x7D: return 2;
  41   2                      case 0x6D: return 3;
  42   2                      case 0x65: return 4;
  43   2                      case 0x5D: return 5;
  44   2                      case 0x55: return 6;
  45   2                      case 0x4D: return 7;
  46   2                      case 0x45: return 8;
  47   2                      case 0x6E: return 9;
  48   2                      case 0x66: return 0;
  49   2                      case 0x46: return 10; //向左键
  50   2                      case 0x67: return 11; //确认键
  51   2                      case 0x57: return 12; //启动
  52   2                      case 0x4F: return 13; //停止
  53   2                      case 0x56: return 14; //上
  54   2                      case 0x4E: return 15; //下
  55   2                      case 0x5E: return 16; //ESC
C51 COMPILER V7.06   MAIN                                                                  06/30/2000 09:45:23 PAGE 2   

  56   2                      case 0x6F: return 17; //向右键
  57   2                      case 0x5F: return 18; //设置
  58   2                      case 0x47: return 19; //S15
  59   2                      default: return 100;
  60   2              }                                                         
  61   1      }
  62          
  63          //按键中断
  64          //产生按键声音和读取按键码
  65          void Key_interrupt(void) interrupt 0
  66          {                  
  67   1              unsigned char i,j;      
  68   1              
  69   1      //      EX0 = 0;
  70   1              BEEP = 0;
  71   1              for(i = 0;i < 200;i++) for(j = 0;j < 200;j++);
  72   1              if(!sound) BEEP = 1;
  73   1              key = CH452_Read();
  74   1      //      send_char(key);
  75   1              key = Key_value_conver(key);
  76   1      //      CH452_Write(CH452_RESET);
  77   1      //      EX0 = 1;
  78   1      }
  79          
  80          //设置继电器状态
  81          //id:1-16对应K1-K16
  82          //staus:状态,1:吸合,2:释放
  83          void Set_Relay(unsigned char id,unsigned char staus) 
  84          {
  85   1              switch(id)
  86   1              {
  87   2                      case 1:  if(staus) Relay_1|=0x01; else Relay_1&=0xfe; break; //稳流/稳压继电器
  88   2                      case 2:  if(staus) Relay_1|=0x02; else Relay_1&=0xfd; break; //封脉继电器                       
  89   2                      case 3:  if(staus) Relay_1|=0x04; else Relay_1&=0xfb; break; //快熔故障报警继电器
  90   2                      case 4:  if(staus) Relay_1|=0x08; else Relay_1&=0xf7; break; //水温高报警继电器
  91   2                      case 5:  if(staus) Relay_1|=0x10; else Relay_1&=0xef; break; //母排温度高报警继电器
  92   2                      case 6:  if(staus) Relay_1|=0x20; else Relay_1&=0xdf; break; //过流故障报警继电器
  93   2                      case 7:  if(staus) Relay_1|=0x40; else Relay_1&=0xbf; break; //过压故障报警继电器
  94   2                      case 8:  if(staus) Relay_1|=0x80; else Relay_1&=0x7f; break; //冷却水水压低报警继电器
  95   2                      case 9:  if(staus) Relay_2|=0x01; else Relay_2&=0xfe; break; //网电电压低报警继电器
  96   2                      case 10: if(staus) Relay_2|=0x02; else Relay_2&=0xfd; break; //网电电压高报警继电器
  97   2                      case 11: if(staus) Relay_2|=0x04; else Relay_2&=0xfb; break; //总报警继电器
  98   2                      case 12: if(staus) Relay_2|=0x08; else Relay_2&=0xf7; break; //跳闸继电器
  99   2                      case 13: if(staus) Relay_2|=0x10; else Relay_2&=0xef; break; //启动/停止继电器
 100   2                      case 14: if(staus) Relay_2|=0x20; else Relay_2&=0xdf; break; //稳流状态指示继电器
 101   2                      case 15: if(staus) Relay_2|=0x40; else Relay_2&=0xbf; break; //稳压状态指示继电器
 102   2                      case 16: if(staus) Relay_2|=0x80; else Relay_2&=0x7f; break; //闭环继电器
 103   2                      default: break;
 104   2              }
 105   1              P4_1 = 0;         //选通HC138(3/8译码器),将数据输入到指定的锁存器
 106   1              P4_2 = 0;
 107   1              P4_3 = 0;
 108   1          P0 = Relay_1;
 109   1              P4_1 = 1;
 110   1              P4_2 = 0;
 111   1              P4_3 = 0;       
 112   1              P0 = Relay_2;
 113   1              P4_1 = 1;               
 114   1              P4_2 = 1;
 115   1              P4_3 = 1;
 116   1      }
 117          
C51 COMPILER V7.06   MAIN                                                                  06/30/2000 09:45:23 PAGE 3   

 118          //显示时间
 119          void Show_Realtime()
 120          {
 121   1              ShowChar(7,2,ucCurtime[6]/16+0x30);     //年
 122   1              ShowChar(7,3,ucCurtime[6]%16+0x30);
 123   1              ShowChar(7,6,ucCurtime[4]/16+0x30);         //月
 124   1              ShowChar(7,7,ucCurtime[4]%16+0x30);
 125   1              ShowChar(7,10,ucCurtime[3]/16+0x30);    //日
 126   1              ShowChar(7,11,ucCurtime[3]%16+0x30);
 127   1              ShowChar(7,16,ucCurtime[2]/16+0x30);    //时
 128   1              ShowChar(7,17,ucCurtime[2]%16+0x30);
 129   1              ShowChar(7,19,ucCurtime[1]/16+0x30);    //分
 130   1              ShowChar(7,20,ucCurtime[1]%16+0x30);
 131   1              ShowChar(7,22,ucCurtime[0]/16+0x30);    //秒
 132   1              ShowChar(7,23,ucCurtime[0]%16+0x30);
 133   1      }
 134          
 135          void Show_Alarm_prompt(void)
 136          {
 137   1              unsigned char i;
 138   1              unsigned char code Alarm_message[19][21]={
 139   1                      {"正常                "}, //0
 140   1                      {"快熔报警,封脉       "}, //1
 141   1                      {"水温高报警, 分后封脉"}, //2
 142   1                      {"正排温度高, 分后封脉"}, //3
 143   1                      {"负排温度高, 分后封脉"}, //4
 144   1                      {"水温高报警, 分后封脉"}, //5
 145   1                      {"正排温度高, 分后封脉"}, //6
 146   1                      {"负排温度高, 分后封脉"}, //7
 147   1                      {"变压器温高, 分后封脉"}, //8
 148   1                      {"缺相故障,封脉       "}, //9
 149   1                      {"水压低报警,封脉     "}, //10
 150   1                      {"过流报警,封脉       "}, //11
 151   1                      {"过压报警,封脉       "}, //12
 152   1                      {"网电压高报警,封脉   "}, //13
 153   1                      {"网电压低报警,封脉   "}, //14
 154   1                      {"水温高报警,封脉     "}, //15
 155   1                      {"正排温度高,封脉     "}, //16
 156   1                      {"负排温度高,封脉     "}, //17
 157   1                      {"变压器温高,封脉     "}, //18          
 158   1              };
 159   1      
 160   1              if(Alarm==Alarm_old) return;   //防止反复刷新显示
 161   1              if(Alarm_old < 19 && Alarm_old > 14 && Alarm < 9 && Alarm > 1) return; //高温封脉后不再对高温进行处理
 162   1              if(Alarm_old!=0xff)  Add_Fault_List();
 163   1              Alarm_old = Alarm;
 164   1      
 165   1              if(Alarm==0) High_temperatuer_Off_Delay = High_temperatuer_Off_Delay_Set;
 166   1              
 167   1              for(i = 10;i < 30;i++) ShowChar(6,i,' ');
 168   1              ShowLine(6,10,Alarm_message[Alarm]);      
 169   1              if(Alarm > 1 && Alarm < 9) ShowChar(6,21,High_temperatuer_Off_Delay+0x30);              
 170   1              if(Alarm) 
 171   1              {
 172   2                      Set_Relay(11,1);         //所有报警均启动总报警继电器
 173   2                      BEEP = 0;   //蜂鸣器
 174   2                      sound=1;
 175   2              }
 176   1              if(Alarm==1     || Alarm>8) 
 177   1              {
 178   2                      Set_Relay(2,1); //封脉继电器动作
 179   2                      Set_Relay(13,0); //启动停止继电器释放
C51 COMPILER V7.06   MAIN                                                                  06/30/2000 09:45:23 PAGE 4   

 180   2                      system_staus=0;
 181   2                      ShowLine(0,12,"停止");
 182   2                      Set_DAC(1,0); //0输出
 183   2                      Set_Relay(12,1); //跳闸继电器动作
 184   2              }
 185   1              switch(Alarm)
 186   1              {
 187   2                      case 1:  Set_Relay(3,1);  break;         //快熔报警
 188   2                      case 2:  Set_Relay(4,1);  break;         //水温高
 189   2                      case 5:  Set_Relay(4,1);  break;         //水温高
 190   2                      case 3:  Set_Relay(5,1);  break;         //排温高
 191   2                      case 4:  Set_Relay(5,1);  break;         //排温高
 192   2                      case 6:  Set_Relay(5,1);  break;         //排温高               
 193   2                      case 7:  Set_Relay(5,1);  break;         //排温高
 194   2                      case 10: Set_Relay(8,1);  break;         //水压低
 195   2                      case 11: Set_Relay(6,1);  break;         //过流
 196   2                      case 12: Set_Relay(7,1);  break;         //过压
 197   2                      case 13: Set_Relay(10,1); break;         //网电压高
 198   2                      case 14: Set_Relay(9,1);  break;         //网电压低
 199   2              }
 200   1      }
 201          
 202          //显示ADC数值
 203          void Show_Current_ADC(void)
 204          {
 205   1              unsigned long d;
 206   1              unsigned char i;
 207   1              
 208   1              ReadAD(0);//读0通道
 209   1      
 210   1              ADC[0] = ReadAD(2);
 211   1              ADC[1] = ReadAD(4);
 212   1              ADC[2] = ReadAD(6);
 213   1              ADC[3] = ReadAD(0);
 214   1      
 215   1              d = ADC[0];                                       //显示当前电流值
 216   1              d*=Current_Measuring_Range;
 217   1              d*=100;
 218   1              d = d/ADC0_coefficients;
 219   1              if(d > Current_Upper_Bound)    //过流报警

⌨️ 快捷键说明

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