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

📄 key5.s

📁 本设计以ATMEL公司生产的AT90S8515作为控制核心
💻 S
📖 第 1 页 / 共 2 页
字号:
	st -y,R16
	rcall mpy32fs
	mov R16,R2
	mov R17,R3
	andi R16,1
	andi R17,0
	rcall int2fp
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	rcall add32fs
	lds R4,_K1+2
	lds R5,_K1+2+1
	lds R2,_K1
	lds R3,_K1+1
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	rcall mpy32f
	mov R30,R28
	mov R31,R29
	std z+10,R16
	std z+11,R17
	std z+12,R18
	std z+13,R19
	mov R30,R28
	mov R31,R29
	ldd R2,z+10
	ldd R3,z+11
	ldd R4,z+12
	ldd R5,z+13
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	ldi R16,<L37
	ldi R17,>L37
	rcall lpm32
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	rcall cmp32f
	brlt L41
	mov R30,R28
	mov R31,R29
	ldd R2,z+10
	ldd R3,z+11
	ldd R4,z+12
	ldd R5,z+13
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	ldi R16,<L37
	ldi R17,>L37
	rcall lpm32
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	rcall sub32f
	rcall fp2int
	mov R24,R16
	mov R25,R17
	subi R24,0  ; offset = 32768
	sbci R25,128
	mov R10,R24
	mov R11,R25
	rjmp L42
L41:
	mov R30,R28
	mov R31,R29
	ldd R16,z+10
	ldd R17,z+11
	ldd R18,z+12
	ldd R19,z+13
	rcall fp2int
	mov R10,R16
	mov R11,R17
L42:
	sts _ADC_GD+1,R11
	sts _ADC_GD,R10
	.dbline 96
; 			  LCD_display(2,0,4,*value);
	mov R30,R20
	mov R31,R21
	ldd R2,z+0
	ldd R3,z+1
	clr R4
	clr R5
	std y+2,R2
	std y+3,R3
	std y+4,R4
	std y+5,R5
	ldi R24,4
	std y+0,R24
	clr R18
	ldi R16,2
	rcall _LCD_display
	.dbline 97
; 		 	  break;
	.dbline 99
; 		 }
; 	 }
	rjmp L25
L24:
	.dbline 101
; 	 else
; 	 {
	.dbline 102
; 	 	 switch (temp)
	clr R23
	cpi R22,1
	ldi R30,0
	cpc R23,R30
	brne X5
	rjmp L70
X5:
	cpi R22,2
	ldi R30,0
	cpc R23,R30
	brne X6
	rjmp L60
X6:
	cpi R22,3
	ldi R30,0
	cpc R23,R30
	breq L46
	cpi R22,4
	ldi R30,0
	cpc R23,R30
	brne X7
	rjmp L53
X7:
	cpi R22,5
	ldi R30,0
	cpc R23,R30
	brne X8
	rjmp L61
X8:
	rjmp L43
X2:
	.dbline 103
; 	 	 {
L46:
	.dbline 105
; 		 case KEY_INC:
; 			  value_table[j+1]++;
	ldi R24,<_value_table+1
	ldi R25,>_value_table+1
	lds R2,_j
	clr R3
	add R2,R24
	adc R3,R25
	mov R30,R2
	mov R31,R3
	ldd R24,z+0
	subi R24,255    ; addi 1
	std z+0,R24
	.dbline 106
; 			  if(value_table[j+1]>9) value_table[j+1]=0;
	ldi R24,<_value_table+1
	ldi R25,>_value_table+1
	lds R30,_j
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldi R24,9
	cp R24,R2
	brsh L48
	.dbline 106
	ldi R24,<_value_table+1
	ldi R25,>_value_table+1
	lds R30,_j
	clr R31
	add R30,R24
	adc R31,R25
	clr R2
	std z+0,R2
L48:
	.dbline 107
; 			  LCD_write(2+j,0,'0'+value_table[j+1]);
	ldi R24,<_value_table+1
	ldi R25,>_value_table+1
	lds R30,_j
	clr R31
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	clr R25
	adiw R24,48
	std y+1,R25
	std y+0,R24
	clr R18
	lds R16,_j
	subi R16,254    ; addi 2
	rcall _LCD_write
	.dbline 108
; 		 	  break;
	rjmp L44
L53:
	.dbline 110
; 		 case KEY_DEC:
; 			  value_table[j+1]--;
	ldi R24,<_value_table+1
	ldi R25,>_value_table+1
	lds R2,_j
	clr R3
	add R2,R24
	adc R3,R25
	mov R30,R2
	mov R31,R3
	ldd R24,z+0
	subi R24,1
	std z+0,R24
	.dbline 111
; 			  if(value_table[j+1]>9) value_table[j+1]=9;
	ldi R24,<_value_table+1
	ldi R25,>_value_table+1
	lds R30,_j
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldi R24,9
	cp R24,R2
	brsh L55
	.dbline 111
	ldi R24,<_value_table+1
	ldi R25,>_value_table+1
	lds R30,_j
	clr R31
	add R30,R24
	adc R31,R25
	ldi R24,9
	std z+0,R24
L55:
	.dbline 112
; 			  LCD_write(2+j,0,'0'+value_table[j+1]);
	ldi R24,<_value_table+1
	ldi R25,>_value_table+1
	lds R30,_j
	clr R31
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	clr R25
	adiw R24,48
	std y+1,R25
	std y+0,R24
	clr R18
	lds R16,_j
	subi R16,254    ; addi 2
	rcall _LCD_write
	.dbline 113
; 		 	  break;
	rjmp L44
L60:
	.dbline 115
; 		 case KEY_CU:
; 			  LCD_write(2+j,1,' ');
	ldi R24,32
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,1
	lds R16,_j
	subi R16,254    ; addi 2
	rcall _LCD_write
	.dbline 116
; 			  j++;
	lds R24,_j
	subi R24,255    ; addi 1
	sts _j,R24
	.dbline 117
; 			  j&=0x3;
	andi R24,3
	sts _j,R24
	.dbline 118
; 			  LCD_write(2+j,1,'^');
	ldi R24,94
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,1
	lds R16,_j
	subi R16,254    ; addi 2
	rcall _LCD_write
	.dbline 119
; 		 	  break;
	rjmp L44
L61:
	.dbline 121
; 		 case KEY_OK:
; 			  *value=value_table[1]*1000+ value_table[2]*100+value_table[3]*10+value_table[4];
	lds R18,_value_table+2
	clr R19
	ldi R16,100
	ldi R17,0
	rcall mpy16s
	mov R2,R16
	mov R3,R17
	lds R18,_value_table+1
	clr R19
	ldi R16,1000
	ldi R17,3
	rcall mpy16s
	mov R4,R16
	mov R5,R17
	add R4,R2
	adc R5,R3
	lds R18,_value_table+3
	clr R19
	ldi R16,10
	ldi R17,0
	rcall mpy16s
	add R4,R16
	adc R5,R17
	lds R2,_value_table+4
	clr R3
	add R4,R2
	adc R5,R3
	mov R30,R20
	mov R31,R21
	std z+1,R5
	std z+0,R4
	.dbline 122
; 			  if(*value>2000) *value=2000;
	ldi R24,2000
	ldi R25,7
	ldd R2,z+0
	ldd R3,z+1
	cp R24,R2
	cpc R25,R3
	brsh L66
	.dbline 122
	std z+1,R25
	std z+0,R24
L66:
	.dbline 123
; 			  ADC_GD=(*value)*K1;
	mov R30,R20
	mov R31,R21
	ldd R2,z+0
	ldd R3,z+1
	ldi R16,<L36
	ldi R17,>L36
	rcall lpm32
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	mov R16,R2
	mov R17,R3
	lsr R17
	ror R16
	rcall int2fp
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	rcall mpy32fs
	mov R16,R2
	mov R17,R3
	andi R16,1
	andi R17,0
	rcall int2fp
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	rcall add32fs
	lds R4,_K1+2
	lds R5,_K1+2+1
	lds R2,_K1
	lds R3,_K1+1
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	rcall mpy32f
	mov R30,R28
	mov R31,R29
	std z+6,R16
	std z+7,R17
	std z+8,R18
	std z+9,R19
	mov R30,R28
	mov R31,R29
	ldd R2,z+6
	ldd R3,z+7
	ldd R4,z+8
	ldd R5,z+9
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	ldi R16,<L37
	ldi R17,>L37
	rcall lpm32
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	rcall cmp32f
	brlt L68
	mov R30,R28
	mov R31,R29
	ldd R2,z+6
	ldd R3,z+7
	ldd R4,z+8
	ldd R5,z+9
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	ldi R16,<L37
	ldi R17,>L37
	rcall lpm32
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	rcall sub32f
	rcall fp2int
	mov R22,R16
	mov R23,R17
	subi R22,0  ; offset = 32768
	sbci R23,128
	rjmp L69
L68:
	mov R30,R28
	mov R31,R29
	ldd R16,z+6
	ldd R17,z+7
	ldd R18,z+8
	ldd R19,z+9
	rcall fp2int
	mov R22,R16
	mov R23,R17
L69:
	sts _ADC_GD+1,R23
	sts _ADC_GD,R22
L70:
	.dbline 125
; 		 case KEY_FN:
; 		 	  mode=1;
	ldi R24,1
	sts _mode,R24
	.dbline 126
; 		      LCD_write_string(0,1,"     ^  +/-ing...");
	ldi R24,<L71
	ldi R25,>L71
	std y+1,R25
	std y+0,R24
	ldi R18,1
	clr R16
	rcall _LCD_write_string
	.dbline 127
; 			  LCD_display(2,0,4,*value);
	mov R30,R20
	mov R31,R21
	ldd R2,z+0
	ldd R3,z+1
	clr R4
	clr R5
	std y+2,R2
	std y+3,R3
	std y+4,R4
	std y+5,R5
	ldi R24,4
	std y+0,R24
	clr R18
	ldi R16,2
	rcall _LCD_display
	.dbline 128
; 		 	  break;
L43:
L44:
	.dbline 130
L25:
	.dbline -2
	.dbline 131
; 		 }
; 	 } 
; }
L23:
	adiw R28,14
	rcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r temp 22 c
	.dbsym r value 20 pi
	.dbsym l data_length 20 c
	.dbsym r y 22 c
	.dbsym r x 10 c
	.dbend
	.area data(ram, con, rel)
	.dbfile D:\hujie\key5.c
L71:
	.blkb 18
	.area idata
	.byte 32,32,32,32,32,94,32,32,43,47,45,'i,'n,'g,46,46
	.byte 46,0
	.area data(ram, con, rel)
	.dbfile D:\hujie\key5.c
	.area lit(rom, con, rel)
L37:
	.word 0x0,0x4700
L36:
	.word 0x0,0x4000
	.area data(ram, con, rel)
	.dbfile D:\hujie\key5.c
L30:
	.blkb 17
	.area idata
	.byte 32,32,94,32,32,32,32,'s,'e,'t,'i,'n,'g,46,46,46
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\hujie\key5.c

⌨️ 快捷键说明

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