?? 1.lst
字號:
(0196) //LCD_write_string(0,1,"shaomiao ");
(0197)
(0198) for(i=1000;i>0;i--)
3E8 EE48 LDI R20,0xE8
3E9 E053 LDI R21,3
3EA C02C RJMP 0x0417
(0199) {
(0200) get_adc();
3EB DFD5 RCALL _get_adc
(0201) if( adc_x!=voltage)
3EC 9020 00B2 LDS R2,voltage
3EE 9030 00B3 LDS R3,voltage+1
3F0 9040 00A6 LDS R4,adc_x
3F2 9050 00A7 LDS R5,adc_x+1
3F4 1442 CP R4,R2
3F5 0453 CPC R5,R3
3F6 F099 BEQ 0x040A
(0202) {
(0203) adc_x=voltage;
3F7 9230 00A7 STS adc_x+1,R3
3F9 9220 00A6 STS adc_x,R2
(0204) if(adc_y>adc_x)
3FB 9020 00A6 LDS R2,adc_x
3FD 9030 00A7 LDS R3,adc_x+1
3FF 9040 00A4 LDS R4,adc_y
401 9050 00A5 LDS R5,adc_y+1
403 1424 CP R2,R4
404 0435 CPC R3,R5
405 F478 BCC 0x0415
(0205)
(0206) adc_y=adc_x;
406 9230 00A5 STS adc_y+1,R3
408 9220 00A4 STS adc_y,R2
(0207) else
(0208) continue;
(0209) }
(0210)
(0211) LCD_write_shu(7,1,adc_y);
40A 9020 00A4 LDS R2,adc_y
40C 9030 00A5 LDS R3,adc_y+1
40E 8239 STD Y+1,R3
40F 8228 STD Y+0,R2
410 E021 LDI R18,1
411 E030 LDI R19,0
412 E007 LDI R16,7
413 E010 LDI R17,0
414 DDAA RCALL _LCD_write_shu
415 5041 SUBI R20,1
416 4050 SBCI R21,0
417 3040 CPI R20,0
418 0745 CPC R20,R21
419 F689 BNE 0x03EB
41A 9622 ADIW R28,2
41B 9159 LD R21,Y+
41C 9149 LD R20,Y+
41D 9508 RET
_sound:
a --> R20
n --> R10
i --> R12
41E 940E 065C CALL push_xgset303C
420 2EA2 MOV R10,R18
421 2EC0 MOV R12,R16
(0212)
(0213)
(0214) }
(0215)
(0216)
(0217) }
(0218) //響聲函數:入口i:響聲長度i*10ms,n:響聲次數
(0219) void sound(uchar i,uchar n)
(0220) {
(0221) for(;n;n--)
422 C012 RJMP 0x0435
(0222) {
(0223) uint a=i*10;
423 E08A LDI R24,0xA
424 9D8C MUL R24,R12
425 01A0 MOVW R20,R0
(0224) for(;a;a--)
426 C00A RJMP 0x0431
(0225) {
(0226) PORTC&=~(1<<7) ; //開蜂鳴器
427 98AF CBI 0x15,7
(0227) delay_us(100);
428 E604 LDI R16,0x64
429 E010 LDI R17,0
42A DE51 RCALL _delay_us
(0228) PORTC|=1<<7 ; //定義蜂鳴器關 //關蜂鳴器
42B 9AAF SBI 0x15,7
(0229) delay_us(100);
42C E604 LDI R16,0x64
42D E010 LDI R17,0
42E DE4D RCALL _delay_us
42F 5041 SUBI R20,1
430 4050 SBCI R21,0
431 3040 CPI R20,0
432 0745 CPC R20,R21
433 F799 BNE 0x0427
434 94AA DEC R10
435 20AA TST R10
436 F761 BNE 0x0423
437 940C 0663 JMP pop_xgset303C
(0230) }
(0231)
(0232) }
(0233) }
(0234) void bizhan()
(0235) { sound(2,2);
_bizhan:
439 E022 LDI R18,2
43A E002 LDI R16,2
43B DFE2 RCALL _sound
(0236)
(0237) if((PIND&0x07)==0)
43C B380 IN R24,0x10
43D 7087 ANDI R24,7
43E F441 BNE 0x0447
(0238) {
(0239) houtui();
43F DF51 RCALL _houtui
(0240)
(0241) delay_ms(300);
440 E20C LDI R16,0x2C
441 E011 LDI R17,1
442 DE41 RCALL _delay_ms
(0242) youzhuan();
443 DF65 RCALL _youzhuan
(0243)
(0244) delay_ms(100);
444 E604 LDI R16,0x64
445 E010 LDI R17,0
446 DE3D RCALL _delay_ms
(0245) }
(0246) if((PIND&0x01)==0)
447 9980 SBIC 0x10,0
448 C008 RJMP 0x0451
(0247) {
(0248) houtui();
449 DF47 RCALL _houtui
(0249)
(0250) delay_ms(300);
44A E20C LDI R16,0x2C
44B E011 LDI R17,1
44C DE37 RCALL _delay_ms
(0251) youzhuan();
44D DF5B RCALL _youzhuan
(0252)
(0253) delay_ms(100);
44E E604 LDI R16,0x64
44F E010 LDI R17,0
450 DE33 RCALL _delay_ms
(0254) }
(0255)
(0256) if ((PIND&0x02)==0)
451 9981 SBIC 0x10,1
452 C00B RJMP 0x045E
(0257) {
(0258) houtui();
453 DF3D RCALL _houtui
(0259)
(0260) delay_ms(300);
454 E20C LDI R16,0x2C
455 E011 LDI R17,1
456 DE2D RCALL _delay_ms
(0261) zuozhuan();
457 DF45 RCALL _zuozhuan
(0262)
(0263) delay_ms(100);
458 E604 LDI R16,0x64
459 E010 LDI R17,0
45A DE29 RCALL _delay_ms
(0264) if((PIND&0x10)==0)qianjin();
45B 9984 SBIC 0x10,4
45C C001 RJMP 0x045E
45D DF27 RCALL _qianjin
(0265) }
(0266)
(0267)
(0268)
(0269)
(0270) if((PIND&0x04)==0)
45E 9982 SBIC 0x10,2
45F C00B RJMP 0x046B
(0271) {
(0272) houtui();
460 DF30 RCALL _houtui
(0273)
(0274) delay_ms(300);
461 E20C LDI R16,0x2C
462 E011 LDI R17,1
463 DE20 RCALL _delay_ms
(0275) zuozhuan();
464 DF38 RCALL _zuozhuan
(0276)
(0277) delay_ms(100);
465 E604 LDI R16,0x64
466 E010 LDI R17,0
467 DE1C RCALL _delay_ms
(0278)
(0279) if((PIND&0x10)==0)qianjin();
468 9984 SBIC 0x10,4
469 C001 RJMP 0x046B
46A DF1A RCALL _qianjin
(0280)
(0281) }
(0282)
(0283) if((PIND&0x10)==0)
46B 9984 SBIC 0x10,4
46C C004 RJMP 0x0471
(0284) {
(0285) youzhuan();
46D DF3B RCALL _youzhuan
(0286) delay_ms(100);
46E E604 LDI R16,0x64
46F E010 LDI R17,0
470 DE13 RCALL _delay_ms
(0287) }
(0288) if((PIND&0x08)==0)
471 9983 SBIC 0x10,3
472 C004 RJMP 0x0477
(0289) {
(0290) zuozhuan();
473 DF29 RCALL _zuozhuan
(0291) delay_ms(100);
474 E604 LDI R16,0x64
475 E010 LDI R17,0
476 DE0D RCALL _delay_ms
(0292) }
477 9508 RET
_main:
k --> R20
478 9722 SBIW R28,2
(0293) }
(0294)
(0295)
(0296)
(0297) //主函數
(0298) void main(void)
(0299) {
(0300) unsigned int k;
(0301) adc_mux=0;
479 2422 CLR R2
47A 9220 00B4 STS adc_mux,R2
(0302) //unsigned int min_old;
(0303) init_devices();
47C DEFD RCALL _init_devices
(0304) //在這繼續添加你的代碼
(0305) LCD_init();
47D DBF1 RCALL _LCD_init
(0306) DDRC=0xFF;
47E EF8F LDI R24,0xFF
47F BB84 OUT 0x14,R24
(0307) PORTC=0xff;
480 BB85 OUT 0x15,R24
(0308) DDRD=0x00;
481 2422 CLR R2
482 BA21 OUT 0x11,R2
(0309) PORTD=0xff;
483 BB82 OUT 0x12,R24
(0310) delay_ms(100);
484 E604 LDI R16,0x64
485 E010 LDI R17,0
486 DDFD RCALL _delay_ms
(0311) LCD_write_command(0x01); //清屏
487 E001 LDI R16,1
488 DC01 RCALL _LCD_write_command
(0312) delay_ms(10);
489 E00A LDI R16,0xA
48A E010 LDI R17,0
48B DDF8 RCALL _delay_ms
(0313) LCD_write_string(0,0,"Test RObot");
48C E68B LDI R24,0x6B
48D E090 LDI R25,0
48E 8399 STD Y+1,R25
48F 8388 STD Y+0,R24
490 2722 CLR R18
491 2700 CLR R16
492 DCBC RCALL _LCD_write_string
(0314) delay_ms(100);
493 E604 LDI R16,0x64
494 E010 LDI R17,0
495 DDEE RCALL _delay_ms
(0315) LCD_write_command(0x01); //清屏
496 E001 LDI R16,1
497 DBF2 RCALL _LCD_write_command
(0316) for(k=0;k<200;k++)
498 2744 CLR R20
499 2755 CLR R21
49A C008 RJMP 0x04A3
(0317)
(0318) adc_old=0;
49B 2422 CLR R2
49C 2433 CLR R3
49D 9230 00B1 STS adc_old+1,R3
49F 9220 00B0 STS adc_old,R2
4A1 5F4F SUBI R20,0xFF
4A2 4F5F SBCI R21,0xFF
4A3 3C48 CPI R20,0xC8
4A4 E0E0 LDI R30,0
4A5 075E CPC R21,R30
4A6 F3A0 BCS 0x049B
(0319) adc_rel=0;
4A7 2422 CLR R2
4A8 2433 CLR R3
4A9 9230 00B6 STS adc_rel+1,R3
4AB 9220 00B5 STS adc_rel,R2
(0320) adc_y=2670;
4AD E68E LDI R24,0x6E
4AE E09A LDI R25,0xA
4AF 9390 00A5 STS adc_y+1,R25
4B1 9380 00A4 STS adc_y,R24
(0321) adc_x=voltage;
4B3 9020 00B2 LDS R2,voltage
4B5 9030 00B3 LDS R3,voltage+1
4B7 9230 00A7 STS adc_x+1,R3
4B9 9220 00A6 STS adc_x,R2
(0322)
(0323) shaomiao();
4BB DF27 RCALL _shaomiao
(0324) LCD_write_command(0x01); //清屏
4BC E001 LDI R16,1
4BD DBCC RCALL _LCD_write_command
(0325) stop();
4BE DEF6 RCALL _stop
(0326) delay_ms(300);
4BF E20C LDI R16,0x2C
4C0 E011 LDI R17,1
4C1 DDC2 RCALL _delay_ms
4C2 C07B RJMP 0x053E
(0327) while(1)
(0328) {
(0329)
(0330) get_adc();
4C3 DEFD RCALL _get_adc
(0331) //get_min();
(0332) if((PIND&0xFF)!=0xff)
4C4 B380 IN R24,0x10
4C5 7F8F ANDI R24,0xFF
4C6 3F8F CPI R24,0xFF
4C7 F051 BEQ 0x04D2
(0333) {
(0334) delay_ms(10);
4C8 E00A LDI R16,0xA
4C9 E010 LDI R17,0
4CA DDB9 RCALL _delay_ms
(0335) if((PIND&0xFF)!=0xff)bizhan();
4CB B380 IN R24,0x10
4CC 7F8F ANDI R24,0xFF
4CD 3F8F CPI R24,0xFF
4CE F409 BNE 0x04D0
4CF C06E RJMP 0x053E
4D0 DF68 RCALL _bizhan
(0336) }
4D1 C06C RJMP 0x053E
(0337)
(0338)
(0339) else if(voltage>(adc_y+80))
4D2 9180 00A4 LDS R24,adc_y
4D4 9190 00A5 LDS R25,adc_y+1
4D6 5B80 SUBI R24,0xB0
4D7 4F9F SBCI R25,0xFF
4D8 9020 00B2 LDS R2,voltage
4DA 9030 00B3 LDS R3,voltage+1
4DC 1582 CP R24,R2
4DD 0593 CPC R25,R3
4DE F500 BCC 0x04FF
(0340) {
(0341) if((V0+200)<V3)
4DF 9020 00A8 LDS R2,V3
4E1 9030 00A9 LDS R3,V3+1
4E3 9180 00AE LDS R24,V0
4E5 9190 00AF LDS R25,V0+1
4E7 5388 SUBI R24,0x38
4E8 4F9F SBCI R25,0xFF
4E9 1582 CP R24,R2
4EA 0593 CPC R25,R3
4EB F410 BCC 0x04EE
(0342) youzhuan();
4EC DEBC RCALL _youzhuan
4ED C050 RJMP 0x053E
(0343) else if ((V3+200)<V0)
4EE 9020 00AE LDS R2,V0
4F0 9030 00AF LDS R3,V0+1
4F2 9180 00A8 LDS R24,V3
4F4 9190 00A9 LDS R25,V3+1
4F6 5388 SUBI R24,0x38
4F7 4F9F SBCI R25,0xFF
4F8 1582 CP R24,R2
4F9 0593 CPC R25,R3
4FA F410 BCC 0x04FD
(0344) zuozhuan();
4FB DEA1 RCALL _zuozhuan
4FC C041 RJMP 0x053E
(0345) else
(0346) zuozhuan();
4FD DE9F RCALL _zuozhuan
(0347) }
4FE C03F RJMP 0x053E
(0348)
(0349) else if (V2<(adc_y+80))
4FF 9180 00A4 LDS R24,adc_y
501 9190 00A5 LDS R25,adc_y+1
503 5B80 SUBI R24,0xB0
504 4F9F SBCI R25,0xFF
505 9020 00AA LDS R2,V2
507 9030 00AB LDS R3,V2+1
509 1628 CP R2,R24
50A 0639 CPC R3,R25
50B F498 BCC 0x051F
(0350) {
(0351) if (voltage<adc_y)
50C 9020 00A4 LDS R2,adc_y
50E 9030 00A5 LDS R3,adc_y+1
510 9040 00B2 LDS R4,voltage
512 9050 00B3 LDS R5,voltage+1
514 1442 CP R4,R2
515 0453 CPC R5,R3
516 F430 BCC 0x051D
(0352) adc_y=voltage;
517 0112 MOVW R2,R4
518 9230 00A5 STS adc_y+1,R3
51A 9220 00A4 STS adc_y,R2
51C C021 RJMP 0x053E
(0353) else
(0354) qianjin();
51D DE67 RCALL _qianjin
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -