📄 main.s
字号:
.dbline 157
; break;
xjmp L27
L36:
.dbline 158
; case 0b00100111:key_return=10;
ldi R20,10
ldi R21,0
.dbline 159
; break;
xjmp L27
L37:
.dbline 160
; case 0b01001110:key_return=1;
ldi R20,1
ldi R21,0
.dbline 161
; break;
xjmp L27
L38:
.dbline 162
; case 0b01001101:key_return=2;
ldi R20,2
ldi R21,0
.dbline 163
; break;
xjmp L27
L39:
.dbline 164
; case 0b01001011:key_return=3;
ldi R20,3
ldi R21,0
.dbline 165
; break;
xjmp L27
L40:
.dbline 166
; case 0b01000111:key_return=12;
ldi R20,12
ldi R21,0
.dbline 167
; break;
xjmp L27
L41:
.dbline 168
; case 0b10001110:key_return=0;
clr R20
clr R21
.dbline 169
; break;
xjmp L27
L42:
.dbline 170
; case 0b10001101:key_return=13;//小数点
ldi R20,13
ldi R21,0
.dbline 171
; break;
xjmp L27
L43:
.dbline 172
; case 0b10001011:key_return=14;//ENTER
ldi R20,14
ldi R21,0
.dbline 173
; break;
xjmp L27
L44:
.dbline 174
; case 0b10000111:key_return=15;//启动自动扫描
ldi R20,15
ldi R21,0
.dbline 175
; break;
L26:
L27:
.dbline 177
; }
; }
L24:
.dbline 178
; return key_return;
movw R16,R20
.dbline -2
L15:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r key_return 20 i
.dbsym r i 22 c
.dbend
.dbfunc e read_keyvalue _read_keyvalue fV
; i -> R22,R23
; temp -> R20,R21
; keycode -> R22
.even
_read_keyvalue::
xcall push_gset2
.dbline -1
.dbline 183
; }
;
;
; void read_keyvalue()
; {
.dbline 184
; uint temp=0;
clr R20
clr R21
.dbline 185
; uint i=0;
clr R22
clr R23
.dbline 186
; uchar keycode=16;
ldi R22,16
.dbline 187
; keycode=KeyScan();
xcall _KeyScan
mov R22,R16
.dbline 188
; if(((keycode >=0)&&(keycode <=9)&&(cn < 4))||((keycode ==13)&&(cn == 1)))
cpi R16,0
brlo L53
ldi R24,9
cp R24,R16
brlo L53
lds R24,_cn
cpi R24,4
brlo L51
L53:
cpi R22,13
breq X17
xjmp L49
X17:
lds R24,_cn
cpi R24,1
breq X18
xjmp L49
X18:
L51:
.dbline 189
; {
.dbline 190
; cn++;
lds R24,_cn
subi R24,255 ; addi 1
sts _cn,R24
.dbline 191
; switch(keycode)
clr R23
cpi R22,0
cpc R22,R23
brne X19
xjmp L57
X19:
X15:
cpi R22,1
ldi R30,0
cpc R23,R30
brne X20
xjmp L58
X20:
cpi R22,2
ldi R30,0
cpc R23,R30
brne X21
xjmp L59
X21:
cpi R22,3
ldi R30,0
cpc R23,R30
brne X22
xjmp L60
X22:
cpi R22,4
ldi R30,0
cpc R23,R30
brne X23
xjmp L61
X23:
cpi R22,5
ldi R30,0
cpc R23,R30
brne X24
xjmp L62
X24:
cpi R22,6
ldi R30,0
cpc R23,R30
brne X25
xjmp L63
X25:
cpi R22,7
ldi R30,0
cpc R23,R30
brne X26
xjmp L64
X26:
cpi R22,8
ldi R30,0
cpc R23,R30
brne X27
xjmp L65
X27:
cpi R22,9
ldi R30,0
cpc R23,R30
brne X28
xjmp L66
X28:
cpi R22,13
ldi R30,0
cpc R23,R30
brne X29
xjmp L67
X29:
xjmp L54
X16:
.dbline 193
;
; {
L57:
.dbline 195
;
; case 0:temp=0;SET_VALUE[cn]=temp;break;
clr R20
clr R21
.dbline 195
lds R2,_cn
ldi R24,2
mul R24,R2
movw R30,R0
ldi R24,<_SET_VALUE
ldi R25,>_SET_VALUE
add R30,R24
adc R31,R25
std z+1,R21
std z+0,R20
.dbline 195
xjmp L55
L58:
.dbline 197
;
; case 1:temp=1;SET_VALUE[cn]=temp;break;
ldi R20,1
ldi R21,0
.dbline 197
lds R2,_cn
ldi R24,2
mul R24,R2
movw R30,R0
ldi R24,<_SET_VALUE
ldi R25,>_SET_VALUE
add R30,R24
adc R31,R25
std z+1,R21
std z+0,R20
.dbline 197
xjmp L55
L59:
.dbline 199
;
; case 2:temp=2;SET_VALUE[cn]=temp;break;
ldi R20,2
ldi R21,0
.dbline 199
lds R2,_cn
ldi R24,2
mul R24,R2
movw R30,R0
ldi R24,<_SET_VALUE
ldi R25,>_SET_VALUE
add R30,R24
adc R31,R25
std z+1,R21
std z+0,R20
.dbline 199
xjmp L55
L60:
.dbline 201
;
; case 3:temp=3;SET_VALUE[cn]=temp;break;
ldi R20,3
ldi R21,0
.dbline 201
lds R2,_cn
ldi R24,2
mul R24,R2
movw R30,R0
ldi R24,<_SET_VALUE
ldi R25,>_SET_VALUE
add R30,R24
adc R31,R25
std z+1,R21
std z+0,R20
.dbline 201
xjmp L55
L61:
.dbline 203
;
; case 4:temp=4;SET_VALUE[cn]=temp;break;
ldi R20,4
ldi R21,0
.dbline 203
lds R2,_cn
ldi R24,2
mul R24,R2
movw R30,R0
ldi R24,<_SET_VALUE
ldi R25,>_SET_VALUE
add R30,R24
adc R31,R25
std z+1,R21
std z+0,R20
.dbline 203
xjmp L55
L62:
.dbline 205
;
; case 5:temp=5;SET_VALUE[cn]=temp;break;
ldi R20,5
ldi R21,0
.dbline 205
lds R2,_cn
ldi R24,2
mul R24,R2
movw R30,R0
ldi R24,<_SET_VALUE
ldi R25,>_SET_VALUE
add R30,R24
adc R31,R25
std z+1,R21
std z+0,R20
.dbline 205
xjmp L55
L63:
.dbline 207
;
; case 6:temp=6;SET_VALUE[cn]=temp;break;
ldi R20,6
ldi R21,0
.dbline 207
lds R2,_cn
ldi R24,2
mul R24,R2
movw R30,R0
ldi R24,<_SET_VALUE
ldi R25,>_SET_VALUE
add R30,R24
adc R31,R25
std z+1,R21
std z+0,R20
.dbline 207
xjmp L55
L64:
.dbline 209
;
; case 7:temp=7;SET_VALUE[cn]=temp;break;
ldi R20,7
ldi R21,0
.dbline 209
lds R2,_cn
ldi R24,2
mul R24,R2
movw R30,R0
ldi R24,<_SET_VALUE
ldi R25,>_SET_VALUE
add R30,R24
adc R31,R25
std z+1,R21
std z+0,R20
.dbline 209
xjmp L55
L65:
.dbline 211
;
; case 8:temp=8;SET_VALUE[cn]=temp;break;
ldi R20,8
ldi R21,0
.dbline 211
lds R2,_cn
ldi R24,2
mul R24,R2
movw R30,R0
ldi R24,<_SET_VALUE
ldi R25,>_SET_VALUE
add R30,R24
adc R31,R25
std z+1,R21
std z+0,R20
.dbline 211
xjmp L55
L66:
.dbline 213
;
; case 9:temp=9;SET_VALUE[cn]=temp;break;
ldi R20,9
ldi R21,0
.dbline 213
lds R2,_cn
ldi R24,2
mul R24,R2
movw R30,R0
ldi R24,<_SET_VALUE
ldi R25,>_SET_VALUE
add R30,R24
adc R31,R25
std z+1,R21
std z+0,R20
.dbline 213
xjmp L55
L67:
.dbline 215
;
; case 13:temp=0x2e;SET_VALUE[cn]=temp;break;
ldi R20,46
ldi R21,0
.dbline 215
lds R2,_cn
ldi R24,2
mul R24,R2
movw R30,R0
ldi R24,<_SET_VALUE
ldi R25,>_SET_VALUE
add R30,R24
adc R31,R25
std z+1,R21
std z+0,R20
.dbline 215
L54:
L55:
.dbline 220
;
;
; }
;
; if((cn==2)&&(SET_VALUE[2]!=0x2e))
lds R24,_cn
cpi R24,2
brne L68
lds R24,_SET_VALUE+4
lds R25,_SET_VALUE+4+1
cpi R24,46
ldi R30,0
cpc R25,R30
breq L68
.dbline 221
; {
.dbline 222
; Write_Position(1,5);
ldi R18,5
ldi R19,0
ldi R16,1
ldi R17,0
xcall _Write_Position
.dbline 223
; Write_String(error);
ldi R16,<_error
ldi R17,>_error
xcall _Write_String
.dbline 224
; }
L68:
.dbline 225
; Set_Value=10*SET_VALUE[1]+SET_VALUE[3];
lds R18,_SET_VALUE+2
lds R19,_SET_VALUE+2+1
ldi R16,10
ldi R17,0
xcall empy16s
movw R2,R16
lds R4,_SET_VALUE+6
lds R5,_SET_VALUE+6+1
add R2,R4
adc R3,R5
sts _Set_Value+1,R3
sts _Set_Value,R2
.dbline 226
; Display_VOL();
xcall _Display_VOL
.dbline 227
; }
L49:
.dbline 229
;
; if(cn == 3)//输入预定电压值完毕
lds R24,_cn
cpi R24,3
brne L73
.dbline 230
; {
.dbline 232
;
; if(KeyScan()==14)//等待ENTER键按下
xcall _KeyScan
cpi R16,14
ldi R30,0
cpc R17,R30
brne L75
.dbline 233
; {
.dbline 234
; cn=0;
clr R2
sts _cn,R2
.dbline 235
; ENTER=1;
ldi R24,1
sts _ENTER,R24
.dbline 236
; }
L75:
.dbline 237
; }
L73:
.dbline 239
;
; if(KeyScan()==11)
xcall _KeyScan
cpi R16,11
ldi R30,0
cpc R17,R30
brne L77
.dbline 240
; {
.dbline 241
; ahead_flag=1;
ldi R24,1
sts _ahead_flag,R24
.dbline 242
; }
L77:
.dbline 243
; if(KeyScan()==10)
xcall _KeyScan
cpi R16,10
ldi R30,0
cpc R17,R30
brne L79
.dbline 244
; {
.dbline 245
; back_flag=1;
ldi R24,1
sts _back_flag,R24
.dbline 246
; }
L79:
.dbline 247
xcall _KeyScan
cpi R16,12
ldi R30,0
cpc R17,R30
brne L81
.dbline 248
.dbline 249
ldi R24,1
sts _clear_flag,R24
.dbline 250
L81:
.dbline -2
L48:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 22 i
.dbsym r temp 20 i
.dbsym r keycode 22 c
.dbend
.area data(ram, con, rel)
.dbfile E:\张秋伟\我的实验\数控电压源\main.c
_auto_flag:
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile E:\张秋伟\我的实验\数控电压源\main.c
.dbsym s auto_flag _auto_flag c
.area text(rom, con, rel)
.dbfile E:\张秋伟\我的实验\数控电压源\main.c
.dbfunc e signal_function _signal_function fV
; i -> R20,R21
.even
_signal_function::
xcall push_gset1
.dbline -1
.dbline 258
; if(KeyScan()== 12)
; {
; clear_flag=1;
; }
;
;
;
; }
;
; static uchar auto_flag=0;
; void signal_function(void)
; {
.dbline 259
; switch(auto_flag)
lds R20,_auto_flag
clr R21
cpi R20,0
cpc R20,R21
breq L87
X30:
cpi R20,1
ldi R30,0
cpc R21,R30
breq L91
cpi R20,2
ldi R30,0
cpc R21,R30
brne X34
xjmp L97
X34:
cpi R20,3
ldi R30,0
cpc R21,R30
brne X35
xjmp L103
X35:
cpi R20,4
ldi R30,0
cpc R21,R30
brne X36
xjmp L110
X36:
xjmp L84
X31:
.dbline 260
; {
L87:
.dbline 261
; case 0:Write_Position(1,12);
ldi R18,12
ldi R19,0
ldi R16,1
ldi R17,0
xcall _Write_Position
.dbline 262
; Write_String("off");
ldi R16,<L88
ldi R17,>L88
xcall _Write_String
.dbline 263
; if(KeyScan()==15)
xcall _KeyScan
cpi R16,15
ldi R30,0
cpc R17,R30
breq X37
xjmp L85
X37:
.dbline 264
; auto_flag=1;
ldi R24,1
sts _auto_flag,R24
.dbline 265
; break;
xjmp L85
L91:
.dbline 267
; case 1:
; Write_Position(1,12);
ldi R18,12
ldi R19,0
ldi R16,1
ldi R17,0
xcall _Write_Position
.dbline 268
; Write_String("+ ");
ldi R16,<L92
ldi R17,>L92
xcall _Write_String
.dbline 269
; if(Set_Value<99)
lds R24,_Set_Value
lds R25,_Set_Value+1
cpi R24,99
ldi R30,0
cpc R25,R30
brsh L93
.dbline 270
; {
.dbline 271
; Set_Value++;
adiw R24,1
sts _Set_Value+1,R25
sts _Set_Value,R24
.dbline 272
; DAC_DATA=Set_Value;
out 0x18,R24
.dbline 273
; control();
xcall _control
.dbline 274
; }
xjmp L94
L93:
.dbline 276
; else
; auto_flag=2;
ldi R24,2
sts _auto_flag,R24
L94:
.dbline 277
; if(KeyScan()==15)
xcall _KeyScan
cpi R16,15
ldi R30,0
cpc R17,R30
breq X38
xjmp L85
X38:
.dbline 278
; auto_flag=2;
ldi R24,2
sts _auto_flag,R24
.dbline 279
; break;
xjmp L85
L97:
.dbline 281
; case 2:
; Write_Position(1,12);
ldi R18,12
ldi R19,0
ldi R16,1
ldi R17,0
xcall _Write_Position
.dbline 282
; Write_String("- ");
ldi R16,<L98
ldi R17,>L98
xcall _Write_String
.dbline 283
; if(Set_Value>0)
lds R2,_Set_Value
lds R3,_Set_Value+1
tst R2
brne X32
tst R3
breq L99
X32:
.dbline 284
; {
.dbline 285
; Set_Value--;
lds R24,_Set_Value
lds R25,_Set_Value+1
sbiw R24,1
sts _Set_Value+1,R25
sts _Set_Value,R24
.dbline 286
; DAC_DATA=Set_Value;
out 0x18,R24
.dbline 287
; control();
xcall _control
.dbline 288
; }
xjmp L100
L99:
.dbline 290
; else
; auto_flag=1;
ldi R24,1
sts _auto_flag,R24
L100:
.dbline 291
; if(KeyScan()==15)
xcall _KeyScan
cpi R16,15
ldi R30,0
cpc R17,R30
breq X39
xjmp L85
X39:
.dbline 292
; auto_flag=3;
ldi R24,3
sts _auto_flag,R24
.dbline 293
; break;
xjmp L85
L103:
.dbline 294
; case 3:Write_Position(1,12);
ldi R18,12
ldi R19,0
ldi R16,1
ldi R17,0
xcall _Write_Position
.dbline 295
; Write_String("squ");
ldi R16,<L104
ldi R17,>L104
xcall _Write_String
xjmp L106
L105:
.dbline 297
; while(auto_flag ==3)
; {
.dbline 298
; DAC_DATA=0x00;
clr R2
out 0x18,R2
.dbline 299
; delay_nms(50);
ldi R16,50
ldi R17,0
xcall _delay_nms
.dbline 300
; DAC_DATA=0xff;
ldi R24,255
out 0x18,R24
.dbline 301
; delay_nms(10);
ldi R16,10
ldi R17,0
xcall _delay_nms
.dbline 302
; if(KeyScan()==15)
xcall _KeyScan
cpi R16,15
ldi R30,0
cpc R17,R30
brne L108
.dbline 303
; auto_flag=4;
ldi R24,4
sts _auto_flag,R24
L108:
.dbline 304
L106:
.dbline 296
lds R24,_auto_flag
cpi R24,3
breq L105
.dbline 305
; }
; break;
xjmp L85
L110:
.dbline 307
; case 4:
; Write_Position(1,12);
ldi R18,12
ldi R19,0
ldi R16,1
ldi R17,0
xcall _Write_Position
.dbline 308
; Write_String("saw");
ldi R16,<L111
ldi R17,>L111
xcall _Write_String
xjmp L113
L112:
.dbline 310
; while(auto_flag == 4)
; {
.dbline 311
; uint i=255;
ldi R20,255
ldi R21,0
.dbline 313
;
; for(;i>0;i--)
xjmp L118
L115:
.dbline 314
.dbline 315
out 0x18,R20
.dbline 316
ldi R16,10
ldi R17,0
xcall _delay_nus
.dbline 317
L116:
.dbline 313
subi R20,1
sbci R21,0
L118:
.dbline 313
cpi R20,0
cpc R20,R21
brne L115
X33:
.dbline 318
; {
; DAC_DATA=i;
; delay_nus(10);
; }
; if(KeyScan()==15)
xcall _KeyScan
cpi R16,15
ldi R30,0
cpc R17,R30
brne L119
.dbline 319
; auto_flag=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -