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

📄 l8279.lst

📁 一个锅炉温度控制程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V3.20,  SN-0  L8279                                                           05/24/04  10:40:00  PAGE 1   


DOS C51 COMPILER V3.20, COMPILATION OF MODULE L8279
OBJECT MODULE PLACED IN L8279.OBJ
COMPILER INVOKED BY: C:\XINGYAN\FSI\BIN\C51.EXE L8279.C DB SB OE ROM(LARGE) SMALL OT(2) RB(0) 

stmt level    source

   1          /*
                L8279.c
                键盘和显示器   键盘和显示器 
              	
              
              
                王占成
                zcwang@mail.ustc.edu.cn
                ustcwzc@sina.com.cn
                13856067473
              */
  12          
  13          
  14          /*
              
                键盘部分
              
              */
  19          
  20          /*********************************************************/
  21          /***包含头文件***/
  22          #include <absacc.h>
  23          #include "watchdog.h"
  24          #include "L8279.h"
  25          #include "Pid.h"
  26          #include "Xdata.h"
  27          #include <reg52.h>
  28          #include <math.h>
  29          #include <string.h>
  30          
  31          
  32          idata BYTE LEDStatus;
  33          idata BYTE KeyCode;
  34          
  35          code BYTE NumInTable[10] = {
  36          	Num0,
  37          	Num1,
  38          	Num2,
  39          	Num3,
  40          	Num4,
  41          	Num5,
  42          	Num6,
  43          	Num7,
  44          	Num8,
  45          	Num9
  46          };
  47           
  48          /*********************************************************/
  49          /***函数定义***/
  50          
  51          /*********************************************************/
  52          /***键盘扫描程序***/
  53          void ScanKey()
  54          {
  55   1      	idata BYTE FIFOStatus;
C51 COMPILER V3.20,  SN-0  L8279                                                           05/24/04  10:40:00  PAGE 2   

  56   1      	FIFOStatus = CMD8279;
  57   1      	if(FIFOStatus&0x0F) {			/*FIFO RAM中有键被按下*/
  58   2      		CMD8279 = 0x40;				/*读FIFO RAM*/
  59   2      		KeyCode = DATA8279;
  60   2      		NewLEDStatus = TRUE;
  61   2      	}
  62   1      	else {
  63   2      		NewLEDStatus = FALSE;
  64   2      	}
  65   1      	KeyFunction();
  66   1      	return;
  67   1      }
  68          
  69          /*********************************************************/
  70          /***按健选择键***/
  71          void KeyFunction()
  72          {
  73   1      	if(NewLEDStatus == TRUE){
  74   2      		switch(KeyCode) {
  75   3      		case K_Sys:
  76   3      			//DispT();
  77   3      			OnSysDown();
  78   3      			break;
  79   3      		case K_Enter:
  80   3      			//DispP();
  81   3      			OnEnterDown();
  82   3      			break;
  83   3      		case K_Cancel:
  84   3      			//DispI();
  85   3      			OnCancelDown();
  86   3      			break;
  87   3      		case K_Led0:
  88   3      			//DispD();
  89   3      			OnLed0Down();
  90   3      			break;
  91   3      		case K_Led1:
  92   3      			//DispSetP();
  93   3      			OnLed1Down();
  94   3      			break;
  95   3      		case K_Led2:
  96   3      			//DispP();
  97   3      			OnLed2Down();
  98   3      			break;
  99   3      		case K_Led3:
 100   3      			//DispF();
 101   3      			OnLed3Down();
 102   3      			break;
 103   3      		case K_NULL:
 104   3      			//DispT();
 105   3      			DispT();
 106   3      			break;
 107   3      		}
 108   2      		NewLEDStatus = FALSE;
 109   2      	}
 110   1      	return;
 111   1      }
 112          
 113          /*********************************************************/
 114          /***功能选择键***/
 115          void OnSysDown()	
 116          {
 117   1      	
C51 COMPILER V3.20,  SN-0  L8279                                                           05/24/04  10:40:00  PAGE 3   

 118   1      	switch (LEDStatus) {
 119   2      	case S_NULL:			/*前面正在显示温度*/
 120   2      		DispP();				
 121   2      		break;
 122   2      	case S_P:				/*前面显示字符P*/
 123   2      		DispI();
 124   2      		break;
 125   2      	case S_I:				/*前面显示字符I*/
 126   2      		DispD();
 127   2      		break;
 128   2      	case S_D:				/*前面显示字符D*/
 129   2      		DispSetP();
 130   2      		break;
 131   2      	case S_SP:				/*前面显示字符SP*/
 132   2      		DispT();
 133   2      		break;
 134   2      	default:
 135   2      		break;
 136   2      	}
 137   1      	return;
 138   1      }
 139          
 140          /*********************************************************/
 141          /***确定键***/
 142          void OnEnterDown()					/*确定键处理函数*/
 143          {
 144   1      	switch(LEDStatus){
 145   2      	case S_NULL:                    /***==前边显示温度则显示到计时==**/
 146   2      		DispF();
 147   2      		break;
 148   2      
 149   2      	case S_P:						/*要设定P*/
 150   2      		DispPVal();					/*显示当前的P值*/
 151   2      		break;
 152   2      	case S_I:						/*要设定I*/
 153   2      		DispIVal();					/*显示当前的I值*/
 154   2      		break;
 155   2      	case S_D:						/*要设定D*/
 156   2      		DispDVal();					/*显示当前的D值*/
 157   2      		break;
 158   2      	case S_SP:						/*要设定SetPoint*/
 159   2      		DispSetPVal();				/*显示当前的SetPoint值*/
 160   2      		break;
 161   2      	case S_P_Val:			
 162   2      		LEDDataToRAM();				/*将LED显示的值存入内存*/
 163   2      		DispT();
 164   2      		break;
 165   2      	case S_I_Val:			
 166   2      		LEDDataToRAM();			
 167   2      		DispT();
 168   2      		break;
 169   2      	case S_D_Val:				
 170   2      		LEDDataToRAM();			
 171   2      		DispT();
 172   2      		break;
 173   2      	case S_SP_Val:				
 174   2      		LEDDataToRAM();			
 175   2      		DispF();
 176   2      		break;
 177   2      	case S_F:
 178   2      		DispFVal();
 179   2      		break;
C51 COMPILER V3.20,  SN-0  L8279                                                           05/24/04  10:40:00  PAGE 4   

 180   2      	case S_F_Val:
 181   2      		LEDDataToRAM();
 182   2      		DispT();
 183   2      		break;
 184   2      	default:
 185   2      		break;						/*其它情况不响应*/
 186   2      	}	
 187   1      	return;
 188   1      }
 189          
 190          
 191          /*********************************************************/
 192          /***取消键***/
 193          void OnCancelDown()					/*取消键处理函数*/
 194          {
 195   1      	DispT();						/*取消任何改动,重新显示温度*/
 196   1      	return;
 197   1      }
 198          
 199          /*********************************************************/
 200          /***0号LED键***/
 201          void OnLed3Down()					/*循环改动一个LED的显示值*/
 202          {
 203   1      	idata BYTE Num;
 204   1      	idata BYTE i;
 205   1      	idata BYTE LEDRamStatus;
 206   1      	CMD8279 = 0x60;
 207   1      	LEDRamStatus = DATA8279;
 208   1      
 209   1      	if(LEDRamStatus != 0x00){
 210   2      		if(	(LEDStatus == S_P_Val) || 
 211   2      			(LEDStatus == S_I_Val) || 
 212   2      			(LEDStatus == S_P_Val) || 
 213   2      			(LEDStatus == S_SP_Val)||
 214   2      			(LEDStatus == S_F_Val))  {
 215   3      			for(i=0;i<10;i++){
 216   4      				if(LEDRamStatus == NumInTable[i]){
 217   5      					Num = i;
 218   5      					break;
 219   5      				}
 220   4      			}
 221   3      		
 222   3      			Num++;								/*下一位数字*/
 223   3      			if((Num>=0)&&(Num<=9))
 224   3      				WriteLed(0,NumInTable[Num]);
 225   3      			else 
 226   3      				WriteLed(0,NumInTable[0]);
 227   3      		}						/*将第1个LED的显示内容更新*/
 228   2      	}
 229   1      	return;
 230   1      }
 231          
 232          /*********************************************************/
 233          /***1号LED键***/
 234          void OnLed2Down()						/*循环改动一个LED的显示值*/
 235          {
 236   1      	idata BYTE Num;
 237   1      	idata BYTE i;
 238   1      	idata BYTE LEDRamStatus;
 239   1      	CMD8279 = 0x61;
 240   1      	LEDRamStatus = DATA8279;
 241   1      

⌨️ 快捷键说明

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