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

📄 keyproc.lst

📁 一款电力行业使用的温湿度控制器源代码 湿度传感器采用HF3223 温度采用DS18B20 单片机采用mega8 编程采用winavr2007
💻 LST
📖 第 1 页 / 共 4 页
字号:
   1               		.file	"keyproc.c"
   2               		.arch atmega8
   3               	__SREG__ = 0x3f
   4               	__SP_H__ = 0x3e
   5               	__SP_L__ = 0x3d
   6               	__tmp_reg__ = 0
   7               	__zero_reg__ = 1
   8               		.global __do_copy_data
   9               		.global __do_clear_bss
  11               		.text
  12               	.Ltext0:
 124               	.global	SystemStatusName
 125               		.section	.progmem.data,"a",@progbits
 128               	SystemStatusName:
 129 0000 00        		.byte	0
 130 0001 0B        		.byte	11
 131 0002 0C        		.byte	12
 132 0003 0D        		.byte	13
 133 0004 0E        		.byte	14
 134 0005 15        		.byte	21
 135 0006 16        		.byte	22
 136 0007 1F        		.byte	31
 137 0008 20        		.byte	32
 138 0009 1F        		.byte	31
 139 000a 20        		.byte	32
 140 000b 21        		.byte	33
 141               		.lcomm fMenuFlash,1
 144               	LongPress_exe:
 145 000c 0000      		.word	pm(key_do_nothing)
 146 000e 0000      		.word	pm(key_add_long_press)
 147 0010 0000      		.word	pm(key_dec_long_press)
 148 0012 0000      		.word	pm(key_set_long_press)
 151               	LongPreskey_addst_exe:
 152 0014 0000      		.word	pm(key_do_nothing)
 153 0016 0000      		.word	pm(key_do_nothing)
 154 0018 0000      		.word	pm(key_do_nothing)
 155 001a 0000      		.word	pm(key_set_long_press_first)
 158               	Click_exe:
 159 001c 0000      		.word	pm(key_ch_click)
 160 001e 0000      		.word	pm(key_add_click)
 161 0020 0000      		.word	pm(key_dec_click)
 162 0022 0000      		.word	pm(key_set_click)
 163               		.text
 165               	.global	KeyProcess
 167               	KeyProcess:
   1:task/keyproc.c **** 
   2:task/keyproc.c **** 
   3:task/keyproc.c **** #define _KEY_MENU_TSK_C 1      
   4:task/keyproc.c **** 
   5:task/keyproc.c **** #include "inc/config.h"
   6:task/keyproc.c **** 
   7:task/keyproc.c **** extern u08 SystemStatus;     //system state ,global variables
   8:task/keyproc.c **** 
   9:task/keyproc.c **** /***************************************************************/
  10:task/keyproc.c **** static BOOL fMenuFlash=FALSE;//indicate the editting state
  11:task/keyproc.c **** 
  12:task/keyproc.c **** 
  13:task/keyproc.c **** 
  14:task/keyproc.c ****      static  void ( * Click_exe[] )(void)  PROGMEM  =
  15:task/keyproc.c **** 
  16:task/keyproc.c **** {
  17:task/keyproc.c ****     key_ch_click,
  18:task/keyproc.c ****     key_add_click,
  19:task/keyproc.c ****     key_dec_click,
  20:task/keyproc.c ****     key_set_click
  21:task/keyproc.c ****  };
  22:task/keyproc.c **** 
  23:task/keyproc.c ****         static   prog_uint16_t LongPreskey_addst_exe[4]  =
  24:task/keyproc.c **** {
  25:task/keyproc.c ****     (prog_uint16_t)key_do_nothing,
  26:task/keyproc.c ****     (prog_uint16_t)key_do_nothing,
  27:task/keyproc.c ****     (prog_uint16_t)key_do_nothing,
  28:task/keyproc.c ****     (prog_uint16_t)key_set_long_press_first
  29:task/keyproc.c **** };
  30:task/keyproc.c **** 
  31:task/keyproc.c ****         static   prog_uint16_t LongPress_exe[4]  =
  32:task/keyproc.c **** {
  33:task/keyproc.c ****     (prog_uint16_t)key_do_nothing,
  34:task/keyproc.c ****     (prog_uint16_t)key_add_long_press,
  35:task/keyproc.c ****     (prog_uint16_t)key_dec_long_press,
  36:task/keyproc.c ****     (prog_uint16_t)key_set_long_press
  37:task/keyproc.c **** };
  38:task/keyproc.c **** 
  39:task/keyproc.c **** 
  40:task/keyproc.c **** void  KeyProcess(void)
  41:task/keyproc.c **** {    
 169               	.LM1:
 170               	/* prologue: frame size=0 */
 171               	/* prologue end (size=0) */
  42:task/keyproc.c ****          if     ( (key.type==PRESS_ONCE) && key.val<=4 )// ′óóú4?aòì3£?μ
 173               	.LM2:
 174 0000 8091 0000 		lds r24,key+1
 175 0004 8130      		cpi r24,lo8(1)
 176 0006 61F4      		brne .L2
 178               	.LM3:
 179 0008 E091 0000 		lds r30,key
 180 000c E530      		cpi r30,lo8(5)
 181 000e 28F5      		brsh .L3
 182               	.LBB2:
  43:task/keyproc.c ****     {
  44:task/keyproc.c ****         (*(void (*)()) pgm_read_word(Click_exe+key.val-1))();
 184               	.LM4:
 185 0010 FF27      		clr r31
 186 0012 EE0F      		add r30,r30
 187 0014 FF1F      		adc r31,r31
 188 0016 E050      		subi r30,lo8(-(Click_exe-2))
 189 0018 F040      		sbci r31,hi8(-(Click_exe-2))
 190               	/* #APP */
 191 001a 8591      		lpm r24, Z+
 192 001c 9491      		lpm r25, Z
 193               		
 194               	/* #NOAPP */
 195 001e 1BC0      		rjmp .L7
 196               	.L2:
 197               	.LBE2:
  45:task/keyproc.c ****     }
  46:task/keyproc.c **** 
  47:task/keyproc.c ****      else if( (key.type==PRESS_LONG_1ST) && key.val<=4 )// ′óóú4?aòì3£?μ
 199               	.LM5:
 200 0020 8230      		cpi r24,lo8(2)
 201 0022 61F4      		brne .L4
 202 0024 E091 0000 		lds r30,key
 203 0028 E530      		cpi r30,lo8(5)
 204 002a B8F4      		brsh .L3
 205               	.LBB3:
  48:task/keyproc.c ****     {
  49:task/keyproc.c ****         (* (void (*)())pgm_read_word(LongPreskey_addst_exe+key.val-1))();
 207               	.LM6:
 208 002c FF27      		clr r31
 209 002e EE0F      		add r30,r30
 210 0030 FF1F      		adc r31,r31
 211 0032 E050      		subi r30,lo8(-(LongPreskey_addst_exe-2))
 212 0034 F040      		sbci r31,hi8(-(LongPreskey_addst_exe-2))
 213               	/* #APP */
 214 0036 8591      		lpm r24, Z+
 215 0038 9491      		lpm r25, Z
 216               		
 217               	/* #NOAPP */
 218 003a 0DC0      		rjmp .L7
 219               	.L4:
 220               	.LBE3:
  50:task/keyproc.c ****     }
  51:task/keyproc.c **** 
  52:task/keyproc.c ****      else if( (key.type==PRESS_LONG) && key.val<=4 )    // ′óóú4?aòì3£?μ
 222               	.LM7:
 223 003c 8330      		cpi r24,lo8(3)
 224 003e 69F4      		brne .L3
 225 0040 E091 0000 		lds r30,key
 226 0044 E530      		cpi r30,lo8(5)
 227 0046 48F4      		brsh .L3
 228               	.LBB4:
  53:task/keyproc.c ****     {
  54:task/keyproc.c ****         (* (void (*)())pgm_read_word(LongPress_exe+key.val-1))();
 230               	.LM8:
 231 0048 FF27      		clr r31
 232 004a EE0F      		add r30,r30
 233 004c FF1F      		adc r31,r31
 234 004e E050      		subi r30,lo8(-(LongPress_exe-2))
 235 0050 F040      		sbci r31,hi8(-(LongPress_exe-2))
 236               	/* #APP */
 237 0052 8591      		lpm r24, Z+
 238 0054 9491      		lpm r25, Z
 239               		
 240               	/* #NOAPP */
 241               	.L7:
 242               	.LBE4:
 243 0056 FC01      		movw r30,r24
 244 0058 0995      		icall
 245               	.L3:
  55:task/keyproc.c ****     }
  56:task/keyproc.c ****     key.val=0;
 247               	.LM9:
 248 005a 1092 0000 		sts key,__zero_reg__
  57:task/keyproc.c ****     key.type=NON;
 250               	.LM10:
 251 005e 1092 0000 		sts key+1,__zero_reg__
  58:task/keyproc.c **** 	key.fkeydone=YES;       
 253               	.LM11:
 254 0062 81E0      		ldi r24,lo8(1)
 255 0064 8093 0000 		sts key+2,r24
 256               	/* epilogue: frame size=0 */
 257 0068 0895      		ret
 258               	/* epilogue end (size=1) */
 259               	/* function KeyProcess size 65 (64) */
 273               	.Lscope0:
 275               	.global	key_ch_click
 277               	key_ch_click:
  59:task/keyproc.c **** }
  60:task/keyproc.c **** /****************************************************/
  61:task/keyproc.c **** /*--based on the KeyValue ,implement different event*/
  62:task/keyproc.c **** /*--only support the single click event temperally. */
  63:task/keyproc.c **** /****************************************************/
  64:task/keyproc.c **** 
  65:task/keyproc.c **** extern BOOL fIsSampling;     
  66:task/keyproc.c **** 
  67:task/keyproc.c **** //////////////////////////
  68:task/keyproc.c ****  void key_ch_click(void)
  69:task/keyproc.c **** {
 279               	.LM12:
 280               	/* prologue: frame size=0 */
 281               	/* prologue end (size=0) */
 282               	/* epilogue: frame size=0 */
 283 006a 0895      		ret
 284               	/* epilogue end (size=1) */
 285               	/* function key_ch_click size 1 (0) */
 287               	.Lscope1:
 290               	.global	MenuIndexDisp
 292               	MenuIndexDisp:
  70:task/keyproc.c **** 
  71:task/keyproc.c **** 
  72:task/keyproc.c **** }
  73:task/keyproc.c ****  void key_add_click(void)
  74:task/keyproc.c **** {   
  75:task/keyproc.c ****     if (SystemStatus!=RUN )
  76:task/keyproc.c ****     {
  77:task/keyproc.c **** 		RstSoftTimer(_60S);      
  78:task/keyproc.c **** 		MenuValDeal  (SystemStatus,true,SYS_ch);//true :add   false:decrease 
  79:task/keyproc.c **** 		MenuIndexDisp( SystemStatus );
  80:task/keyproc.c **** 		MenuValDisp  (SystemStatus,SYS_ch) ;    //
  81:task/keyproc.c ****     }
  82:task/keyproc.c **** }
  83:task/keyproc.c **** 
  84:task/keyproc.c ****  void key_dec_click(void)
  85:task/keyproc.c **** {
  86:task/keyproc.c ****     if  (SystemStatus!=RUN )
  87:task/keyproc.c ****     {
  88:task/keyproc.c ****         RstSoftTimer(3);      
  89:task/keyproc.c ****         MenuValDeal  (SystemStatus,false,SYS_ch);//true :add   false:decrease 
  90:task/keyproc.c ****         MenuIndexDisp( SystemStatus );
  91:task/keyproc.c ****         MenuValDisp  (SystemStatus,SYS_ch) ;    //
  92:task/keyproc.c ****     }   
  93:task/keyproc.c **** }
  94:task/keyproc.c ****  void key_set_click(void)	  	
  95:task/keyproc.c **** 
  96:task/keyproc.c **** {
  97:task/keyproc.c ****      if(SystemStatus!=RUN)
  98:task/keyproc.c ****      {  
  99:task/keyproc.c ****          RstSoftTimer(_60S);
 100:task/keyproc.c **** 
 101:task/keyproc.c **** 	     SystemStatus++;		
 102:task/keyproc.c **** 	
 103:task/keyproc.c ****     	if( SystemStatus>=EDIT14 )  
 104:task/keyproc.c **** 		{
 105:task/keyproc.c **** 			SystemStatus=EDIT11; 
 106:task/keyproc.c **** 		}
 107:task/keyproc.c **** 
 108:task/keyproc.c ****         MenuIndexDisp( SystemStatus );
 109:task/keyproc.c **** 
 110:task/keyproc.c ****         MenuValDisp  ( SystemStatus,SYS_ch ) ;  
 111:task/keyproc.c ****      }
 112:task/keyproc.c **** 	 else//as a manual key
 113:task/keyproc.c **** 	 {
 114:task/keyproc.c **** 		if( SystemMode== AUTO_TH)
 115:task/keyproc.c **** 	    {
 116:task/keyproc.c **** 		    SystemMode = MANU_TH;
 117:task/keyproc.c **** 			FlashDigOn(1);	
 118:task/keyproc.c **** 		    FlashDigOn(2);			
 119:task/keyproc.c **** 			FlashDigOn(3);			
 120:task/keyproc.c **** 			FlashDigOn(4);	
 121:task/keyproc.c **** 		    FlashDigOn(5);			
 122:task/keyproc.c **** 			FlashDigOn(6);
 123:task/keyproc.c ****             fan (ON);
 124:task/keyproc.c **** 		    heat(ON);
 125:task/keyproc.c **** 			DisplayHumidityAlarm(ON);
 126:task/keyproc.c **** 			DisplayTemperatureAlarm(ON);			
 127:task/keyproc.c **** 			
 128:task/keyproc.c **** 		}	
 129:task/keyproc.c ****         else
 130:task/keyproc.c ****        {
 131:task/keyproc.c **** 	   		SystemMode = AUTO_TH;
 132:task/keyproc.c **** 	        FlashDigRst();
 133:task/keyproc.c **** 						///////
 134:task/keyproc.c **** 			if(AlrmStatusT==NO_ALARM)		 
 135:task/keyproc.c **** 			{
 136:task/keyproc.c **** 				DisplayTemperatureAlarm(OFF);
 137:task/keyproc.c **** 			}
 138:task/keyproc.c **** 			else
 139:task/keyproc.c **** 			{
 140:task/keyproc.c **** 				DisplayTemperatureAlarm(ON);
 141:task/keyproc.c **** 			}
 142:task/keyproc.c **** 			///////
 143:task/keyproc.c **** 			if(AlrmStatusH!=NO_ALARM)		 
 144:task/keyproc.c **** 			{
 145:task/keyproc.c **** 				DisplayHumidityAlarm(ON);
 146:task/keyproc.c **** 			}
 147:task/keyproc.c **** 			else
 148:task/keyproc.c **** 			{
 149:task/keyproc.c **** 				DisplayHumidityAlarm(OFF);
 150:task/keyproc.c **** 			}
 151:task/keyproc.c **** 	   
 152:task/keyproc.c **** 	   } 
 153:task/keyproc.c **** 	 }
 154:task/keyproc.c **** }
 155:task/keyproc.c **** 
 156:task/keyproc.c **** 
 157:task/keyproc.c **** //////////////////////////////
 158:task/keyproc.c **** void key_do_nothing(void)
 159:task/keyproc.c **** {
 160:task/keyproc.c **** 
 161:task/keyproc.c **** 
 162:task/keyproc.c **** }
 163:task/keyproc.c **** 
 164:task/keyproc.c ****  void key_set_long_press_first(void)
 165:task/keyproc.c **** {    
 166:task/keyproc.c ****      RstSoftTimer(_60S);
 167:task/keyproc.c **** 	 FlashDigRst();
 168:task/keyproc.c ****      
 169:task/keyproc.c ****        if(SystemStatus==RUN) 
 170:task/keyproc.c ****     {
 171:task/keyproc.c ****        SystemStatus=EDIT11;
 172:task/keyproc.c **** 
 173:task/keyproc.c ****        MenuIndexDisp(  SystemStatus);
 174:task/keyproc.c **** 
 175:task/keyproc.c ****        MenuValDisp  ( SystemStatus,SYS_ch);
 176:task/keyproc.c ****      }											 
 177:task/keyproc.c ****  
 178:task/keyproc.c ****     else                         
 179:task/keyproc.c ****     {
 180:task/keyproc.c ****        SynE2promFromRam();    
 181:task/keyproc.c **** 
 182:task/keyproc.c **** 	   RelayRst		  ();    
 183:task/keyproc.c **** 
 184:task/keyproc.c ****        FlashDigRst();	     
 185:task/keyproc.c **** 
 186:task/keyproc.c ****         RmvDot(5);
 187:task/keyproc.c **** 	   SystemStatus=RUN;	  
 188:task/keyproc.c **** 
 189:task/keyproc.c ****        fMenuFlash = FALSE;     
 190:task/keyproc.c **** 
 191:task/keyproc.c ****     }
 192:task/keyproc.c **** 
 193:task/keyproc.c **** 
 194:task/keyproc.c **** }
 195:task/keyproc.c **** 
 196:task/keyproc.c **** 
 197:task/keyproc.c **** 
 198:task/keyproc.c ****  void key_dec_long_press(void)
 199:task/keyproc.c **** {
 200:task/keyproc.c ****    	u08  i;
 201:task/keyproc.c **** 	for( i = 0;i < 10;i++ )
 202:task/keyproc.c **** 	{
 203:task/keyproc.c **** 	     key_dec_click();

⌨️ 快捷键说明

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