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

📄 main.s

📁 本设计以ATMEL公司生产的AT90S8515作为控制核心
💻 S
📖 第 1 页 / 共 2 页
字号:
; 			data_init(changK1());
	rcall _changK1
	rcall _data_init
	rjmp L42
L41:
	.dbline 92
; 	        while(flag)
; 			{
	.dbline 93
; 			    key_temp=keypad();
	rcall _keypad
	mov R10,R16
	.dbline 94
; 				switch(key_temp)
	mov R12,R10
	clr R13
	mov R24,R12
	mov R25,R13
	cpi R24,1
	ldi R30,0
	cpc R25,R30
	brne X4
	rjmp L56
X4:
	cpi R24,2
	ldi R30,0
	cpc R25,R30
	breq L47
	cpi R24,3
	ldi R30,0
	cpc R25,R30
	breq L50
	cpi R24,4
	ldi R30,0
	cpc R25,R30
	brne X5
	rjmp L53
X5:
	rjmp L44
X1:
	.dbline 95
; 				{
L47:
	.dbline 97
; 				case	KEY_CU:
; 					LCD_write(j,1,' ');
	ldi R24,32
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,1
	lds R16,_j
	rcall _LCD_write
	.dbline 98
; 					j++;
	lds R24,_j
	subi R24,255    ; addi 1
	sts _j,R24
	.dbline 99
; 					if(j>4)	j=0;
	ldi R24,4
	lds R2,_j
	cp R24,R2
	brsh L48
	.dbline 99
	clr R2
	sts _j,R2
L48:
	.dbline 100
; 					LCD_write(j,1,'^');
	ldi R24,94
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,1
	lds R16,_j
	rcall _LCD_write
	.dbline 101
; 					break;
	rjmp L45
L50:
	.dbline 103
; 				case	KEY_INC:
; 					value_table[j]++;
	ldi R24,<_value_table
	ldi R25,>_value_table
	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 104
; 					if(value_table[j]>9) value_table[j]=0;
	ldi R24,<_value_table
	ldi R25,>_value_table
	lds R30,_j
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldi R24,9
	cp R24,R2
	brsh L51
	.dbline 104
	ldi R24,<_value_table
	ldi R25,>_value_table
	lds R30,_j
	clr R31
	add R30,R24
	adc R31,R25
	clr R2
	std z+0,R2
L51:
	.dbline 105
; 			        LCD_write(j,0,value_table[j]+'0');
	ldi R24,<_value_table
	ldi R25,>_value_table
	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
	rcall _LCD_write
	.dbline 106
; 					break;
	rjmp L45
L53:
	.dbline 108
; 				case	KEY_DEC:
; 					value_table[j]--;
	ldi R24,<_value_table
	ldi R25,>_value_table
	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 109
; 					if(value_table[j]==255) value_table[j]=9;
	ldi R24,<_value_table
	ldi R25,>_value_table
	lds R30,_j
	clr R31
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,255
	brne L54
	.dbline 109
	ldi R24,<_value_table
	ldi R25,>_value_table
	lds R30,_j
	clr R31
	add R30,R24
	adc R31,R25
	ldi R24,9
	std z+0,R24
L54:
	.dbline 110
; 			        LCD_write(j,0,value_table[j]+'0');
	ldi R24,<_value_table
	ldi R25,>_value_table
	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
	rcall _LCD_write
	.dbline 111
; 					break;
	rjmp L45
L56:
	.dbline 113
; 			    case	KEY_FN:
; 			     	K1=value_table[0]+ value_table[1]*0.1+value_table[2]*0.01+value_table[3]*0.001+value_table[4]*0.0001;
	lds R16,_value_table
	clr R17
	rcall int2fp
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	ldi R16,<L20
	ldi R17,>L20
	rcall lpm32
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	lds R16,_value_table+1
	clr R17
	rcall int2fp
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	rcall mpy32fs
	rcall add32fs
	ldi R16,<L21
	ldi R17,>L21
	rcall lpm32
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	lds R16,_value_table+2
	clr R17
	rcall int2fp
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	rcall mpy32fs
	rcall add32fs
	ldi R16,<L22
	ldi R17,>L22
	rcall lpm32
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	lds R16,_value_table+3
	clr R17
	rcall int2fp
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	rcall mpy32fs
	rcall add32fs
	ldi R16,<L23
	ldi R17,>L23
	rcall lpm32
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	lds R16,_value_table+4
	clr R17
	rcall int2fp
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	rcall mpy32fs
	rcall add32f
	sts _K1+1,R17
	sts _K1,R16
	sts _K1+2+1,R19
	sts _K1+2,R18
	.dbline 114
; 					data_init(changK1());
	rcall _changK1
	rcall _data_init
	.dbline 115
; 					SaveToEEPROM(0,5,0);
	clr R2
	clr R3
	std y+1,R3
	std y+0,R2
	ldi R18,5
	clr R16
	rcall _SaveToEEPROM
	.dbline 116
; 					LCD_clr();
	rcall _LCD_clr
	.dbline 117
; 					LCD_display(0,0,4,Time1);
	lds R2,_Time1
	lds R3,_Time1+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
	clr R16
	rcall _LCD_display
	.dbline 118
; 					LCD_write_string(0,1,"^          Set T");
	ldi R24,<L61
	ldi R25,>L61
	std y+1,R25
	std y+0,R24
	ldi R18,1
	clr R16
	rcall _LCD_write_string
	.dbline 119
; 					j=0;
	clr R2
	sts _j,R2
	.dbline 120
; 					data_init(Time1);
	lds R16,_Time1
	lds R17,_Time1+1
	rcall _data_init
	.dbline 121
; 					flag=0;
	clr R20
	.dbline 122
; 					break;
L44:
L45:
	.dbline 124
L42:
	.dbline 91
	tst R20
	breq X6
	rjmp L41
X6:
	.dbline 125
; 				}
; 			}
; 			flag=1;
	ldi R20,1
	rjmp L63
L62:
	.dbline 127
; 	        while(flag)
; 			{
	.dbline 128
; 			    key_temp=keypad();
	rcall _keypad
	mov R10,R16
	.dbline 129
; 				switch(key_temp)
	mov R22,R10
	clr R23
	cpi R22,1
	ldi R30,0
	cpc R23,R30
	brne X7
	rjmp L85
X7:
	cpi R22,2
	ldi R30,0
	cpc R23,R30
	breq L68
	cpi R22,3
	ldi R30,0
	cpc R23,R30
	breq L71
	cpi R22,4
	ldi R30,0
	cpc R23,R30
	brne X8
	rjmp L78
X8:
	rjmp L65
X2:
	.dbline 130
; 				{
L68:
	.dbline 132
; 				case	KEY_CU:
; 					LCD_write(j,1,' ');
	ldi R24,32
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,1
	lds R16,_j
	rcall _LCD_write
	.dbline 133
; 					j++;
	lds R24,_j
	subi R24,255    ; addi 1
	sts _j,R24
	.dbline 134
; 					if(j>3)	j=0;
	ldi R24,3
	lds R2,_j
	cp R24,R2
	brsh L69
	.dbline 134
	clr R2
	sts _j,R2
L69:
	.dbline 135
; 					LCD_write(j,1,'^');
	ldi R24,94
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,1
	lds R16,_j
	rcall _LCD_write
	.dbline 136
; 					break;
	rjmp L66
L71:
	.dbline 138
; 				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 139
; 					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 L73
	.dbline 139
	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
L73:
	.dbline 140
; 			        LCD_write(j,0,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 R24,z+0
	clr R25
	adiw R24,48
	std y+1,R25
	std y+0,R24
	clr R18
	lds R16,_j
	rcall _LCD_write
	.dbline 141
; 					break;
	rjmp L66
L78:
	.dbline 143
; 				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 144
; 					if(value_table[j+1]==255) 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 R24,z+0
	cpi R24,255
	brne L80
	.dbline 144
	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
L80:
	.dbline 145
; 			        LCD_write(j,0,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 R24,z+0
	clr R25
	adiw R24,48
	std y+1,R25
	std y+0,R24
	clr R18
	lds R16,_j
	rcall _LCD_write
	.dbline 146
; 					break;
	rjmp L66
L85:
	.dbline 148
; 			    case	KEY_FN:
; 			     	Time1=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
	sts _Time1+1,R5
	sts _Time1,R4
	.dbline 149
; 					if(Time1<MIN_T) Time1=MIN_T;
	mov R24,R4
	mov R25,R5
	cpi R24,50
	ldi R30,0
	cpc R25,R30
	brsh L90
	.dbline 149
	ldi R24,50
	ldi R25,0
	sts _Time1+1,R25
	sts _Time1,R24
L90:
	.dbline 150
; 					data_init(Time1);
	lds R16,_Time1
	lds R17,_Time1+1
	rcall _data_init
	.dbline 151
; 					SaveToEEPROM(1,4,5);
	ldi R24,5
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,4
	ldi R16,1
	rcall _SaveToEEPROM
	.dbline 152
; 					goto mode_again;
	rjmp L26
L65:
L66:
	.dbline 154
L63:
	.dbline 126
	tst R20
	breq X9
	rjmp L62
X9:
	.dbline 155
; 				}
; 			}
;         }
L37:
	.dbline 156
L30:
	.dbline 63
	tst R20
	breq X10
	rjmp L29
X10:
L31:
	.dbline -2
	.dbline 157
;     }
; }
L19:
	adiw R28,6
	rcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r flag 20 c
	.dbsym r key_temp 10 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile D:\hujie\main.c
_Time1::
	.blkb 2
	.dbsym e Time1 _Time1 i
_j::
	.blkb 1
	.dbsym e j _j c
_value_temp::
	.blkb 2
	.dbsym e value_temp _value_temp i
_value_table::
	.blkb 5
	.dbsym e value_table _value_table A[5:5]c
_POUNT::
	.blkb 4
	.dbsym e POUNT _POUNT D
_time_count::
	.blkb 1
	.dbsym e time_count _time_count c
_DAC::
	.blkb 2
	.dbsym e DAC _DAC i
_ADC_GD::
	.blkb 2
	.dbsym e ADC_GD _ADC_GD i
_ADC::
	.blkb 2
	.dbsym e ADC _ADC i
_value::
	.blkb 2
	.dbsym e value _value i
	.area data(ram, con, rel)
	.dbfile D:\hujie\main.c
L61:
	.blkb 17
	.area idata
	.byte 94,32,32,32,32,32,32,32,32,32,32,'S,'e,'t,32,'T
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\hujie\main.c
L40:
	.blkb 17
	.area idata
	.byte 94,32,32,32,32,32,32,32,32,32,32,'S,'e,'t,32,'K
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\hujie\main.c
L39:
	.blkb 6
	.area idata
	.byte 45,49,48,'e,52,0
	.area data(ram, con, rel)
	.dbfile D:\hujie\main.c
	.area lit(rom, con, rel)
L36:
	.word 0x26e9,0x3fc1
	.area data(ram, con, rel)
	.dbfile D:\hujie\main.c
L28:
	.blkb 13
	.area idata
	.byte 'F,'n,58,'M,'o,'d,32,'C,58,'D,'e,'f,0
	.area data(ram, con, rel)
	.dbfile D:\hujie\main.c
L27:
	.blkb 15
	.area idata
	.byte 'K,61,32,32,32,32,32,44,'T,61,32,32,32,32,0
	.area data(ram, con, rel)
	.dbfile D:\hujie\main.c
	.area lit(rom, con, rel)
L23:
	.word 0xb717,0x38d1
L22:
	.word 0x126f,0x3a83
L21:
	.word 0xd70a,0x3c23
L20:
	.word 0xcccd,0x3dcc
L18:
	.word 0x0,0x4700
L17:
	.word 0x4000,0x461c
L14:
	.word 0x0,0x40d0
L13:
	.word 0x0,0x40d0

⌨️ 快捷键说明

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