📄 1.s
字号:
ldi R24,<L66
ldi R25,>L66
std y+1,R25
std y+0,R24
ldi R18,1
clr R16
xcall _LCD_write_string
.dbline -2
L65:
.dbline 0 ; func end
adiw R28,2
ret
.dbend
.dbfunc e get_adc _get_adc fV
.even
_get_adc::
sbiw R28,2
.dbline -1
.dbline 185
; }
;
; void get_adc()
; {
.dbline 186
; if(adc_old!=adc_rel)
lds R2,_adc_rel
lds R3,_adc_rel+1
lds R4,_adc_old
lds R5,_adc_old+1
cp R4,R2
cpc R5,R3
breq L68
X13:
.dbline 187
; {
.dbline 188
; adc_old=adc_rel;
sts _adc_old+1,R3
sts _adc_old,R2
.dbline 189
; ADCtoBCD(adc_old);
lds R16,_adc_old
lds R17,_adc_old+1
xcall _ADCtoBCD
.dbline 190
; }
L68:
.dbline 191
; LCD_write_shu(0,1,voltage);
lds R2,_voltage
lds R3,_voltage+1
std y+1,R3
std y+0,R2
ldi R18,1
ldi R19,0
clr R16
clr R17
xcall _LCD_write_shu
.dbline -2
L67:
.dbline 0 ; func end
adiw R28,2
ret
.dbend
.dbfunc e shaomiao _shaomiao fV
; i -> R20,R21
.even
_shaomiao::
st -y,R20
st -y,R21
sbiw R28,2
.dbline -1
.dbline 194
; }
; void shaomiao()
; {unsigned int i;
.dbline 195
; PORTC=0x89;
ldi R24,137
out 0x15,R24
.dbline 198
; //LCD_write_string(0,1,"shaomiao ");
;
; for(i=1000;i>0;i--)
ldi R20,1000
ldi R21,3
xjmp L74
L71:
.dbline 199
; {
.dbline 200
; get_adc();
xcall _get_adc
.dbline 201
; if( adc_x!=voltage)
lds R2,_voltage
lds R3,_voltage+1
lds R4,_adc_x
lds R5,_adc_x+1
cp R4,R2
cpc R5,R3
breq L75
X14:
.dbline 202
; {
.dbline 203
; adc_x=voltage;
sts _adc_x+1,R3
sts _adc_x,R2
.dbline 204
; if(adc_y>adc_x)
lds R2,_adc_x
lds R3,_adc_x+1
lds R4,_adc_y
lds R5,_adc_y+1
cp R2,R4
cpc R3,R5
brsh L72
X15:
.dbline 206
;
; adc_y=adc_x;
sts _adc_y+1,R3
sts _adc_y,R2
.dbline 208
; else
; continue;
L78:
.dbline 209
; }
L75:
.dbline 211
;
; LCD_write_shu(7,1,adc_y);
lds R2,_adc_y
lds R3,_adc_y+1
std y+1,R3
std y+0,R2
ldi R18,1
ldi R19,0
ldi R16,7
ldi R17,0
xcall _LCD_write_shu
.dbline 214
;
;
; }
L72:
.dbline 198
subi R20,1
sbci R21,0
L74:
.dbline 198
cpi R20,0
cpc R20,R21
brne L71
X16:
.dbline -2
L70:
.dbline 0 ; func end
adiw R28,2
ld R21,y+
ld R20,y+
ret
.dbsym r i 20 i
.dbend
.dbfunc e sound _sound fV
; a -> R20,R21
; n -> R10
; i -> R12
.even
_sound::
xcall push_xgset303C
mov R10,R18
mov R12,R16
.dbline -1
.dbline 220
;
;
; }
; //响声函数:入口i:响声长度i*10ms,n:响声次数
; void sound(uchar i,uchar n)
; {
.dbline 221
; for(;n;n--)
xjmp L83
L80:
.dbline 222
; {
.dbline 223
; uint a=i*10;
ldi R24,10
mul R24,R12
movw R20,R0
.dbline 224
; for(;a;a--)
xjmp L87
L84:
.dbline 225
; {
.dbline 226
; PORTC&=~(1<<7) ; //开蜂鸣器
cbi 0x15,7
.dbline 227
; delay_us(100);
ldi R16,100
ldi R17,0
xcall _delay_us
.dbline 228
; PORTC|=1<<7 ; //定义蜂鸣器关 //关蜂鸣器
sbi 0x15,7
.dbline 229
; delay_us(100);
ldi R16,100
ldi R17,0
xcall _delay_us
.dbline 230
; }
L85:
.dbline 224
subi R20,1
sbci R21,0
L87:
.dbline 224
cpi R20,0
cpc R20,R21
brne L84
X17:
.dbline 232
;
; }
L81:
.dbline 221
dec R10
L83:
.dbline 221
tst R10
brne L80
X18:
.dbline -2
L79:
.dbline 0 ; func end
xjmp pop_xgset303C
.dbsym r a 20 i
.dbsym r n 10 c
.dbsym r i 12 c
.dbend
.dbfunc e bizhan _bizhan fV
.even
_bizhan::
.dbline -1
.dbline 235
; }
; void bizhan()
; { sound(2,2);
.dbline 235
ldi R18,2
ldi R16,2
xcall _sound
.dbline 237
;
; if((PIND&0x07)==0)
in R24,0x10
andi R24,7
brne L89
X19:
.dbline 238
; {
.dbline 239
; houtui();
xcall _houtui
.dbline 241
;
; delay_ms(300);
ldi R16,300
ldi R17,1
xcall _delay_ms
.dbline 242
; youzhuan();
xcall _youzhuan
.dbline 244
;
; delay_ms(100);
ldi R16,100
ldi R17,0
xcall _delay_ms
.dbline 245
; }
L89:
.dbline 246
; if((PIND&0x01)==0)
sbic 0x10,0
rjmp L91
X20:
.dbline 247
; {
.dbline 248
; houtui();
xcall _houtui
.dbline 250
;
; delay_ms(300);
ldi R16,300
ldi R17,1
xcall _delay_ms
.dbline 251
; youzhuan();
xcall _youzhuan
.dbline 253
;
; delay_ms(100);
ldi R16,100
ldi R17,0
xcall _delay_ms
.dbline 254
; }
L91:
.dbline 256
;
; if ((PIND&0x02)==0)
sbic 0x10,1
rjmp L93
X21:
.dbline 257
; {
.dbline 258
; houtui();
xcall _houtui
.dbline 260
;
; delay_ms(300);
ldi R16,300
ldi R17,1
xcall _delay_ms
.dbline 261
; zuozhuan();
xcall _zuozhuan
.dbline 263
;
; delay_ms(100);
ldi R16,100
ldi R17,0
xcall _delay_ms
.dbline 264
; if((PIND&0x10)==0)qianjin();
sbic 0x10,4
rjmp L95
X22:
.dbline 264
xcall _qianjin
L95:
.dbline 265
; }
L93:
.dbline 270
;
;
;
;
; if((PIND&0x04)==0)
sbic 0x10,2
rjmp L97
X23:
.dbline 271
; {
.dbline 272
; houtui();
xcall _houtui
.dbline 274
;
; delay_ms(300);
ldi R16,300
ldi R17,1
xcall _delay_ms
.dbline 275
; zuozhuan();
xcall _zuozhuan
.dbline 277
;
; delay_ms(100);
ldi R16,100
ldi R17,0
xcall _delay_ms
.dbline 279
;
; if((PIND&0x10)==0)qianjin();
sbic 0x10,4
rjmp L99
X24:
.dbline 279
xcall _qianjin
L99:
.dbline 281
;
; }
L97:
.dbline 283
;
; if((PIND&0x10)==0)
sbic 0x10,4
rjmp L101
X25:
.dbline 284
; {
.dbline 285
; youzhuan();
xcall _youzhuan
.dbline 286
; delay_ms(100);
ldi R16,100
ldi R17,0
xcall _delay_ms
.dbline 287
; }
L101:
.dbline 288
; if((PIND&0x08)==0)
sbic 0x10,3
rjmp L103
X26:
.dbline 289
; {
.dbline 290
; zuozhuan();
xcall _zuozhuan
.dbline 291
; delay_ms(100);
ldi R16,100
ldi R17,0
xcall _delay_ms
.dbline 292
; }
L103:
.dbline -2
L88:
.dbline 0 ; func end
ret
.dbend
.dbfunc e main _main fV
; k -> R20,R21
.even
_main::
sbiw R28,2
.dbline -1
.dbline 299
; }
;
;
;
; //主函数
; void main(void)
; {
.dbline 301
; unsigned int k;
; adc_mux=0;
clr R2
sts _adc_mux,R2
.dbline 303
; //unsigned int min_old;
; init_devices();
xcall _init_devices
.dbline 305
; //在这继续添加你的代码
; LCD_init();
xcall _LCD_init
.dbline 306
; DDRC=0xFF;
ldi R24,255
out 0x14,R24
.dbline 307
; PORTC=0xff;
out 0x15,R24
.dbline 308
; DDRD=0x00;
clr R2
out 0x11,R2
.dbline 309
; PORTD=0xff;
out 0x12,R24
.dbline 310
; delay_ms(100);
ldi R16,100
ldi R17,0
xcall _delay_ms
.dbline 311
; LCD_write_command(0x01); //清屏
ldi R16,1
xcall _LCD_write_command
.dbline 312
; delay_ms(10);
ldi R16,10
ldi R17,0
xcall _delay_ms
.dbline 313
; LCD_write_string(0,0,"Test RObot");
ldi R24,<L106
ldi R25,>L106
std y+1,R25
std y+0,R24
clr R18
clr R16
xcall _LCD_write_string
.dbline 314
; delay_ms(100);
ldi R16,100
ldi R17,0
xcall _delay_ms
.dbline 315
; LCD_write_command(0x01); //清屏
ldi R16,1
xcall _LCD_write_command
.dbline 316
; for(k=0;k<200;k++)
clr R20
clr R21
xjmp L110
L107:
.dbline 318
;
; adc_old=0;
clr R2
clr R3
sts _adc_old+1,R3
sts _adc_old,R2
L108:
.dbline 316
subi R20,255 ; offset = 1
sbci R21,255
L110:
.dbline 316
cpi R20,200
ldi R30,0
cpc R21,R30
brlo L107
X27:
.dbline 319
; adc_rel=0;
clr R2
clr R3
sts _adc_rel+1,R3
sts _adc_rel,R2
.dbline 320
; adc_y=2670;
ldi R24,2670
ldi R25,10
sts _adc_y+1,R25
sts _adc_y,R24
.dbline 321
; adc_x=voltage;
lds R2,_voltage
lds R3,_voltage+1
sts _adc_x+1,R3
sts _adc_x,R2
.dbline 323
;
; shaomiao();
xcall _shaomiao
.dbline 324
; LCD_write_command(0x01); //清屏
ldi R16,1
xcall _LCD_write_command
.dbline 325
; stop();
xcall _stop
.dbline 326
; delay_ms(300);
ldi R16,300
ldi R17,1
xcall _delay_ms
xjmp L112
L111:
.dbline 328
; while(1)
; {
.dbline 330
;
; get_adc();
xcall _get_adc
.dbline 332
; //get_min();
; if((PIND&0xFF)!=0xff)
in R24,0x10
andi R24,255
cpi R24,255
breq L114
X28:
.dbline 333
; {
.dbline 334
; delay_ms(10);
ldi R16,10
ldi R17,0
xcall _delay_ms
.dbline 335
; if((PIND&0xFF)!=0xff)bizhan();
in R24,0x10
andi R24,255
cpi R24,255
brne X38
xjmp L115
X38:
X29:
.dbline 335
xcall _bizhan
.dbline 336
; }
xjmp L115
L114:
.dbline 339
;
;
; else if(voltage>(adc_y+80))
lds R24,_adc_y
lds R25,_adc_y+1
subi R24,176 ; offset = 80
sbci R25,255
lds R2,_voltage
lds R3,_voltage+1
cp R24,R2
cpc R25,R3
brsh L118
X30:
.dbline 340
; {
.dbline 341
; if((V0+200)<V3)
lds R2,_V3
lds R3,_V3+1
lds R24,_V0
lds R25,_V0+1
subi R24,56 ; offset = 200
sbci R25,255
cp R24,R2
cpc R25,R3
brsh L120
X31:
.dbline 342
; youzhuan();
xcall _youzhuan
xjmp L119
L120:
.dbline 343
; else if ((V3+200)<V0)
lds R2,_V0
lds R3,_V0+1
lds R24,_V3
lds R25,_V3+1
subi R24,56 ; offset = 200
sbci R25,255
cp R24,R2
cpc R25,R3
brsh L122
X32:
.dbline 344
; zuozhuan();
xcall _zuozhuan
xjmp L119
L122:
.dbline 346
; else
; zuozhuan();
xcall _zuozhuan
.dbline 347
; }
xjmp L119
L118:
.dbline 349
;
; else if (V2<(adc_y+80))
lds R24,_adc_y
lds R25,_adc_y+1
subi R24,176 ; offset = 80
sbci R25,255
lds R2,_V2
lds R3,_V2+1
cp R2,R24
cpc R3,R25
brsh L124
X33:
.dbline 350
; {
.dbline 351
; if (voltage<adc_y)
lds R2,_adc_y
lds R3,_adc_y+1
lds R4,_voltage
lds R5,_voltage+1
cp R4,R2
cpc R5,R3
brsh L126
X34:
.dbline 352
; adc_y=voltage;
movw R2,R4
sts _adc_y+1,R3
sts _adc_y,R2
xjmp L125
L126:
.dbline 354
; else
; qianjin();
xcall _qianjin
.dbline 355
; }
xjmp L125
L124:
.dbline 356
; else if (V1<(adc_y+80))
lds R24,_adc_y
lds R25,_adc_y+1
subi R24,176 ; offset = 80
sbci R25,255
lds R2,_V1
lds R3,_V1+1
cp R2,R24
cpc R3,R25
brsh L128
X35:
.dbline 357
; {
.dbline 358
; if (voltage<adc_y)
lds R2,_adc_y
lds R3,_adc_y+1
lds R4,_voltage
lds R5,_voltage+1
cp R4,R2
cpc R5,R3
brsh L130
X36:
.dbline 359
; adc_y=voltage;
movw R2,R4
sts _adc_y+1,R3
sts _adc_y,R2
xjmp L131
L130:
.dbline 361
; else
; qianjin();
xcall _qianjin
L131:
.dbline 362
; }
L128:
L125:
L119:
L115:
.dbline 363
; }
L112:
.dbline 327
xjmp L111
X37:
.dbline -2
L105:
.dbline 0 ; func end
adiw R28,2
ret
.dbsym r k 20 i
.dbend
.area bss(ram, con, rel)
.dbfile C:\DOCUME~1\qiuqiu\桌面\测试\1\1.c
_adc_y::
.blkb 2
.dbsym e adc_y _adc_y i
_adc_x::
.blkb 2
.dbsym e adc_x _adc_x i
_V3::
.blkb 2
.dbsym e V3 _V3 i
_V2::
.blkb 2
.dbsym e V2 _V2 i
_V1::
.blkb 2
.dbsym e V1 _V1 i
_V0::
.blkb 2
.dbsym e V0 _V0 i
_adc_old::
.blkb 2
.dbsym e adc_old _adc_old i
_voltage::
.blkb 2
.dbsym e voltage _voltage i
_adc_mux::
.blkb 1
.dbsym e adc_mux _adc_mux c
_adc_rel::
.blkb 2
.dbsym e adc_rel _adc_rel i
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\qiuqiu\桌面\测试\1\1.c
L106:
.blkb 11
.area idata
.byte 'T,'e,'s,'t,32,'R,'O,'b,'o,'t,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\qiuqiu\桌面\测试\1\1.c
L66:
.blkb 8
.area idata
.byte 's,'t,'o,'p,32,32,32,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\qiuqiu\桌面\测试\1\1.c
L64:
.blkb 9
.area idata
.byte 'y,'o,'u,'z,'h,'u,'a,'n,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\qiuqiu\桌面\测试\1\1.c
L62:
.blkb 9
.area idata
.byte 'z,'u,'o,'z,'h,'u,'a,'n,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\qiuqiu\桌面\测试\1\1.c
L60:
.blkb 10
.area idata
.byte 'h,'o,'u,'t,'u,'i,32,32,32,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\qiuqiu\桌面\测试\1\1.c
L58:
.blkb 10
.area idata
.byte 'q,'i,'a,'n,'j,'i,'n,32,32,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\qiuqiu\桌面\测试\1\1.c
;
; }
;
;
;
;
;
;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -