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

📄 keyboard.s

📁 加速度采集器。基于ATMega16L.AVRSTUIDIO4
💻 S
字号:
	.module keyboard.c
	.area data(ram, con, rel)
L2:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
L3:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.area lit(rom, con, rel)
L4:
	.byte 'R,'U,'N
L5:
	.byte 32,32,32
	.area text(rom, con, rel)
	.dbfile G:\Acceleratoion\Acceleration\keyboard.c
	.dbfunc e keyboardRead _keyboardRead fV
	.dbsym s stringBlank3 L5 A[3:3]kc
	.dbsym s stringRUN L4 A[3:3]kc
	.dbsym s keyPressed0 L3 c
	.dbsym s keyPressed00 L2 c
;     keyPressed -> R22
;    keyDetected -> R20
	.even
_keyboardRead::
	xcall push_gset2
	sbiw R28,4
	.dbline -1
	.dbline 11
; //Keyboard.c
; 
; #include "keyboard.h"
; 
; //Controlled state
; extern char mute;
; extern char mainState;
; extern unsigned short idleTime;
; 
; void keyboardRead(void)
; {
	.dbline 20
;   	 static char   keyPressed00 = 0x00;
;   	 static char   keyPressed0 = 0x00;
; 	 char	keyPressed;
; 	 char	keyDetected;
; 	 static const char stringRUN[3] = "RUN";
; 	 static const char stringBlank3[3] = "   ";
;  
; 	 //1. Read PORTB
; 	 keyPressed = ~PINB&(PB_MUTE|PB_START|PB_CLR|PB_OFF);//Invert
	in R22,0x16
	com R22
	andi R22,7
	.dbline 22
; 	 //2. Key Detect
; 	 keyDetected = keyPressed&keyPressed0&(~keyPressed00);
	lds R2,L3
	mov R20,R22
	and R20,R2
	lds R2,L2
	com R2
	and R20,R2
	.dbline 23
; 	 keyPressed00 = keyPressed0;
	lds R2,L3
	sts L2,R2
	.dbline 24
; 	 keyPressed0 = keyPressed;
	sts L3,R22
	.dbline 26
; 	 //3. Classify
; 	 if(keyDetected)
	tst R20
	brne X0
	xjmp L6
X0:
	.dbline 27
; 	 {
	.dbline 28
;  		 idleTime = 0; //clear idle timer when key Pressed
	clr R2
	clr R3
	sts _idleTime+1,R3
	sts _idleTime,R2
	.dbline 29
;     	 if(keyDetected&PB_MUTE)
	sbrs R20,0
	rjmp L8
	.dbline 30
; 	     {
	.dbline 31
; 	       mute = !mute;
	lds R2,_mute
	tst R2
	brne L10
	ldi R22,1
	ldi R23,0
	xjmp L11
L10:
	clr R22
	clr R23
L11:
	sts _mute,R22
	.dbline 32
; 	       if(mute)
	tst R22
	breq L12
	.dbline 33
; 	         lcdWriteChar(1,0,0xf8);
	ldi R24,248
	std y+0,R24
	clr R18
	ldi R16,1
	xcall _lcdWriteChar
	xjmp L13
L12:
	.dbline 35
; 	       else
; 	         lcdWriteChar(1,0,' ');
	ldi R24,32
	std y+0,R24
	clr R18
	ldi R16,1
	xcall _lcdWriteChar
L13:
	.dbline 36
; 	     }
L8:
	.dbline 37
; 	     if(keyDetected&PB_START)
	sbrs R20,2
	rjmp L14
	.dbline 38
; 	     {
	.dbline 39
; 	       if(mainState==0)
	lds R2,_mainState
	tst R2
	brne L16
	.dbline 40
; 	       {
	.dbline 41
; 	         mainState = 1;
	ldi R24,1
	sts _mainState,R24
	.dbline 42
; 		     lcdWriteString(0,0,3,stringRUN);
	ldi R24,<L4
	ldi R25,>L4
	std y+3,R25
	std y+2,R24
	ldi R24,3
	std y+0,R24
	clr R18
	clr R16
	xcall _lcdWriteString
	.dbline 43
; 	       }
	xjmp L17
L16:
	.dbline 45
; 	       else
; 	       {
	.dbline 46
; 	         mainState = 0;
	clr R2
	sts _mainState,R2
	.dbline 47
; 		     lcdWriteString(0,0,3,stringBlank3);
	ldi R24,<L5
	ldi R25,>L5
	std y+3,R25
	std y+2,R24
	ldi R24,3
	std y+0,R24
	clr R18
	clr R16
	xcall _lcdWriteString
	.dbline 48
; 	       }
L17:
	.dbline 49
; 	     }
L14:
	.dbline 50
; 	     if(keyDetected&PB_CLR)
	sbrs R20,1
	rjmp L18
	.dbline 51
; 	     {
	.dbline 52
; 	     }
L18:
	.dbline 53
; 	     if(keyDetected&PB_OFF)
	sbrs R20,0
	rjmp L20
	.dbline 54
; 	     {
	.dbline 55
; 	      powerOff();
	xcall _powerOff
	.dbline 56
; 	     }
L20:
	.dbline 57
L6:
	.dbline -2
L1:
	adiw R28,4
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r keyPressed 22 c
	.dbsym r keyDetected 20 c
	.dbend
	.dbfunc e powerOff _powerOff fV
	.even
_powerOff::
	.dbline -1
	.dbline 62
; 	 }//if keyDetected
; }
; 	
; 	
; void powerOff(void)
; {
	.dbline 63
;  	  mainState = 0;//-->IDLE
	clr R2
	sts _mainState,R2
	.dbline 65
; 	  //Save SD card
; 	  PORT_POWER &= ~BIT_POWER;
	cbi 0x1b,5
	.dbline -2
L22:
	.dbline 0 ; func end
	ret
	.dbend

⌨️ 快捷键说明

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