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

📄 m8demo.s

📁 AVR系列被广泛应用的单片机MEGA8开发(原理图)及例程
💻 S
📖 第 1 页 / 共 4 页
字号:
;     		
;     		{
	.dbline 347
;     			
;       		if (key_tick > KBD_DEBOUNCE_TEMPO)
	ldi R24,50
	ldi R25,0
	lds R2,_key_tick
	lds R3,_key_tick+1
	cp R24,R2
	cpc R25,R3
	brlo X14
	rjmp L63
X14:
	.dbline 348
; 		        key_state = KBD_DECODE;
	ldi R24,2
	sts _key_state,R24
	.dbline 350
;              
;       		break;
	rjmp L63
L71:
	.dbline 354
;     		}
;     
;     case KBD_DECODE:
;     		{
	.dbline 356
;     		 
; 		if(key_value==Key_Decode())
	rcall _Key_Decode
	lds R2,_key_value
	cp R2,R16
	brne L72
	.dbline 357
;          	{
	.dbline 361
; 		//if(( key_value==key_dec)||(key_value==key_inc))
; 		//	key_state = KBD_DECODE5;
; 		//else
; 		    key_state = KBD_DECODE2;
	ldi R24,3
	sts _key_state,R24
	.dbline 364
; 		   
; 
; 		}
	rjmp L63
L72:
	.dbline 366
;               else
; 	   	key_state = KBD_IDLE;
	clr R2
	sts _key_state,R2
	.dbline 367
;       		break;
	rjmp L63
L74:
	.dbline 371
; 		}
;  
;     case KBD_DECODE2:
;        	{
	.dbline 372
;        	if(key_value!=Key_Decode())
	rcall _Key_Decode
	lds R2,_key_value
	cp R2,R16
	brne X15
	rjmp L63
X15:
	.dbline 373
; 	        {key_pressed = true;          
	.dbline 373
	ldi R24,1
	sts _key_pressed,R24
	.dbline 374
;        	  key_state = KBD_IDLE;
	clr R2
	sts _key_state,R2
	.dbline 375
; 	       }
	.dbline 376
; 	        break;
	rjmp L63
L77:
	.dbline 380
; 		}
;      
;      case KBD_DECODE3:
;      		{  
	.dbline 381
; 		if (key_tick > KBD_DEBOUNCE_TEMP1)
	ldi R24,300
	ldi R25,1
	lds R2,_key_tick
	lds R3,_key_tick+1
	cp R24,R2
	cpc R25,R3
	brsh L63
	.dbline 382
;               key_state = KBD_DECODE5;
	ldi R24,6
	sts _key_state,R24
	.dbline 383
;       		break;
	rjmp L63
L80:
	.dbline 387
; 		}
; 	
;     case KBD_DECODE4:
;     		{ 
	.dbline 389
; 
;     		 key_pressed = true;    
	ldi R24,1
	sts _key_pressed,R24
	.dbline 390
;     		 key_state = KBD_DECODE3;
	ldi R24,4
	sts _key_state,R24
	.dbline 391
;     		 key_tick=0;
	clr R2
	clr R3
	sts _key_tick+1,R3
	sts _key_tick,R2
	.dbline 392
; 		if(key_value!=Key_Decode())
	rcall _Key_Decode
	lds R2,_key_value
	cp R2,R16
	breq L63
	.dbline 393
;        	 {
	.dbline 394
;        	 key_pressed = true;          
	ldi R24,1
	sts _key_pressed,R24
	.dbline 395
; 	         key_state = KBD_IDLE;
	clr R2
	sts _key_state,R2
	.dbline 396
; 	        }
	.dbline 397
; 	      break;
	rjmp L63
L83:
	.dbline 400
; 		}
;     case KBD_DECODE5:
;     		{ 
	.dbline 402
; 
;     		if (key_tick > KBD_DEBOUNCE_TEMP1)
	ldi R24,300
	ldi R25,1
	lds R2,_key_tick
	lds R3,_key_tick+1
	cp R24,R2
	cpc R25,R3
	brsh L84
	.dbline 403
;               key_state = KBD_DECODE4;
	ldi R24,5
	sts _key_state,R24
L84:
	.dbline 404
	rcall _Key_Decode
	lds R2,_key_value
	cp R2,R16
	breq L63
	.dbline 405
	.dbline 406
	ldi R24,1
	sts _key_pressed,R24
	.dbline 407
	clr R2
	sts _key_state,R2
	.dbline 408
	.dbline 410
	.dbline 413
L63:
	.dbline -2
L61:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e UserApplication _UserApplication fV
;             nn -> <dead>
	.even
_UserApplication::
	rcall push_gset5
	sbiw R28,2
	.dbline -1
	.dbline 421
; 		if(key_value!=Key_Decode())
;        	 {
;        	 key_pressed = true;          
; 	         key_state = KBD_IDLE;
; 	        }
; 		
; 	      break;
; 		}
; 
;     default:      break;
;   }	
; 
; 
; }
; 
; 
; void UserApplication(void)
; {
	.dbline 422
; unsigned char  nn;;
	.dbline 423
; init_devices();
	rcall _init_devices
	.dbline 424
; TimerCount=0;
	clr R2
	clr R3
	sts _TimerCount+1,R3
	sts _TimerCount,R2
	.dbline 425
; TimerCountOld=0;
	sts _TimerCountOld+1,R3
	sts _TimerCountOld,R2
	.dbline 426
; key_state=KBD_IDLE;
	sts _key_state,R2
	.dbline 427
; mode_state=0;
	sts _mode_state,R2
	.dbline 428
; PutChar(0x0a);
	ldi R16,10
	rcall _PutChar
	.dbline 429
; PutChar(0x0d);
	ldi R16,13
	rcall _PutChar
	.dbline 430
; PutStr("富友勤电子M8DEMO");
	ldi R16,<L89
	ldi R17,>L89
	rcall _PutStr
	.dbline 431
; PutStr("时钟模式");
	ldi R16,<L90
	ldi R17,>L90
	rcall _PutStr
	rjmp L92
L91:
	.dbline 433
;  while(1)
;  	{
	.dbline 434
;  	 Key_Task();
	rcall _Key_Task
	.dbline 435
;  	 if(key_pressed)
	lds R2,_key_pressed
	tst R2
	brne X27
	rjmp L94
X27:
	.dbline 436
;  	 	{
	.dbline 437
;  	 switch(key_value)
	lds R14,_key_value
	clr R15
	movw R24,R14
	cpi R24,251
	ldi R30,0
	cpc R25,R30
	brne X28
	rjmp L163
X28:
	cpi R24,252
	ldi R30,0
	cpc R25,R30
	brne X29
	rjmp L134
X29:
	cpi R24,253
	ldi R30,0
	cpc R25,R30
	brne X30
	rjmp L119
X30:
	cpi R24,254
	ldi R30,0
	cpc R25,R30
	breq L99
	rjmp L97
X16:
	.dbline 438
;  	 	{ 
L99:
	.dbline 440
;  	 	case key_inc:
; 			 switch(mode_state)
	lds R12,_mode_state
	clr R13
	tst R12
	brne X17
	tst R13
	brne X31
	rjmp L97
X31:
X17:
	movw R24,R12
	cpi R24,1
	ldi R30,0
	cpc R25,R30
	breq L104
	cpi R24,2
	ldi R30,0
	cpc R25,R30
	breq L105
	cpi R24,3
	ldi R30,0
	cpc R25,R30
	breq L106
	cpi R24,4
	ldi R30,0
	cpc R25,R30
	brne X32
	rjmp L107
X32:
	cpi R24,5
	ldi R30,0
	cpc R25,R30
	brne X33
	rjmp L108
X33:
	cpi R24,6
	ldi R30,0
	cpc R25,R30
	brne X34
	rjmp L109
X34:
	cpi R24,8
	ldi R30,0
	cpc R25,R30
	brne X35
	rjmp L110
X35:
	cpi R24,9
	ldi R30,0
	cpc R25,R30
	brne X36
	rjmp L116
X36:
	rjmp L97
X18:
	.dbline 441
;  	 	       	{
	.dbline 442
;  	 	       	  case clock_mode:break;
L104:
	.dbline 444
;  	 	                case out_eeprom_addr_modify_mode:
; 					out_eeprom_addr++;
	lds R24,_out_eeprom_addr
	subi R24,255    ; addi 1
	sts _out_eeprom_addr,R24
	.dbline 445
;  	 	                	out_eeprom_data=i2c_Read(out_eeprom_addr);
	mov R16,R24
	rcall _i2c_Read
	sts _out_eeprom_data,R16
	.dbline 448
;  	 	                	
; 
; 					break;
	rjmp L97
L105:
	.dbline 450
;  	 	                case out_eeprom_data_modify_mode:
;  	 	                	out_eeprom_data++;
	lds R24,_out_eeprom_data
	subi R24,255    ; addi 1
	sts _out_eeprom_data,R24
	.dbline 451
;  	 	                	i2c_Write(out_eeprom_addr,out_eeprom_data);
	mov R18,R24
	lds R16,_out_eeprom_addr
	rcall _i2c_Write
	.dbline 452
;  	 	               	 break;
	rjmp L97
L106:
	.dbline 454
;  	 	                case out_eeprom_read_mode:
;  	 	                	out_eeprom_addr++;
	lds R24,_out_eeprom_addr
	subi R24,255    ; addi 1
	sts _out_eeprom_addr,R24
	.dbline 455
;  	 	                	out_eeprom_data=i2c_Read(out_eeprom_addr);
	mov R16,R24
	rcall _i2c_Read
	sts _out_eeprom_data,R16
	.dbline 456
;  	 	                	break;
	rjmp L97
L107:
	.dbline 458
;  	 	                case in_eeprom_addr_modify_mode:
; 					in_eeprom_addr++;
	lds R24,_in_eeprom_addr
	subi R24,255    ; addi 1
	sts _in_eeprom_addr,R24
	.dbline 459
; 					EEPROM_READ(in_eeprom_addr, in_eeprom_data);
	ldi R24,1
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,<_in_eeprom_data
	ldi R19,>_in_eeprom_data
	lds R16,_in_eeprom_addr
	clr R17
	rcall _EEPROMReadBytes_extIO
	.dbline 460
; 					break;
	rjmp L97
L108:
	.dbline 462
;  	 	                case in_eeprom_data_modify_mode:
;  	 	                	in_eeprom_data++;
	lds R24,_in_eeprom_data
	subi R24,255    ; addi 1
	sts _in_eeprom_data,R24
	.dbline 463
;  	 	                	EEPROM_WRITE  (in_eeprom_addr,in_eeprom_data);
	ldi R24,1
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,<_in_eeprom_data
	ldi R19,>_in_eeprom_data
	lds R16,_in_eeprom_addr
	clr R17
	rcall _EEPROMWriteBytes_extIO
	.dbline 464
;  	 	               	 break;
	rjmp L97
L109:
	.dbline 466
;  	 	                case in_eeprom_read_mode:
;  	 	                	out_eeprom_addr++;
	lds R24,_out_eeprom_addr
	subi R24,255    ; addi 1
	sts _out_eeprom_addr,R24
	.dbline 467
;  	 	                	EEPROM_READ(in_eeprom_addr, in_eeprom_data);
	ldi R24,1
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,<_in_eeprom_data
	ldi R19,>_in_eeprom_data
	lds R16,_in_eeprom_addr
	clr R17
	rcall _EEPROMReadBytes_extIO
	.dbline 469
; 
;  	 	                	break;
	rjmp L97
L110:
	.dbline 471
;    				 case AT45DB021_addr_modify_mode:
;    				 	  AT45DB021_addr++;
	lds R24,_AT45DB021_addr
	subi R24,255    ; addi 1
	sts _AT45DB021_addr,R24
	.dbline 472
;    				 	  if(AT45DB021_addr==0x80)
	cpi R24,128
	brne L111
	.dbline 473
;    				 	  	AT45DB021_addr=0x00;
	clr R2
	sts _AT45DB021_addr,R2
L111:
	.dbline 474
;    				 	   PutStr("45DB21 Read Start Addr");
	ldi R16,<L113
	ldi R17,>L113
	rcall _PutStr
	.dbline 475
;    				 	  PutInt( AT45DB021_addr );
	lds R16,_AT45DB021_addr
	clr R17
	rcall _PutInt
	.dbline 476
;    				 	  AT45DB021_data=ReadBlock(AT45DB021_addr);
	lds R16,_AT45DB021_addr
	rcall _ReadBlock
	sts _AT45DB021_data,R16
	.dbline 477
;    				 	   PutStr("45DB21 Read  Data");
	ldi R16,<L114
	ldi R17,>L114
	rcall _PutStr
	.dbline 478
;    				 	  PutInt( AT45DB021_data );
	lds R16,_AT45DB021_data
	clr R17
	rcall _PutInt
	.dbline 479
;    				 	  PutStr("45DB21 Read End");
	ldi R16,<L115
	ldi R17,>L115
	rcall _PutStr
	.dbline 480
;    				 	  break;
	rjmp L97
L116:
	.dbline 482
; 				  case AT45DB021_data_modify_mode:
;  	 	                       AT45DB021_data++;
	lds R24,_AT45DB021_data
	subi R24,255    ; addi 1
	sts _AT45DB021_data,R24
	.dbline 483
;    				 	  PutStr("45DB21 Write Start");
	ldi R16,<L117
	ldi R17,>L117
	rcall _PutStr
	.dbline 484
;  	 	                       WriteBlock(AT45DB021_addr, AT45DB021_data);
	lds R18,_AT45DB021_data
	lds R16,_AT45DB021_addr
	rcall _WriteBlock
	.dbline 485
;    				 	  PutInt( AT45DB021_data );
	lds R16,_AT45DB021_data
	clr R17
	rcall _PutInt
	.dbline 486
;    				 	  PutStr("45DB21 Write End");
	ldi R16,<L118
	ldi R17,>L118
	rcall _PutStr
	.dbline 487
;  	 	    		 	  break;
	.dbline 489
; 
;  	 	                default :break;
	.dbline 491
;  	 	       	}
;        		break;
	rjmp L97
L119:
	.dbline 493
;  	 	case key_dec:
;  	 	        switch(mode_state)
	lds R10,_mode_state
	clr R11
	tst R10
	brne X19
	tst R11
	brne X37
	rjmp L97
X37:
X19:
	movw R24,R10
	cpi R24,1
	ldi R30,0
	cpc R25,R30
	breq L124
	cpi R24,2
	ldi R30,0
	cpc R25,R30
	breq L125
	cpi R24,3
	ldi R30,0
	cpc R25,R30
	breq L126
	cpi R24,4
	ldi R30,0
	cpc R25,R30
	brne X38
	rjmp L127
X38:
	cpi R24,5
	ldi R30,0
	cpc R25,R30
	brne X39
	rjmp L128
X39:
	cpi R24,6
	ldi R30,0
	cpc R25,R30
	brne X40
	rjmp L129
X40:
	cpi R24,8
	ldi R30,0
	cpc R25,R30
	brne X41
	rjmp L130
X41:
	cpi R24,9
	ldi R30,0
	cpc R25,R30
	brne X42
	rjmp L133
X42:
	rjmp L97
X20:
	.dbline 494
;  	 	       	{
	.dbline 495
;  	 	       	  case clock_mode:break;
L124:
	.dbline 497
;  	 	                case out_eeprom_addr_modify_mode:
;  	 	                	out_eeprom_addr--; 
	lds R24,_out_eeprom_addr
	subi R24,1
	sts _out_eeprom_addr,R24
	.dbline 498
;  	 	                	out_eeprom_data=i2c_Read(out_eeprom_addr);
	mov R16,R24
	rcall _i2c_Read
	sts _out_eeprom_data,R16
	.dbline 499
; 					break;
	rjmp L97
L125:
	.dbline 501
; 				  case out_eeprom_data_modify_mode:
;  	 	                	out_eeprom_data--;
	lds R24,_out_eeprom_data
	subi R24,1
	sts _out_eeprom_data,R24
	.dbline 502
;  	 	                	i2c_Write(out_eeprom_addr,out_eeprom_data);
	mov R18,R24
	lds R16,_out_eeprom_addr
	rcall _i2c_Write
	.dbline 503
;  	 	               	 break;
	rjmp L97
L126:
	.dbline 505
;  	 	                case out_eeprom_read_mode:
;  	 	                   	out_eeprom_addr--;
	lds R24,_out_eeprom_addr
	subi R24,1
	sts _out_eeprom_addr,R24
	.dbline 506
;  	 	                   	out_eeprom_data=i2c_Read(out_eeprom_addr);
	mov R16,R24
	rcall _i2c_Read
	sts _out_eeprom_data,R16
	.dbline 507
; 					break;
	rjmp L97
L127:
	.dbline 509
;  	 	                case in_eeprom_addr_modify_mode:
;  	 	                	in_eeprom_addr--;
	lds R24,_in_eeprom_addr
	subi R24,1
	sts _in_eeprom_addr,R24
	.dbline 510
;  	 	              	EEPROM_READ(in_eeprom_addr, in_eeprom_data);
	ldi R24,1
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,<_in_eeprom_data
	ldi R19,>_in_eeprom_data
	lds R16,_in_eeprom_addr
	clr R17
	rcall _EEPROMReadBytes_extIO
	.dbline 512
; 
; 					break;
	rjmp L97
L128:
	.dbline 514
; 				  case in_eeprom_data_modify_mode:
;  	 	                	in_eeprom_data--;
	lds R24,_in_eeprom_data
	subi R24,1
	sts _in_eeprom_data,R24
	.dbline 515
;  	 	                	EEPROM_WRITE  (in_eeprom_addr,in_eeprom_data);
	ldi R24,1
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,<_in_eeprom_data
	ldi R19,>_in_eeprom_data
	lds R16,_in_eeprom_addr
	clr R17
	rcall _EEPROMWriteBytes_extIO
	.dbline 516
;  	 	               	 break;
	rjmp L97
L129:
	.dbline 519
; 	
;  	 	                case in_eeprom_read_mode:
;  	 	                   	in_eeprom_addr--;
	lds R24,_in_eeprom_addr
	subi R24,1

⌨️ 快捷键说明

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