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

📄 key.s

📁 用ICCAVR编辑通过的
💻 S
📖 第 1 页 / 共 2 页
字号:
L37:
	.dbline 140
; 				//处理电流/电压切换,默认状态是显示电压
; 				else if ( KEY_INPUT == A_V_DOWN )
	lds R24,_KEY_INPUT
	cpi R24,2
	brne L43
	.dbline 141
; 				{
	.dbline 142
; 					KEY_A_V_STATE = !KEY_A_V_STATE;		//切换AV状态
	lds R2,_KEY_A_V_STATE
	tst R2
	brne L45
	ldi R20,1
	ldi R21,0
	rjmp L46
L45:
	clr R20
	clr R21
L46:
	sts _KEY_A_V_STATE,R20
	.dbline 143
; 					KEY_INPUT = 0;
	clr R2
	sts _KEY_INPUT,R2
	.dbline 144
; 					if ( KEY_A_V_STATE )
	tst R20
	breq L47
	.dbline 145
; 					{
	.dbline 146
; 						PORTB |= ( 1 << OUT_A );		//显示电流
	sbi 0x18,7
	.dbline 147
; 						eeprom_busy_wait();
	rcall _eeprom_busy_wait
	.dbline 148
; 						cli();
	rcall _cli
	.dbline 149
; 						eeprom_write_byte ( (char*)0x01, 0x01 );
	ldi R18,1
	ldi R19,0
	ldi R16,1
	ldi R17,0
	rcall _eeprom_write_byte
	.dbline 150
; 						sei();
	rcall _sei
	.dbline 151
; 					}
	rjmp L48
L47:
	.dbline 153
; 					else
; 					{
	.dbline 154
; 						PORTB &= ~( 1 << OUT_A );		//显示电压
	cbi 0x18,7
	.dbline 155
; 						eeprom_busy_wait();
	rcall _eeprom_busy_wait
	.dbline 156
; 						cli();
	rcall _cli
	.dbline 157
; 						eeprom_write_byte ( (char*)0x01, 0x00 );
	clr R18
	clr R19
	ldi R16,1
	ldi R17,0
	rcall _eeprom_write_byte
	.dbline 158
; 						sei();
	rcall _sei
	.dbline 159
; 					}
L48:
	.dbline 160
; 				}
L43:
L38:
	.dbline 162
; 				//处理稳流/稳压切换,默认状态是稳流
; 				if ( KEY_INPUT == CC_CV_DOWN )
	lds R24,_KEY_INPUT
	cpi R24,4
	brne L49
	.dbline 163
; 				{
	.dbline 164
; 					KEY_CC_CV_STATE = !KEY_CC_CV_STATE;
	lds R2,_KEY_CC_CV_STATE
	tst R2
	brne L51
	ldi R20,1
	ldi R21,0
	rjmp L52
L51:
	clr R20
	clr R21
L52:
	sts _KEY_CC_CV_STATE,R20
	.dbline 166
; 												//改变稳流/稳压按键的状态
; 					KEY_INPUT = 0;
	clr R2
	sts _KEY_INPUT,R2
	.dbline 167
; 					if ( KEY_CC_CV_STATE )
	tst R20
	breq L53
	.dbline 168
; 					{
	.dbline 169
; 						PORTB |= ( 1 << OUT_CV );		//稳压
	sbi 0x18,6
	.dbline 170
; 						eeprom_busy_wait();
	rcall _eeprom_busy_wait
	.dbline 171
; 						cli();							
	rcall _cli
	.dbline 172
; 						eeprom_write_byte ( (char*)0x05, 0x01 );		
	ldi R18,1
	ldi R19,0
	ldi R16,5
	ldi R17,0
	rcall _eeprom_write_byte
	.dbline 173
; 						sei();
	rcall _sei
	.dbline 174
; 					}
	rjmp L54
L53:
	.dbline 176
; 					else
; 					{
	.dbline 177
; 						PORTB &= ~( 1 << OUT_CV );		//稳流
	cbi 0x18,6
	.dbline 178
; 						eeprom_busy_wait();
	rcall _eeprom_busy_wait
	.dbline 179
; 						cli();							
	rcall _cli
	.dbline 180
; 						eeprom_write_byte ( (char*)0x05, 0x00 );		
	clr R18
	clr R19
	ldi R16,5
	ldi R17,0
	rcall _eeprom_write_byte
	.dbline 181
; 						sei();
	rcall _sei
	.dbline 182
; 					}
L54:
	.dbline 183
; 				}
L49:
	.dbline 185
; 				//处理手动/自动切换,默认状态是手动
; 				if ( KEY_INPUT == AUTO_MAN_DOWN )
	lds R24,_KEY_INPUT
	cpi R24,8
	brne L22
	.dbline 186
; 				{
	.dbline 187
; 					KEY_AUTO_MAN_STATE = !KEY_AUTO_MAN_STATE;
	lds R2,_KEY_AUTO_MAN_STATE
	tst R2
	brne L57
	ldi R20,1
	ldi R21,0
	rjmp L58
L57:
	clr R20
	clr R21
L58:
	sts _KEY_AUTO_MAN_STATE,R20
	.dbline 189
; 												//改变手动/自动按键的状态
; 					KEY_INPUT = 0;
	clr R2
	sts _KEY_INPUT,R2
	.dbline 190
; 					if ( KEY_AUTO_MAN_STATE )
	tst R20
	breq L59
	.dbline 191
; 					{
	.dbline 192
; 						PORTB |= ( 1 << OUT_AUTO );	//自动
	sbi 0x18,5
	.dbline 193
; 						eeprom_busy_wait();
	rcall _eeprom_busy_wait
	.dbline 194
; 						cli();							
	rcall _cli
	.dbline 195
; 						eeprom_write_byte ( (char*)0x03, 0x01 );		
	ldi R18,1
	ldi R19,0
	ldi R16,3
	ldi R17,0
	rcall _eeprom_write_byte
	.dbline 196
; 						sei();
	rcall _sei
	.dbline 197
; 					}
	rjmp L22
L59:
	.dbline 199
; 					else
; 					{
	.dbline 200
; 						PORTB &= ~( 1 << OUT_AUTO );	//手动
	cbi 0x18,5
	.dbline 201
; 						eeprom_busy_wait();
	rcall _eeprom_busy_wait
	.dbline 202
; 						cli();							
	rcall _cli
	.dbline 203
; 						eeprom_write_byte ( (char*)0x03, 0x00 );		
	clr R18
	clr R19
	ldi R16,3
	ldi R17,0
	rcall _eeprom_write_byte
	.dbline 204
; 						sei();
	rcall _sei
	.dbline 205
; 					}
	.dbline 206
; 				}
	.dbline 207
; 			}
	.dbline 208
; 		}
	.dbline 209
; 	}
	rjmp L22
L21:
	.dbline 211
; 	else
; 	{
	.dbline 212
; 		KEY_INPUT = KEY_TEMP = 0x00;
	clr R2
	sts _KEY_TEMP,R2
	sts _KEY_INPUT,R2
	.dbline 213
; 		KEY_DOWN_TIME = 0;
	clr R3
	sts L14+1,R3
	sts L14,R2
	.dbline 214
; 	}
L22:
	.dbline 215
; 	if ( SET_STATU )
	lds R2,_SET_STATU
	tst R2
	brne X9
	rjmp L61
X9:
	.dbline 216
; 	{
	.dbline 217
; 		CHECK_EDATA_A();
	rcall _CHECK_EDATA_A
	.dbline 218
; 		if ( KEY_INPUT == POWER_DOWN )
	lds R24,_KEY_INPUT
	cpi R24,1
	breq X10
	rjmp L63
X10:
	.dbline 219
; 		{
	.dbline 220
; 			i++;
	lds R24,L16
	lds R25,L16+1
	adiw R24,1
	sts L16+1,R25
	sts L16,R24
	.dbline 221
; 			TIMER_NUM = 0;
	clr R2
	clr R3
	sts _TIMER_NUM+1,R3
	sts _TIMER_NUM,R2
	.dbline 222
; 			NUM_CHANGE = TRUE;
	ldi R24,1
	ldi R25,0
	sts L15+1,R25
	sts L15,R24
	.dbline 223
; 			if ( ( i % 25 ) == 0 )
	ldi R18,25
	ldi R19,0
	lds R16,L16
	lds R17,L16+1
	rcall mod16u
	cpi R16,0
	cpc R16,R17
	breq X11
	rjmp L64
X11:
X2:
	.dbline 224
; 			{
	.dbline 225
; 				if ( MAX_A[0] > 0 )
	lds R2,_MAX_A
	lds R3,_MAX_A+1
	tst R2
	brne X3
	tst R3
	brne X12
	rjmp L64
X12:
X3:
	.dbline 226
; 				{
	.dbline 227
; 					MAX_A[0]--;
	lds R24,_MAX_A
	lds R25,_MAX_A+1
	sbiw R24,1
	sts _MAX_A+1,R25
	sts _MAX_A,R24
	.dbline 228
; 					MAX_A[1] = MAX_A[2] = MAX_A[0];
	movw R2,R24
	sts _MAX_A+4+1,R3
	sts _MAX_A+4,R2
	sts _MAX_A+2+1,R3
	sts _MAX_A+2,R2
	.dbline 229
; 				}
	.dbline 230
; 			}
	.dbline 231
; 		}	
	rjmp L64
L63:
	.dbline 232
; 		else if ( KEY_INPUT == CC_CV_DOWN  )
	lds R24,_KEY_INPUT
	cpi R24,4
	breq X13
	rjmp L71
X13:
	.dbline 233
; 		{
	.dbline 234
; 			i++;
	lds R24,L16
	lds R25,L16+1
	adiw R24,1
	sts L16+1,R25
	sts L16,R24
	.dbline 235
; 			TIMER_NUM = 0;
	clr R2
	clr R3
	sts _TIMER_NUM+1,R3
	sts _TIMER_NUM,R2
	.dbline 236
; 			NUM_CHANGE = TRUE;
	ldi R24,1
	ldi R25,0
	sts L15+1,R25
	sts L15,R24
	.dbline 237
; 			if ( ( i % 25 ) == 0 )
	ldi R18,25
	ldi R19,0
	lds R16,L16
	lds R17,L16+1
	rcall mod16u
	cpi R16,0
	cpc R16,R17
	brne L73
X4:
	.dbline 238
; 			{
	.dbline 239
; 				if ( MAX_A[0] < 2000 )
	lds R24,_MAX_A
	lds R25,_MAX_A+1
	cpi R24,208
	ldi R30,7
	cpc R25,R30
	brsh L75
	.dbline 240
; 				{
	.dbline 241
; 					MAX_A[0]++;
	lds R24,_MAX_A
	lds R25,_MAX_A+1
	adiw R24,1
	sts _MAX_A+1,R25
	sts _MAX_A,R24
	.dbline 242
; 					MAX_A[1] = MAX_A[2] = MAX_A[0];
	movw R2,R24
	sts _MAX_A+4+1,R3
	sts _MAX_A+4,R2
	sts _MAX_A+2+1,R3
	sts _MAX_A+2,R2
	.dbline 243
; 				}
	rjmp L76
L75:
	.dbline 245
; 				else
; 				{
	.dbline 246
; 					MAX_A[1] = MAX_A[2] = MAX_A[0] = 0;
	clr R2
	clr R3
	sts _MAX_A+1,R3
	sts _MAX_A,R2
	sts _MAX_A+4+1,R3
	sts _MAX_A+4,R2
	sts _MAX_A+2+1,R3
	sts _MAX_A+2,R2
	.dbline 247
; 				}
L76:
	.dbline 248
; 			}
L73:
	.dbline 249
; 		}
L71:
L64:
	.dbline 250
L61:
	.dbline -2
L13:
	adiw R28,2
	rcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r key_first 10 c
	.dbsym r key_end 20 c
	.dbsym r key_press 22 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile F:\网络下载\AVR\完整应用\电流电压表\SOF\key.c
_UP_DOWN_POWER::
	.blkb 1
	.dbfile F:\网络下载\AVR\完整应用\电流电压表\SOF/init.h
	.dbsym e UP_DOWN_POWER _UP_DOWN_POWER c
_KEY_AUTO_MAN_STATE::
	.blkb 1
	.dbsym e KEY_AUTO_MAN_STATE _KEY_AUTO_MAN_STATE c
_KEY_CC_CV_STATE::
	.blkb 1
	.dbsym e KEY_CC_CV_STATE _KEY_CC_CV_STATE c
_POWER_STATE::
	.blkb 1
	.dbsym e POWER_STATE _POWER_STATE c
_KEY_A_V_STATE::
	.blkb 1
	.dbsym e KEY_A_V_STATE _KEY_A_V_STATE c
_KEY_INPUT::
	.blkb 1
	.dbsym e KEY_INPUT _KEY_INPUT c
_KEY_TEMP::
	.blkb 1
	.dbsym e KEY_TEMP _KEY_TEMP c
_SET_STATU::
	.blkb 1
	.dbsym e SET_STATU _SET_STATU c
_TIMER_EN::
	.blkb 1
	.dbsym e TIMER_EN _TIMER_EN c
_TIMER_NUM::
	.blkb 2
	.dbsym e TIMER_NUM _TIMER_NUM i
_adc_data_temp::
	.blkb 2
	.dbsym e adc_data_temp _adc_data_temp i

⌨️ 快捷键说明

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