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

📄 key.lst

📁 一款电力行业使用的温湿度控制器源代码 湿度传感器采用HF3223 温度采用DS18B20 单片机采用mega8 编程采用winavr2007
💻 LST
📖 第 1 页 / 共 2 页
字号:
  70:drive/key.c   ****                             {
  71:drive/key.c   ****                                 key_status  =2;             //keep  state 2, wait for bounce
 291               	.LM22:
 292 00ba 82E0      		ldi r24,lo8(2)
 293 00bc 8093 0000 		sts key_status.3,r24
 294               	.L37:
  72:drive/key.c   ****                                 key_val_pre =key_val_now;   //fresh the key value!
 296               	.LM23:
 297 00c0 2093 0000 		sts key_val_pre.0,r18
 298 00c4 66C0      		rjmp .L8
 299               	.L20:
  73:drive/key.c   ****                             }
  74:drive/key.c   ****                             else                            // >200, judged as long button
  75:drive/key.c   ****                             {
  76:drive/key.c   ****                                 key_down_cnt=0;
 301               	.LM24:
 302 00c6 1092 0000 		sts (key_down_cnt.2)+1,__zero_reg__
 303 00ca 1092 0000 		sts key_down_cnt.2,__zero_reg__
  77:drive/key.c   ****                                 key.val     =   key_val_pre;//send key val
 305               	.LM25:
 306 00ce 2093 0000 		sts key,r18
  78:drive/key.c   ****                                 key.type    =   PRESS_LONG_1ST; //key type is long first
 308               	.LM26:
 309 00d2 82E0      		ldi r24,lo8(2)
 310 00d4 8093 0000 		sts key+1,r24
  79:drive/key.c   ****                                 key.fkeydone=   NO;         //key has not been processed!
 312               	.LM27:
 313 00d8 1092 0000 		sts key+2,__zero_reg__
  80:drive/key.c   ****                                 key_status  =   3 ;           //reset the state counter! 
 315               	.LM28:
 316 00dc 83E0      		ldi r24,lo8(3)
 317 00de 22C0      		rjmp .L35
 318               	.L19:
  81:drive/key.c   ****                              }
  82:drive/key.c   ****                         }
  83:drive/key.c   ****                         else                                //maybe key up,send message to keyproce
  84:drive/key.c   ****                         {
  85:drive/key.c   ****                                 key.val     =   key_val_pre;//send key val
 320               	.LM29:
 321 00e0 8093 0000 		sts key,r24
  86:drive/key.c   ****                                 key.type    =   PRESS_ONCE; //key type is short
 323               	.LM30:
 324 00e4 C093 0000 		sts key+1,r28
 325 00e8 28C0      		rjmp .L34
 326               	.L23:
  87:drive/key.c   ****                                 key.fkeydone=   NO;         //key has not been processed!
  88:drive/key.c   ****                                 key_status  =   0  ;           //reset the state counter!
  89:drive/key.c   ****                                 key_val_pre = key_val_now=0;
  90:drive/key.c   ****                         }
  91:drive/key.c   ****                         break;
  92:drive/key.c   **** //------------------------------------------------------------------------------------------------
  93:drive/key.c   ****                 //button was long pressed
  94:drive/key.c   **** 		        case 3: if(     key_val_now == key_val_pre ) //key still down
 328               	.LM31:
 329 00ea 8091 0000 		lds r24,key_val_pre.0
 330 00ee 2817      		cp r18,r24
 331 00f0 E1F4      		brne .L24
  95:drive/key.c   ****                         {
  96:drive/key.c   ****                                 key_down_cnt++;
 333               	.LM32:
 334 00f2 8091 0000 		lds r24,key_down_cnt.2
 335 00f6 9091 0000 		lds r25,(key_down_cnt.2)+1
 336 00fa 0196      		adiw r24,1
 337 00fc 9093 0000 		sts (key_down_cnt.2)+1,r25
 338 0100 8093 0000 		sts key_down_cnt.2,r24
  97:drive/key.c   ****                            if ( key_down_cnt > KEYLONGFREQUENCY)  //controll the long press frequen
 340               	.LM33:
 341 0104 0B97      		sbiw r24,11
 342 0106 08F4      		brsh .+2
 343 0108 44C0      		rjmp .L8
  98:drive/key.c   ****                               {
  99:drive/key.c   ****                                 key_down_cnt=1;             //reset for new long press loop
 345               	.LM34:
 346 010a 81E0      		ldi r24,lo8(1)
 347 010c 90E0      		ldi r25,hi8(1)
 348 010e 9093 0000 		sts (key_down_cnt.2)+1,r25
 349 0112 8093 0000 		sts key_down_cnt.2,r24
 100:drive/key.c   ****                                 key.val     =   key_val_pre;//send key val
 351               	.LM35:
 352 0116 2093 0000 		sts key,r18
 101:drive/key.c   ****                                 key.type    =   PRESS_LONG; //key type is long
 354               	.LM36:
 355 011a 83E0      		ldi r24,lo8(3)
 356 011c 8093 0000 		sts key+1,r24
 102:drive/key.c   ****                                 key.fkeydone=   NO;         //key has not been processed!
 358               	.LM37:
 359 0120 1092 0000 		sts key+2,__zero_reg__
 360               	.L35:
 103:drive/key.c   ****                                 key_status  =   3 ;         //keep the state counter!
 362               	.LM38:
 363 0124 8093 0000 		sts key_status.3,r24
 364 0128 34C0      		rjmp .L8
 365               	.L24:
 104:drive/key.c   ****                               }
 105:drive/key.c   ****                         }
 106:drive/key.c   ****                         else                                //key up and long press end
 107:drive/key.c   ****                         {
 108:drive/key.c   ****                                 key_down_cnt=  0;           //reset for new key down
 367               	.LM39:
 368 012a 1092 0000 		sts (key_down_cnt.2)+1,__zero_reg__
 369 012e 1092 0000 		sts key_down_cnt.2,__zero_reg__
 109:drive/key.c   ****                                 key.val     =  0;           //send  NO key
 371               	.LM40:
 372 0132 1092 0000 		sts key,__zero_reg__
 110:drive/key.c   ****                                 key.type    =  NON;         //key type is NON
 374               	.LM41:
 375 0136 1092 0000 		sts key+1,__zero_reg__
 376               	.L34:
 111:drive/key.c   ****                                 key.fkeydone=  NO;          //key has not been processed!
 378               	.LM42:
 379 013a 1092 0000 		sts key+2,__zero_reg__
 112:drive/key.c   ****                                 key_status  =   0 ;         //reset the state counter!
 381               	.LM43:
 382 013e 1092 0000 		sts key_status.3,__zero_reg__
 113:drive/key.c   ****                                 key_val_pre = key_val_now=0;
 384               	.LM44:
 385 0142 1092 0000 		sts key_val_now.1,__zero_reg__
 386 0146 1092 0000 		sts key_val_pre.0,__zero_reg__
 114:drive/key.c   ****                         }	 
 115:drive/key.c   ****                         break;
 388               	.LM45:
 389 014a 23C0      		rjmp .L8
 390               	.L12:
 116:drive/key.c   **** 
 117:drive/key.c   **** 		        default:break;
 118:drive/key.c   **** 	        }
 119:drive/key.c   ****      }    //end if( key_val_now )   有键按下
 120:drive/key.c   **** 
 121:drive/key.c   ****      else //无任何键按下.或者所有按键已经弹起
 122:drive/key.c   ****      {
 123:drive/key.c   ****             switch (key_status)
 392               	.LM46:
 393 014c 832F      		mov r24,r19
 394 014e 9927      		clr r25
 395 0150 8230      		cpi r24,2
 396 0152 9105      		cpc r25,__zero_reg__
 397 0154 19F0      		breq .L31
 398 0156 0397      		sbiw r24,3
 399 0158 81F0      		breq .L32
 400 015a 1BC0      		rjmp .L8
 401               	.L31:
 124:drive/key.c   ****             {
 125:drive/key.c   ****                     case 2:     
 126:drive/key.c   ****                             {
 127:drive/key.c   ****                                 key.val     =   key_val_pre;//send key val
 403               	.LM47:
 404 015c 8091 0000 		lds r24,key_val_pre.0
 405 0160 8093 0000 		sts key,r24
 128:drive/key.c   ****                                 key.type    =   PRESS_ONCE; //key type is short
 407               	.LM48:
 408 0164 C093 0000 		sts key+1,r28
 129:drive/key.c   ****                                 key.fkeydone=   NO;         //key has not been processed!
 410               	.LM49:
 411 0168 2093 0000 		sts key+2,r18
 130:drive/key.c   ****                                 key_status  =   0 ;         //reset the state counter!
 413               	.LM50:
 414 016c 2093 0000 		sts key_status.3,r18
 131:drive/key.c   ****                                 key_down_cnt=   0;
 416               	.LM51:
 417 0170 1092 0000 		sts (key_down_cnt.2)+1,__zero_reg__
 418 0174 1092 0000 		sts key_down_cnt.2,__zero_reg__
 132:drive/key.c   ****                             }
 133:drive/key.c   ****                              break;
 420               	.LM52:
 421 0178 0CC0      		rjmp .L8
 422               	.L32:
 134:drive/key.c   ****                     case 3:  {
 135:drive/key.c   ****                                 key_down_cnt=   0;          //reset for new key down
 424               	.LM53:
 425 017a 1092 0000 		sts (key_down_cnt.2)+1,__zero_reg__
 426 017e 1092 0000 		sts key_down_cnt.2,__zero_reg__
 136:drive/key.c   ****                                 key.val     =   0;          //send  NO key
 428               	.LM54:
 429 0182 2093 0000 		sts key,r18
 137:drive/key.c   ****                                 key.type    =   NON;        //key type is NON
 431               	.LM55:
 432 0186 2093 0000 		sts key+1,r18
 138:drive/key.c   ****                                 key.fkeydone=   NO;         //key has not been processed!
 434               	.LM56:
 435 018a 2093 0000 		sts key+2,r18
 139:drive/key.c   ****                                 key_status  =   0 ;         //reset the state counter!
 437               	.LM57:
 438 018e 2093 0000 		sts key_status.3,r18
 439               	.L8:
 440               	/* epilogue: frame size=0 */
 441 0192 CF91      		pop r28
 442 0194 0895      		ret
 443               	/* epilogue end (size=2) */
 444               	/* function KeyScan size 179 (176) */
 452               	.Lscope1:
 454               		.text
 456               	Letext:
 457               	/* File "drive/key.c": code  209 = 0x00d1 ( 205), prologues   1, epilogues   3 */
DEFINED SYMBOLS
                            *ABS*:00000000 key.c
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc4Qaaaa.s:3      *ABS*:0000003f __SREG__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc4Qaaaa.s:4      *ABS*:0000003e __SP_H__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc4Qaaaa.s:5      *ABS*:0000003d __SP_L__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc4Qaaaa.s:6      *ABS*:00000000 __tmp_reg__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc4Qaaaa.s:7      *ABS*:00000001 __zero_reg__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc4Qaaaa.s:128    .data:00000000 key
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc4Qaaaa.s:136    .text:00000000 KeyRead
                             .bss:00000000 key_val_pre.0
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc4Qaaaa.s:194    .bss:00000001 key_val_now.1
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc4Qaaaa.s:195    .bss:00000002 key_down_cnt.2
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc4Qaaaa.s:196    .bss:00000004 key_status.3
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc4Qaaaa.s:201    .text:00000036 KeyScan
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc4Qaaaa.s:456    .text:00000196 Letext

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
f_15ms

⌨️ 快捷键说明

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