www.pudn.com > digital_duoji.rar > main.lis
.module main.c
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\ZDH\桌面\JOHU_2~1.180\digital_duoji\main.c
.area data(ram, con, rel)
0000 .dbfile C:\DOCUME~1\ZDH\桌面\JOHU_2~1.180\digital_duoji\main.c
0000 _ADCjohu::
0000 .blkb 4
.area idata
0000 00000000 .word 0,0
.area data(ram, con, rel)
0004 .dbfile C:\DOCUME~1\ZDH\桌面\JOHU_2~1.180\digital_duoji\main.c
0004 .dbsym e ADCjohu _ADCjohu L
0004 _ms::
0004 .blkb 2
.area idata
0004 0000 .word 0
.area data(ram, con, rel)
0006 .dbfile C:\DOCUME~1\ZDH\桌面\JOHU_2~1.180\digital_duoji\main.c
0006 .dbsym e ms _ms I
0006 _xx::
0006 .blkb 4
.area idata
0006 00000000 .word 0,0
.area data(ram, con, rel)
000A .dbfile C:\DOCUME~1\ZDH\桌面\JOHU_2~1.180\digital_duoji\main.c
000A .dbsym e xx _xx L
000A _adc::
000A .blkb 2
.area idata
000A 0000 .word 0
.area data(ram, con, rel)
000C .dbfile C:\DOCUME~1\ZDH\桌面\JOHU_2~1.180\digital_duoji\main.c
000C .dbsym e adc _adc I
000C _lvbo::
000C .blkb 1
.area idata
000C 00 .byte 0
.area data(ram, con, rel)
000D .dbfile C:\DOCUME~1\ZDH\桌面\JOHU_2~1.180\digital_duoji\main.c
000D .dbsym e lvbo _lvbo c
000D _lvbo_num::
000D .blkb 4
.area idata
000D 00000000 .word 0,0
.area data(ram, con, rel)
0011 .dbfile C:\DOCUME~1\ZDH\桌面\JOHU_2~1.180\digital_duoji\main.c
0011 .dbsym e lvbo_num _lvbo_num L
0011 _pwm_pingjun::
0011 .blkb 1
.area idata
0011 64 .byte 100
.area data(ram, con, rel)
0012 .dbfile C:\DOCUME~1\ZDH\桌面\JOHU_2~1.180\digital_duoji\main.c
0012 .dbsym e pwm_pingjun _pwm_pingjun c
0012 _Rpwm0::
0012 .blkb 1
.area idata
0012 00 .byte 0
.area data(ram, con, rel)
0013 .dbfile C:\DOCUME~1\ZDH\桌面\JOHU_2~1.180\digital_duoji\main.c
0013 .dbsym e Rpwm0 _Rpwm0 c
0013 _Rpwm1::
0013 .blkb 1
.area idata
0013 00 .byte 0
.area data(ram, con, rel)
0014 .dbfile C:\DOCUME~1\ZDH\桌面\JOHU_2~1.180\digital_duoji\main.c
0014 .dbsym e Rpwm1 _Rpwm1 c
0014 _Lpwm0::
0014 .blkb 1
.area idata
0014 00 .byte 0
.area data(ram, con, rel)
0015 .dbfile C:\DOCUME~1\ZDH\桌面\JOHU_2~1.180\digital_duoji\main.c
0015 .dbsym e Lpwm0 _Lpwm0 c
0015 _Lpwm1::
0015 .blkb 1
.area idata
0015 00 .byte 0
.area data(ram, con, rel)
0016 .dbfile C:\DOCUME~1\ZDH\桌面\JOHU_2~1.180\digital_duoji\main.c
0016 .dbsym e Lpwm1 _Lpwm1 c
0016 _all::
0016 .blkb 1
.area idata
0016 00 .byte 0
.area data(ram, con, rel)
0017 .dbfile C:\DOCUME~1\ZDH\桌面\JOHU_2~1.180\digital_duoji\main.c
0017 .dbsym e all _all c
0017 _a::
0017 .blkb 1
.area idata
0017 00 .byte 0
.area data(ram, con, rel)
0018 .dbfile C:\DOCUME~1\ZDH\桌面\JOHU_2~1.180\digital_duoji\main.c
0018 .dbsym e a _a c
0018 _b::
0018 .blkb 1
.area idata
0018 00 .byte 0
.area data(ram, con, rel)
0019 .dbfile C:\DOCUME~1\ZDH\桌面\JOHU_2~1.180\digital_duoji\main.c
0019 .dbsym e b _b c
0019 _c::
0019 .blkb 1
.area idata
0019 00 .byte 0
.area data(ram, con, rel)
001A .dbfile C:\DOCUME~1\ZDH\桌面\JOHU_2~1.180\digital_duoji\main.c
001A .dbsym e c _c c
001A _d::
001A .blkb 1
.area idata
001A 00 .byte 0
.area data(ram, con, rel)
001B .dbfile C:\DOCUME~1\ZDH\桌面\JOHU_2~1.180\digital_duoji\main.c
001B .dbsym e d _d c
001B _e::
001B .blkb 1
.area idata
001B 00 .byte 0
.area data(ram, con, rel)
001C .dbfile C:\DOCUME~1\ZDH\桌面\JOHU_2~1.180\digital_duoji\main.c
001C .dbsym e e _e c
001C _f::
001C .blkb 1
.area idata
001C 00 .byte 0
.area data(ram, con, rel)
001D .dbfile C:\DOCUME~1\ZDH\桌面\JOHU_2~1.180\digital_duoji\main.c
001D .dbsym e f _f c
001D _jiaodu::
001D .blkb 4
.area idata
001D 00000000 .word 0,0
.area data(ram, con, rel)
0021 .dbfile C:\DOCUME~1\ZDH\桌面\JOHU_2~1.180\digital_duoji\main.c
0021 .dbsym e jiaodu _jiaodu L
0021 _juli::
0021 .blkb 4
.area idata
0021 00000000 .word 0,0
.area data(ram, con, rel)
0025 .dbfile C:\DOCUME~1\ZDH\桌面\JOHU_2~1.180\digital_duoji\main.c
0025 .dbsym e juli _juli L
0025 _time::
0025 .blkb 2
.area idata
0025 0000 .word 0
.area data(ram, con, rel)
0027 .dbfile C:\DOCUME~1\ZDH\桌面\JOHU_2~1.180\digital_duoji\main.c
0027 .dbsym e time _time I
0027 _sec::
0027 .blkb 1
.area idata
0027 00 .byte 0
.area data(ram, con, rel)
0028 .dbfile C:\DOCUME~1\ZDH\桌面\JOHU_2~1.180\digital_duoji\main.c
0028 .dbsym e sec _sec c
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\ZDH\桌面\JOHU_2~1.180\digital_duoji\main.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 43
0000 ; //////////////////////////////
0000 ; ////////////////////////////// 61493为近似180度
0000 ;
0000 ; #include
0000 ; #include
0000 ;
0000 ; #define PREVSONG BIT(2)
0000 ; #define NEXTSONG BIT(3)
0000 ; #define VOLDOWN BIT(4)
0000 ; #define VOLUP BIT(5)
0000 ; #define STOP BIT(6)
0000 ;
0000 ; #define R_pwm0 BIT(4)
0000 ; #define R_pwm1 BIT(5)
0000 ; #define L_pwm0 BIT(6)
0000 ; #define L_pwm1 BIT(7)
0000 ;
0000 ;
0000 ; long ADCjohu=0;
0000 ; int ms=0;
0000 ; long xx=0;
0000 ; int adc=0;
0000 ;
0000 ; #define REF 483
0000 ; unsigned char lvbo=0;
0000 ; long lvbo_num=0;
0000 ;
0000 ; unsigned char pwm_pingjun=100;//平均速度
0000 ; unsigned char Rpwm0=0;
0000 ; unsigned char Rpwm1=0;
0000 ; unsigned char Lpwm0=0;
0000 ; unsigned char Lpwm1=0;
0000 ; unsigned char all=0, a=0,b=0,c=0,d=0,e=0,f=0;
0000 ; #define CIR 1
0000 ; #define LINE 2
0000 ; long jiaodu=0,juli=0;
0000 ; int time=0;
0000 ; unsigned char sec=0;
0000 ;
0000 ;
0000 ;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 44
0000 ; PORTA = 0x00;
0000 2224 clr R2
0002 2BBA out 0x1b,R2
0004 .dbline 45
0004 ; DDRA = 0x00;
0004 2ABA out 0x1a,R2
0006 .dbline 46
0006 ; PORTB = 0x00;
0006 28BA out 0x18,R2
0008 .dbline 47
0008 ; DDRB = 0x00;
0008 27BA out 0x17,R2
000A .dbline 48
000A ; PORTC = 0x00; //m103 output only
000A 25BA out 0x15,R2
000C .dbline 49
000C ; DDRC = 0x00;
000C 24BA out 0x14,R2
000E .dbline 50
000E ; PORTD = 0x00;
000E 22BA out 0x12,R2
0010 .dbline 51
0010 ; DDRD = 0x00;
0010 21BA out 0x11,R2
0012 .dbline 52
0012 ; PORTE = 0x00;
0012 23B8 out 0x3,R2
0014 .dbline 53
0014 ; DDRE = 0x00;
0014 22B8 out 0x2,R2
0016 .dbline 54
0016 ; PORTF = 0x00;
0016 20926200 sts 98,R2
001A .dbline 55
001A ; DDRF = 0x00;
001A 20926100 sts 97,R2
001E .dbline 56
001E ; PORTG = 0x00;
001E 20926500 sts 101,R2
0022 .dbline 57
0022 ; DDRG = 0x00;
0022 20926400 sts 100,R2
0026 .dbline -2
0026 L1:
0026 .dbline 0 ; func end
0026 0895 ret
0028 .dbend
0028 .dbfunc e timer2_init _timer2_init fV
.even
0028 _timer2_init::
0028 .dbline -1
0028 .dbline 65
0028 ; }
0028 ;
0028 ; //TIMER2 initialize - prescale:64
0028 ; // WGM: Normal
0028 ; // desired value: 1mSec
0028 ; // actual value: 1.000mSec (0.0%)
0028 ; void timer2_init(void)
0028 ; {
0028 .dbline 66
0028 ; TCCR2 = 0x00; //stop
0028 2224 clr R2
002A 25BC out 0x25,R2
002C .dbline 67
002C ; TCNT2 = 0x83; //setup
002C 83E8 ldi R24,131
002E 84BD out 0x24,R24
0030 .dbline 68
0030 ; OCR2 = 0x7D;
0030 8DE7 ldi R24,125
0032 83BD out 0x23,R24
0034 .dbline 69
0034 ; TCCR2 = 0x03; //start
0034 83E0 ldi R24,3
0036 85BD out 0x25,R24
0038 .dbline -2
0038 L2:
0038 .dbline 0 ; func end
0038 0895 ret
003A .dbend
.area vector(rom, abs)
.org 40
0028 0C941D00 jmp _timer0_ovf_isr
.area text(rom, con, rel)
003A .dbfile C:\DOCUME~1\ZDH\桌面\JOHU_2~1.180\digital_duoji\main.c
003A .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
.even
003A _timer0_ovf_isr::
003A 0A92 st -y,R0
003C 1A92 st -y,R1
003E 2A92 st -y,R2
0040 3A92 st -y,R3
0042 4A92 st -y,R4
0044 5A92 st -y,R5
0046 6A92 st -y,R6
0048 7A92 st -y,R7
004A 8A92 st -y,R8
004C 9A92 st -y,R9
004E 0A93 st -y,R16
0050 1A93 st -y,R17
0052 2A93 st -y,R18
0054 3A93 st -y,R19
0056 8A93 st -y,R24
0058 9A93 st -y,R25
005A 0FB6 in R0,0x3f
005C 0A92 st -y,R0
005E 0E940000 xcall push_xgsetF00C
0062 .dbline -1
0062 .dbline 75
0062 ; }
0062 ;
0062 ;
0062 ; #pragma interrupt_handler timer0_ovf_isr:11
0062 ; void timer0_ovf_isr(void)
0062 ; {
0062 .dbline 76
0062 ; TCNT0 = 0x83; //reload counter value
0062 83E8 ldi R24,131
0064 82BF out 0x32,R24
0066 .dbline 77
0066 ; if (time>500){sec++;time=0;}
0066 84EF ldi R24,500
0068 91E0 ldi R25,1
006A 20902500 lds R2,_time
006E 30902600 lds R3,_time+1
0072 8215 cp R24,R2
0074 9305 cpc R25,R3
0076 5CF4 brge L4
0078 X0:
0078 .dbline 77
0078 .dbline 77
0078 80912700 lds R24,_sec
007C 8F5F subi R24,255 ; addi 1
007E 80932700 sts _sec,R24
0082 .dbline 77
0082 2224 clr R2
0084 3324 clr R3
0086 30922600 sts _time+1,R3
008A 20922500 sts _time,R2
008E .dbline 77
008E L4:
008E .dbline 78
008E ; time++;
008E 80912500 lds R24,_time
0092 90912600 lds R25,_time+1
0096 0196 adiw R24,1
0098 90932600 sts _time+1,R25
009C 80932500 sts _time,R24
00A0 .dbline 79
00A0 ; ADCjohu=ADCL;
00A0 24B0 in R2,0x4
00A2 3324 clr R3
00A4 4424 clr R4
00A6 5524 clr R5
00A8 30920100 sts _ADCjohu+1,R3
00AC 20920000 sts _ADCjohu,R2
00B0 50920300 sts _ADCjohu+2+1,R5
00B4 40920200 sts _ADCjohu+2,R4
00B8 .dbline 80
00B8 ; ADCjohu|=ADCH << 8;
00B8 25B0 in R2,0x5
00BA 3324 clr R3
00BC 322C mov R3,R2
00BE 2224 clr R2
00C0 4424 clr R4
00C2 37FC sbrc R3,7
00C4 4094 com R4
00C6 5524 clr R5
00C8 47FC sbrc R4,7
00CA 5094 com R5
00CC 80900200 lds R8,_ADCjohu+2
00D0 90900300 lds R9,_ADCjohu+2+1
00D4 60900000 lds R6,_ADCjohu
00D8 70900100 lds R7,_ADCjohu+1
00DC 6228 or R6,R2
00DE 7328 or R7,R3
00E0 8428 or R8,R4
00E2 9528 or R9,R5
00E4 70920100 sts _ADCjohu+1,R7
00E8 60920000 sts _ADCjohu,R6
00EC 90920300 sts _ADCjohu+2+1,R9
00F0 80920200 sts _ADCjohu+2,R8
00F4 .dbline 82
00F4 ; ///////////////////////////////////////////////////////////////////平均值滤波 1毫秒采样滤波,10毫秒输出
00F4 ; if (lvbo==0) {lvbo_num=ADCjohu/2;lvbo++;return;}
00F4 20900C00 lds R2,_lvbo
00F8 2220 tst R2
00FA D1F4 brne L6
00FC X1:
00FC .dbline 82
00FC .dbline 82
00FC 42E0 ldi R20,2
00FE 50E0 ldi R21,0
0100 60E0 ldi R22,0
0102 70E0 ldi R23,0
0104 8301 movw R16,R6
0106 9401 movw R18,R8
0108 7A93 st -y,R23
010A 6A93 st -y,R22
010C 5A93 st -y,R21
010E 4A93 st -y,R20
0110 0E940000 xcall div32s
0114 10930E00 sts _lvbo_num+1,R17
0118 00930D00 sts _lvbo_num,R16
011C 30931000 sts _lvbo_num+2+1,R19
0120 20930F00 sts _lvbo_num+2,R18
0124 .dbline 82
0124 80910C00 lds R24,_lvbo
0128 8F5F subi R24,255 ; addi 1
012A 80930C00 sts _lvbo,R24
012E .dbline 82
012E 77C0 xjmp L3
0130 L6:
0130 .dbline 83
0130 ; if (lvbo<10) {lvbo_num+=ADCjohu/2;lvbo++;return;}
0130 80910C00 lds R24,_lvbo
0134 8A30 cpi R24,10
0136 60F5 brsh L8
0138 X2:
0138 .dbline 83
0138 .dbline 83
0138 42E0 ldi R20,2
013A 50E0 ldi R21,0
013C 60E0 ldi R22,0
013E 70E0 ldi R23,0
0140 20910200 lds R18,_ADCjohu+2
0144 30910300 lds R19,_ADCjohu+2+1
0148 00910000 lds R16,_ADCjohu
014C 10910100 lds R17,_ADCjohu+1
0150 7A93 st -y,R23
0152 6A93 st -y,R22
0154 5A93 st -y,R21
0156 4A93 st -y,R20
0158 0E940000 xcall div32s
015C 40900F00 lds R4,_lvbo_num+2
0160 50901000 lds R5,_lvbo_num+2+1
0164 20900D00 lds R2,_lvbo_num
0168 30900E00 lds R3,_lvbo_num+1
016C 200E add R2,R16
016E 311E adc R3,R17
0170 421E adc R4,R18
0172 531E adc R5,R19
0174 30920E00 sts _lvbo_num+1,R3
0178 20920D00 sts _lvbo_num,R2
017C 50921000 sts _lvbo_num+2+1,R5
0180 40920F00 sts _lvbo_num+2,R4
0184 .dbline 83
0184 80910C00 lds R24,_lvbo
0188 8F5F subi R24,255 ; addi 1
018A 80930C00 sts _lvbo,R24
018E .dbline 83
018E 47C0 xjmp L3
0190 L8:
0190 .dbline 84
0190 ; else lvbo=0;/**/
0190 2224 clr R2
0192 20920C00 sts _lvbo,R2
0196 .dbline 86
0196 ; //////////////////////////////////////////////////////////////////////////////
0196 ; if ( (ADCjohuREF+6))
0196 4DED ldi R20,221
0198 51E0 ldi R21,1
019A 60E0 ldi R22,0
019C 70E0 ldi R23,0
019E 40900200 lds R4,_ADCjohu+2
01A2 50900300 lds R5,_ADCjohu+2+1
01A6 20900000 lds R2,_ADCjohu
01AA 30900100 lds R3,_ADCjohu+1
01AE 2416 cp R2,R20
01B0 3506 cpc R3,R21
01B2 4606 cpc R4,R22
01B4 5706 cpc R5,R23
01B6 4CF0 brlt L12
01B8 X3:
01B8 49EE ldi R20,233
01BA 51E0 ldi R21,1
01BC 60E0 ldi R22,0
01BE 70E0 ldi R23,0
01C0 4215 cp R20,R2
01C2 5305 cpc R21,R3
01C4 6405 cpc R22,R4
01C6 7505 cpc R23,R5
01C8 24F5 brge L10
01CA X4:
01CA L12:
01CA .dbline 87
01CA ; {
01CA .dbline 89
01CA ; //ADCjohu-=511-10;//-511+31-3.27371 -10
01CA ; xx=xx+ADCjohu-REF;//
01CA 40900200 lds R4,_ADCjohu+2
01CE 50900300 lds R5,_ADCjohu+2+1
01D2 20900000 lds R2,_ADCjohu
01D6 30900100 lds R3,_ADCjohu+1
01DA 80900800 lds R8,_xx+2
01DE 90900900 lds R9,_xx+2+1
01E2 60900600 lds R6,_xx
01E6 70900700 lds R7,_xx+1
01EA 620C add R6,R2
01EC 731C adc R7,R3
01EE 841C adc R8,R4
01F0 951C adc R9,R5
01F2 43EE ldi R20,227
01F4 51E0 ldi R21,1
01F6 60E0 ldi R22,0
01F8 70E0 ldi R23,0
01FA 641A sub R6,R20
01FC 750A sbc R7,R21
01FE 860A sbc R8,R22
0200 970A sbc R9,R23
0202 70920700 sts _xx+1,R7
0206 60920600 sts _xx,R6
020A 90920900 sts _xx+2+1,R9
020E 80920800 sts _xx+2,R8
0212 .dbline 90
0212 ; }
0212 L10:
0212 .dbline 91
0212 ; ms=1;
0212 81E0 ldi R24,1
0214 90E0 ldi R25,0
0216 90930500 sts _ms+1,R25
021A 80930400 sts _ms,R24
021E .dbline -2
021E L3:
021E .dbline 0 ; func end
021E 0E940000 xcall pop_xgsetF00C
0222 0990 ld R0,y+
0224 0FBE out 0x3f,R0
0226 9991 ld R25,y+
0228 8991 ld R24,y+
022A 3991 ld R19,y+
022C 2991 ld R18,y+
022E 1991 ld R17,y+
0230 0991 ld R16,y+
0232 9990 ld R9,y+
0234 8990 ld R8,y+
0236 7990 ld R7,y+
0238 6990 ld R6,y+
023A 5990 ld R5,y+
023C 4990 ld R4,y+
023E 3990 ld R3,y+
0240 2990 ld R2,y+
0242 1990 ld R1,y+
0244 0990 ld R0,y+
0246 1895 reti
0248 .dbend
0248 .dbfunc e adc_init _adc_init fV
.even
0248 _adc_init::
0248 .dbline -1
0248 .dbline 99
0248 ; //ADCjohu==ADCL;
0248 ; //PORTD=ADCjohu;
0248 ; }
0248 ;
0248 ; //ADC initialize
0248 ; // Conversion time: 3uS
0248 ; void adc_init(void)
0248 ; {
0248 .dbline 100
0248 ; ADCSRA = 0x00; //disable adc
0248 2224 clr R2
024A 26B8 out 0x6,R2
024C .dbline 101
024C ; ADMUX = 0x01; //select adc input 0
024C 81E0 ldi R24,1
024E 87B9 out 0x7,R24
0250 .dbline 102
0250 ; ACSR = 0x80;
0250 80E8 ldi R24,128
0252 88B9 out 0x8,R24
0254 .dbline 104
0254 ; // ADCSRB = 0x00;
0254 ; ADCSRA = 0xEf;
0254 8FEE ldi R24,239
0256 86B9 out 0x6,R24
0258 .dbline -2
0258 L13:
0258 .dbline 0 ; func end
0258 0895 ret
025A .dbend
.area vector(rom, abs)
.org 84
0054 0C942D01 jmp _adc_isr
.area text(rom, con, rel)
025A .dbfile C:\DOCUME~1\ZDH\桌面\JOHU_2~1.180\digital_duoji\main.c
025A .dbfunc e adc_isr _adc_isr fV
.even
025A _adc_isr::
025A 2A92 st -y,R2
025C 2FB6 in R2,0x3f
025E 2A92 st -y,R2
0260 .dbline -1
0260 .dbline 109
0260 ; }
0260 ;
0260 ; #pragma interrupt_handler adc_isr:22
0260 ; void adc_isr(void)
0260 ; {
0260 .dbline 117
0260 ; //conversion complete, read value (int) using...
0260 ; // value=ADCL; //Read 8 low bits first (important)
0260 ; // value|=(int)ADCH << 8; //read 2 high bits and shift into top byte
0260 ; //ADCjohu==ADCL;
0260 ; //ADCjohu|=(int)ADCH << 8;
0260 ; //PORTD=ADCjohu;
0260 ; //adc=1;
0260 ; PORTA=ADCL;
0260 24B0 in R2,0x4
0262 2BBA out 0x1b,R2
0264 .dbline -2
0264 L14:
0264 .dbline 0 ; func end
0264 2990 ld R2,y+
0266 2FBE out 0x3f,R2
0268 2990 ld R2,y+
026A 1895 reti
026C .dbend
026C .dbfunc e init_devices _init_devices fV
.even
026C _init_devices::
026C .dbline -1
026C .dbline 123
026C ;
026C ; }
026C ;
026C ; //call this routine to initialize all peripherals
026C ; void init_devices(void)
026C ; {
026C .dbline 125
026C ; //stop errant interrupts until set up
026C ; CLI(); //disable all interrupts
026C F894 cli
026E .dbline 126
026E ; XDIV = 0x00; //xtal divider
026E 2224 clr R2
0270 2CBE out 0x3c,R2
0272 .dbline 127
0272 ; XMCRA = 0x00; //external memory
0272 20926D00 sts 109,R2
0276 .dbline 128
0276 ; port_init();
0276 C4DE xcall _port_init
0278 .dbline 129
0278 ; timer2_init();
0278 D7DE xcall _timer2_init
027A .dbline 131
027A ;
027A ; adc_init();uart1_init();
027A E6DF xcall _adc_init
027C .dbline 131
027C 0CD0 xcall _uart1_init
027E .dbline 133
027E ;
027E ; MCUCR = 0x00;
027E 2224 clr R2
0280 25BE out 0x35,R2
0282 .dbline 134
0282 ; EICRA = 0x00; //extended ext ints
0282 20926A00 sts 106,R2
0286 .dbline 135
0286 ; EICRB = 0x00; //extended ext ints
0286 2ABE out 0x3a,R2
0288 .dbline 136
0288 ; EIMSK = 0x00;
0288 29BE out 0x39,R2
028A .dbline 137
028A ; TIMSK = 0x40; //timer interrupt sources
028A 80E4 ldi R24,64
028C 87BF out 0x37,R24
028E .dbline 138
028E ; ETIMSK = 0x00; //extended timer interrupt sources
028E 20927D00 sts 125,R2
0292 .dbline 139
0292 ; SEI(); //re-enable interrupts
0292 7894 sei
0294 .dbline -2
0294 L15:
0294 .dbline 0 ; func end
0294 0895 ret
0296 .dbend
0296 .dbfunc e uart1_init _uart1_init fV
.even
0296 _uart1_init::
0296 .dbline -1
0296 .dbline 146
0296 ; //all peripherals are now initialized
0296 ; }
0296 ; //UART1 initialize
0296 ; // desired baud rate:9600
0296 ; // actual baud rate:9615 (0.2%)
0296 ; void uart1_init(void)
0296 ; {
0296 .dbline 147
0296 ; UCSR1B = 0x00; //disable while setting baud rate
0296 2224 clr R2
0298 20929A00 sts 154,R2
029C .dbline 148
029C ; UCSR1A = 0x00;
029C 20929B00 sts 155,R2
02A0 .dbline 149
02A0 ; UCSR1C = 0x06;
02A0 86E0 ldi R24,6
02A2 80939D00 sts 157,R24
02A6 .dbline 150
02A6 ; UBRR1L = 0x33; //set baud rate lo
02A6 83E3 ldi R24,51
02A8 80939900 sts 153,R24
02AC .dbline 151
02AC ; UBRR1H = 0x00; //set baud rate hi
02AC 20929800 sts 152,R2
02B0 .dbline 152
02B0 ; UCSR1B = 0x98;
02B0 88E9 ldi R24,152
02B2 80939A00 sts 154,R24
02B6 .dbline -2
02B6 L16:
02B6 .dbline 0 ; func end
02B6 0895 ret
02B8 .dbend
.area vector(rom, abs)
.org 120
0078 0C945C01 jmp _uart1_rx_isr
.area text(rom, con, rel)
02B8 .dbfile C:\DOCUME~1\ZDH\桌面\JOHU_2~1.180\digital_duoji\main.c
02B8 .dbfunc e uart1_rx_isr _uart1_rx_isr fV
.even
02B8 _uart1_rx_isr::
02B8 0A92 st -y,R0
02BA 1A92 st -y,R1
02BC 2A92 st -y,R2
02BE 3A92 st -y,R3
02C0 4A92 st -y,R4
02C2 5A92 st -y,R5
02C4 0A93 st -y,R16
02C6 1A93 st -y,R17
02C8 2A93 st -y,R18
02CA 3A93 st -y,R19
02CC 8A93 st -y,R24
02CE 9A93 st -y,R25
02D0 EA93 st -y,R30
02D2 FA93 st -y,R31
02D4 0FB6 in R0,0x3f
02D6 0A92 st -y,R0
02D8 .dbline -1
02D8 .dbline 158
02D8 ; }
02D8 ;
02D8 ; #pragma interrupt_handler uart1_rx_isr:31
02D8 ; //cir+00100
02D8 ; void uart1_rx_isr(void)
02D8 ; {
02D8 .dbline 160
02D8 ; //uart has received a character in UDR
02D8 ; if (all==CIR)
02D8 80911600 lds R24,_all
02DC 8130 cpi R24,1
02DE 09F0 breq X25
02E0 B9C0 xjmp L18
02E2 X25:
02E2 X5:
02E2 .dbline 161
02E2 ; {
02E2 .dbline 162
02E2 ; a=b;
02E2 20901800 lds R2,_b
02E6 20921700 sts _a,R2
02EA .dbline 163
02EA ; b=c;
02EA 20901900 lds R2,_c
02EE 20921800 sts _b,R2
02F2 .dbline 164
02F2 ; c=d;
02F2 20901A00 lds R2,_d
02F6 20921900 sts _c,R2
02FA .dbline 165
02FA ; d=e;
02FA 20901B00 lds R2,_e
02FE 20921A00 sts _d,R2
0302 .dbline 166
0302 ; e=f;
0302 20901C00 lds R2,_f
0306 20921B00 sts _e,R2
030A .dbline 167
030A ; f=UDR1;
030A 20909C00 lds R2,156
030E 20921C00 sts _f,R2
0312 .dbline 168
0312 ; if ((f<'0')||(f>'9'))return;
0312 822D mov R24,R2
0314 8033 cpi R24,48
0316 18F0 brlo L22
0318 X6:
0318 89E3 ldi R24,57
031A 8215 cp R24,R2
031C 08F4 brsh L20
031E X7:
031E L22:
031E .dbline 168
031E AAC1 xjmp L17
0320 L20:
0320 .dbline 169
0320 ; if (a=='+')//0x2b
0320 80911700 lds R24,_a
0324 8B32 cpi R24,43
0326 09F0 breq X26
0328 41C0 xjmp L23
032A X26:
032A X8:
032A .dbline 170
032A ; {jiaodu=(b-48)*10000+(c-48)*1000+(d-48)*100+(e-48)*10+(f-48);
032A .dbline 170
032A 20911900 lds R18,_c
032E 3327 clr R19
0330 08EE ldi R16,1000
0332 13E0 ldi R17,3
0334 0E940000 xcall empy16s
0338 C801 movw R24,R16
033A 8058 subi R24,128
033C 9B4B sbci R25,187
033E 20911800 lds R18,_b
0342 3327 clr R19
0344 00E1 ldi R16,10000
0346 17E2 ldi R17,39
0348 0E940000 xcall empy16s
034C F801 movw R30,R16
034E E050 subi R30,0
0350 F345 sbci R31,83
0352 E80F add R30,R24
0354 F91F adc R31,R25
0356 20901A00 lds R2,_d
035A 84E6 ldi R24,100
035C 829D mul R24,R2
035E C001 movw R24,R0
0360 805C subi R24,192
0362 9241 sbci R25,18
0364 E80F add R30,R24
0366 F91F adc R31,R25
0368 20901B00 lds R2,_e
036C 8AE0 ldi R24,10
036E 829D mul R24,R2
0370 C001 movw R24,R0
0372 805E subi R24,224
0374 9140 sbci R25,1
0376 E80F add R30,R24
0378 F91F adc R31,R25
037A 80911C00 lds R24,_f
037E 9927 clr R25
0380 C097 sbiw R24,48
0382 E80F add R30,R24
0384 F91F adc R31,R25
0386 1F01 movw R2,R30
0388 4424 clr R4
038A 37FC sbrc R3,7
038C 4094 com R4
038E 5524 clr R5
0390 47FC sbrc R4,7
0392 5094 com R5
0394 30921E00 sts _jiaodu+1,R3
0398 20921D00 sts _jiaodu,R2
039C 50922000 sts _jiaodu+2+1,R5
03A0 40921F00 sts _jiaodu+2,R4
03A4 .dbline 171
03A4 ; all=0;return;}
03A4 2224 clr R2
03A6 20921600 sts _all,R2
03AA .dbline 171
03AA 64C1 xjmp L17
03AC L23:
03AC .dbline 172
03AC ; else if (a=='-')//0x2d
03AC 80911700 lds R24,_a
03B0 8D32 cpi R24,45
03B2 09F0 breq X27
03B4 46C0 xjmp L25
03B6 X27:
03B6 X9:
03B6 .dbline 173
03B6 ; {jiaodu=-((b-48)*10000+(c-48)*1000+(d-48)*100+(e-48)*10+(f-48));
03B6 .dbline 173
03B6 20911900 lds R18,_c
03BA 3327 clr R19
03BC 08EE ldi R16,1000
03BE 13E0 ldi R17,3
03C0 0E940000 xcall empy16s
03C4 C801 movw R24,R16
03C6 8058 subi R24,128
03C8 9B4B sbci R25,187
03CA 20911800 lds R18,_b
03CE 3327 clr R19
03D0 00E1 ldi R16,10000
03D2 17E2 ldi R17,39
03D4 0E940000 xcall empy16s
03D8 F801 movw R30,R16
03DA E050 subi R30,0
03DC F345 sbci R31,83
03DE E80F add R30,R24
03E0 F91F adc R31,R25
03E2 20901A00 lds R2,_d
03E6 84E6 ldi R24,100
03E8 829D mul R24,R2
03EA C001 movw R24,R0
03EC 805C subi R24,192
03EE 9241 sbci R25,18
03F0 E80F add R30,R24
03F2 F91F adc R31,R25
03F4 20901B00 lds R2,_e
03F8 8AE0 ldi R24,10
03FA 829D mul R24,R2
03FC C001 movw R24,R0
03FE 805E subi R24,224
0400 9140 sbci R25,1
0402 E80F add R30,R24
0404 F91F adc R31,R25
0406 80911C00 lds R24,_f
040A 9927 clr R25
040C C097 sbiw R24,48
040E E80F add R30,R24
0410 F91F adc R31,R25
0412 CF01 movw R24,R30
0414 8095 com R24
0416 9095 com R25
0418 8F5F subi R24,0xFF
041A 9F4F sbci R25,0xFF
041C 1C01 movw R2,R24
041E 4424 clr R4
0420 37FC sbrc R3,7
0422 4094 com R4
0424 5524 clr R5
0426 47FC sbrc R4,7
0428 5094 com R5
042A 30921E00 sts _jiaodu+1,R3
042E 20921D00 sts _jiaodu,R2
0432 50922000 sts _jiaodu+2+1,R5
0436 40921F00 sts _jiaodu+2,R4
043A .dbline 174
043A ; all=0;return;}
043A 2224 clr R2
043C 20921600 sts _all,R2
0440 .dbline 174
0440 19C1 xjmp L17
0442 L25:
0442 .dbline 175
0442 ; if (a!=0) {all=0;return;}
0442 20901700 lds R2,_a
0446 2220 tst R2
0448 09F4 brne X28
044A 14C1 xjmp L19
044C X28:
044C X10:
044C .dbline 175
044C .dbline 175
044C 2224 clr R2
044E 20921600 sts _all,R2
0452 .dbline 175
0452 10C1 xjmp L17
0454 L18:
0454 .dbline 178
0454 ; //PORTF=jiaodu;//while(1);
0454 ; }
0454 ; else if (all==LINE)
0454 80911600 lds R24,_all
0458 8230 cpi R24,2
045A 09F0 breq X29
045C B9C0 xjmp L29
045E X29:
045E X11:
045E .dbline 179
045E ; {
045E .dbline 180
045E ; a=b;
045E 20901800 lds R2,_b
0462 20921700 sts _a,R2
0466 .dbline 181
0466 ; b=c;
0466 20901900 lds R2,_c
046A 20921800 sts _b,R2
046E .dbline 182
046E ; c=d;
046E 20901A00 lds R2,_d
0472 20921900 sts _c,R2
0476 .dbline 183
0476 ; d=e;
0476 20901B00 lds R2,_e
047A 20921A00 sts _d,R2
047E .dbline 184
047E ; e=f;
047E 20901C00 lds R2,_f
0482 20921B00 sts _e,R2
0486 .dbline 185
0486 ; f=UDR1;
0486 20909C00 lds R2,156
048A 20921C00 sts _f,R2
048E .dbline 186
048E ; if ((f<'0')||(f>'9'))return;
048E 822D mov R24,R2
0490 8033 cpi R24,48
0492 18F0 brlo L33
0494 X12:
0494 89E3 ldi R24,57
0496 8215 cp R24,R2
0498 08F4 brsh L31
049A X13:
049A L33:
049A .dbline 186
049A ECC0 xjmp L17
049C L31:
049C .dbline 187
049C ; if (a=='+')
049C 80911700 lds R24,_a
04A0 8B32 cpi R24,43
04A2 09F0 breq X30
04A4 41C0 xjmp L34
04A6 X30:
04A6 X14:
04A6 .dbline 188
04A6 ; {juli=(b-48)*10000+(c-48)*1000+(d-48)*100+(e-48)*10+(f-48);
04A6 .dbline 188
04A6 20911900 lds R18,_c
04AA 3327 clr R19
04AC 08EE ldi R16,1000
04AE 13E0 ldi R17,3
04B0 0E940000 xcall empy16s
04B4 C801 movw R24,R16
04B6 8058 subi R24,128
04B8 9B4B sbci R25,187
04BA 20911800 lds R18,_b
04BE 3327 clr R19
04C0 00E1 ldi R16,10000
04C2 17E2 ldi R17,39
04C4 0E940000 xcall empy16s
04C8 F801 movw R30,R16
04CA E050 subi R30,0
04CC F345 sbci R31,83
04CE E80F add R30,R24
04D0 F91F adc R31,R25
04D2 20901A00 lds R2,_d
04D6 84E6 ldi R24,100
04D8 829D mul R24,R2
04DA C001 movw R24,R0
04DC 805C subi R24,192
04DE 9241 sbci R25,18
04E0 E80F add R30,R24
04E2 F91F adc R31,R25
04E4 20901B00 lds R2,_e
04E8 8AE0 ldi R24,10
04EA 829D mul R24,R2
04EC C001 movw R24,R0
04EE 805E subi R24,224
04F0 9140 sbci R25,1
04F2 E80F add R30,R24
04F4 F91F adc R31,R25
04F6 80911C00 lds R24,_f
04FA 9927 clr R25
04FC C097 sbiw R24,48
04FE E80F add R30,R24
0500 F91F adc R31,R25
0502 1F01 movw R2,R30
0504 4424 clr R4
0506 37FC sbrc R3,7
0508 4094 com R4
050A 5524 clr R5
050C 47FC sbrc R4,7
050E 5094 com R5
0510 30922200 sts _juli+1,R3
0514 20922100 sts _juli,R2
0518 50922400 sts _juli+2+1,R5
051C 40922300 sts _juli+2,R4
0520 .dbline 189
0520 ; all=0;return;}
0520 2224 clr R2
0522 20921600 sts _all,R2
0526 .dbline 189
0526 A6C0 xjmp L17
0528 L34:
0528 .dbline 190
0528 ; else if (a=='-')
0528 80911700 lds R24,_a
052C 8D32 cpi R24,45
052E 09F0 breq X31
0530 46C0 xjmp L36
0532 X31:
0532 X15:
0532 .dbline 191
0532 ; {juli=-((b-48)*10000+(c-48)*1000+(d-48)*100+(e-48)*10+(f-48));
0532 .dbline 191
0532 20911900 lds R18,_c
0536 3327 clr R19
0538 08EE ldi R16,1000
053A 13E0 ldi R17,3
053C 0E940000 xcall empy16s
0540 C801 movw R24,R16
0542 8058 subi R24,128
0544 9B4B sbci R25,187
0546 20911800 lds R18,_b
054A 3327 clr R19
054C 00E1 ldi R16,10000
054E 17E2 ldi R17,39
0550 0E940000 xcall empy16s
0554 F801 movw R30,R16
0556 E050 subi R30,0
0558 F345 sbci R31,83
055A E80F add R30,R24
055C F91F adc R31,R25
055E 20901A00 lds R2,_d
0562 84E6 ldi R24,100
0564 829D mul R24,R2
0566 C001 movw R24,R0
0568 805C subi R24,192
056A 9241 sbci R25,18
056C E80F add R30,R24
056E F91F adc R31,R25
0570 20901B00 lds R2,_e
0574 8AE0 ldi R24,10
0576 829D mul R24,R2
0578 C001 movw R24,R0
057A 805E subi R24,224
057C 9140 sbci R25,1
057E E80F add R30,R24
0580 F91F adc R31,R25
0582 80911C00 lds R24,_f
0586 9927 clr R25
0588 C097 sbiw R24,48
058A E80F add R30,R24
058C F91F adc R31,R25
058E CF01 movw R24,R30
0590 8095 com R24
0592 9095 com R25
0594 8F5F subi R24,0xFF
0596 9F4F sbci R25,0xFF
0598 1C01 movw R2,R24
059A 4424 clr R4
059C 37FC sbrc R3,7
059E 4094 com R4
05A0 5524 clr R5
05A2 47FC sbrc R4,7
05A4 5094 com R5
05A6 30922200 sts _juli+1,R3
05AA 20922100 sts _juli,R2
05AE 50922400 sts _juli+2+1,R5
05B2 40922300 sts _juli+2,R4
05B6 .dbline 192
05B6 ; all=0;return;}
05B6 2224 clr R2
05B8 20921600 sts _all,R2
05BC .dbline 192
05BC 5BC0 xjmp L17
05BE L36:
05BE .dbline 193
05BE ; if (a!=0) {all=0;return;}
05BE 20901700 lds R2,_a
05C2 2220 tst R2
05C4 09F4 brne X32
05C6 56C0 xjmp L30
05C8 X32:
05C8 X16:
05C8 .dbline 193
05C8 .dbline 193
05C8 2224 clr R2
05CA 20921600 sts _all,R2
05CE .dbline 193
05CE 52C0 xjmp L17
05D0 L29:
05D0 .dbline 196
05D0 ; //PORTF=a;
05D0 ; }
05D0 ; else if (all==0)//(johu!=3)&&(johu!=5) //5:7-bit 3:8-bit
05D0 20901600 lds R2,_all
05D4 2220 tst R2
05D6 09F0 breq X33
05D8 4DC0 xjmp L40
05DA X33:
05DA X17:
05DA .dbline 197
05DA ; {
05DA .dbline 198
05DA ; a=b;
05DA 20901800 lds R2,_b
05DE 20921700 sts _a,R2
05E2 .dbline 199
05E2 ; b=c;
05E2 20901900 lds R2,_c
05E6 20921800 sts _b,R2
05EA .dbline 200
05EA ; c=d;
05EA 20901A00 lds R2,_d
05EE 20921900 sts _c,R2
05F2 .dbline 201
05F2 ; d=UDR1;
05F2 20909C00 lds R2,156
05F6 20921A00 sts _d,R2
05FA .dbline 202
05FA ; if ((a=='c')&&(b=='i')&&(c=='r'))
05FA 80911700 lds R24,_a
05FE 8336 cpi R24,99
0600 C9F4 brne L42
0602 X18:
0602 80911800 lds R24,_b
0606 8936 cpi R24,105
0608 A9F4 brne L42
060A X19:
060A 80911900 lds R24,_c
060E 8237 cpi R24,114
0610 89F4 brne L42
0612 X20:
0612 .dbline 203
0612 ; {
0612 .dbline 204
0612 ; all=CIR;
0612 81E0 ldi R24,1
0614 80931600 sts _all,R24
0618 .dbline 205
0618 ; a=0;b=0;c=0;d=0;e=0;f=0;
0618 2224 clr R2
061A 20921700 sts _a,R2
061E .dbline 205
061E 20921800 sts _b,R2
0622 .dbline 205
0622 20921900 sts _c,R2
0626 .dbline 205
0626 20921A00 sts _d,R2
062A .dbline 205
062A 20921B00 sts _e,R2
062E .dbline 205
062E 20921C00 sts _f,R2
0632 .dbline 206
0632 ; return; }//RXlen=4;{johu=3;RXlen=3;return;}
0632 20C0 xjmp L17
0634 L42:
0634 .dbline 207
0634 ; else if ((a=='l')&&(b=='i')&&(c=='n')&&(d=='e'))
0634 80911700 lds R24,_a
0638 8C36 cpi R24,108
063A E1F4 brne L44
063C X21:
063C 80911800 lds R24,_b
0640 8936 cpi R24,105
0642 C1F4 brne L44
0644 X22:
0644 80911900 lds R24,_c
0648 8E36 cpi R24,110
064A A1F4 brne L44
064C X23:
064C 80911A00 lds R24,_d
0650 8536 cpi R24,101
0652 81F4 brne L44
0654 X24:
0654 .dbline 208
0654 ; {
0654 .dbline 209
0654 ; all=LINE;
0654 82E0 ldi R24,2
0656 80931600 sts _all,R24
065A .dbline 210
065A ; a=0;b=0;c=0;d=0;e=0;f=0;
065A 2224 clr R2
065C 20921700 sts _a,R2
0660 .dbline 210
0660 20921800 sts _b,R2
0664 .dbline 210
0664 20921900 sts _c,R2
0668 .dbline 210
0668 20921A00 sts _d,R2
066C .dbline 210
066C 20921B00 sts _e,R2
0670 .dbline 210
0670 20921C00 sts _f,R2
0674 .dbline 211
0674 ; return; }//RXlen=4;{johu=5;RXlen=3;return;}
0674 L44:
0674 .dbline 213
0674 ; ////////////////////////////////////////////////////////////////////
0674 ; }
0674 L40:
0674 L30:
0674 L19:
0674 .dbline -2
0674 L17:
0674 .dbline 0 ; func end
0674 0990 ld R0,y+
0676 0FBE out 0x3f,R0
0678 F991 ld R31,y+
067A E991 ld R30,y+
067C 9991 ld R25,y+
067E 8991 ld R24,y+
0680 3991 ld R19,y+
0682 2991 ld R18,y+
0684 1991 ld R17,y+
0686 0991 ld R16,y+
0688 5990 ld R5,y+
068A 4990 ld R4,y+
068C 3990 ld R3,y+
068E 2990 ld R2,y+
0690 1990 ld R1,y+
0692 0990 ld R0,y+
0694 1895 reti
0696 .dbend
0696 .dbfunc e number_uart1 _number_uart1 fV
0696 ; n -> y+0
0696 ; huanhang -> y+8
0696 ; NUM -> y+4
.even
0696 _number_uart1::
0696 0E940000 xcall push_arg4
069A 2497 sbiw R28,4
069C .dbline -1
069C .dbline 233
069C ; }
069C ;
069C ;
069C ;
069C ; /*void number(unsigned char X,unsigned char Y,unsigned char LEN,int NUM,unsigned char BLACK)
069C ; {
069C ; char code[]={'0','1','2','3','4','5','6','7','8','9',};
069C ; if (NUM<0)
069C ; {LCD_write_String1(X,Y,"-");NUM=-NUM;}
069C ; else
069C ; {LCD_write_String1(X,Y,"+");}
069C ; X=X+6;
069C ; while(LEN--)
069C ; {
069C ; LCD_write_String1(X+LEN*6,Y,& code[NUM%10]);
069C ; NUM=NUM/10;
069C ; }
069C ; }*/
069C ; void number_uart1(long NUM,char huanhang)
069C ; {long n=0;
069C .dbline 233
069C 80E0 ldi R24,0
069E 90E0 ldi R25,0
06A0 A0E0 ldi R26,0
06A2 B0E0 ldi R27,0
06A4 8883 std y+0,R24
06A6 9983 std y+1,R25
06A8 AA83 std y+2,R26
06AA BB83 std y+3,R27
06AC .dbline 234
06AC ; if (NUM<0){n=-NUM; while(!(UCSR1A&(1<
0912 ; n_juli -> R10
0912 ; n_jiaodu -> R10
0912 ; n_sec -> R10
0912 ; pwm_duoji -> R10,R11
.even
0912 _main::
0912 2197 sbiw R28,1
0914 .dbline -1
0914 .dbline 342
0914 ; }
0914 ;
0914 ;
0914 ; #define PWM_ON DDRB|= R_pwm0 | R_pwm1 | L_pwm0 | L_pwm1;
0914 ; #define PWM_OFF DDRB&= ~(R_pwm0 | R_pwm1 | L_pwm0 | L_pwm1);
0914 ; main()
0914 ; {int n;
0914 .dbline 343
0914 ; unsigned char n_jiaodu=0,n_juli=0;
0914 .dbline 343
0914 .dbline 344
0914 ; unsigned char n_sec=0;
0914 .dbline 345
0914 ; unsigned int pwm_duoji=0;
0914 .dbline 346
0914 ; init_devices();
0914 ABDC xcall _init_devices
0916 .dbline 347
0916 ; timer1_init();timer0_init();
0916 E0DF xcall _timer1_init
0918 .dbline 347
0918 D5DF xcall _timer0_init
091A .dbline 358
091A ; //OCR1AH = 0x00;
091A ; /* OCR1AL = 64;
091A ; //OCR1BH = 0x00;
091A ; OCR1BL = 64;
091A ; //OCR1CH = 0x00;
091A ; OCR1CL = 64;
091A ; OCR0=64;*/
091A ;
091A ;
091A ; //while(1);
091A ; DDRE|=0x38;//while(1);
091A 82B1 in R24,0x2
091C 8863 ori R24,56
091E 82B9 out 0x2,R24
0920 .dbline 368
0920 ; /////////LCD
0920 ; /* DDRB = 0xBF; //SI输入,SO,SCK,SS输出
0920 ; SPCR = 0x50; //setup SPI
0920 ; SPSR = 0x01; //setup SPI*/
0920 ; /*while(!(UCSR0A&(1<>8)&0x07;
09BE C501 movw R24,R10
09C0 892F mov R24,R25
09C2 9927 clr R25
09C4 8770 andi R24,7
09C6 9070 andi R25,0
09C8 89BD out 0x29,R24
09CA .dbline 398
09CA ; OCR1BL = pwm_duoji;
09CA A8BC out 0x28,R10
09CC .dbline 404
09CC ; /*OCR1BH = 0x03;
09CC ; OCR1BL = 0xF0;
09CC ; OCR1CH = 0x03;
09CC ; OCR1CL = 0xF0;
09CC ; */
09CC ; PWM_ON
09CC 87B3 in R24,0x17
09CE 806F ori R24,240
09D0 87BB out 0x17,R24
09D2 .dbline 406
09D2 ; //SEI();
09D2 ; }
09D2 L92:
09D2 .dbline 407
09D2 ; }
09D2 L90:
09D2 .dbline 408
09D2 ; if (!(PINE & PREVSONG))
09D2 0A99 sbic 0x1,2
09D4 18C0 rjmp L96
09D6 X50:
09D6 .dbline 409
09D6 ; {delay_ms(500);
09D6 .dbline 409
09D6 04EF ldi R16,500
09D8 11E0 ldi R17,1
09DA 0E940000 xcall _delay_ms
09DE .dbline 410
09DE ; if (!(PINE & PREVSONG))
09DE 0A99 sbic 0x1,2
09E0 12C0 rjmp L98
09E2 X51:
09E2 .dbline 411
09E2 ; {
09E2 .dbline 413
09E2 ; //CLI();
09E2 ; if(pwm_duoji>200) pwm_duoji--;//0.5ms
09E2 88EC ldi R24,200
09E4 90E0 ldi R25,0
09E6 8A15 cp R24,R10
09E8 9B05 cpc R25,R11
09EA 18F4 brsh L100
09EC X52:
09EC .dbline 413
09EC C501 movw R24,R10
09EE 0197 sbiw R24,1
09F0 5C01 movw R10,R24
09F2 L100:
09F2 .dbline 414
09F2 ; OCR1BH = (pwm_duoji>>8)&0x07;
09F2 C501 movw R24,R10
09F4 892F mov R24,R25
09F6 9927 clr R25
09F8 8770 andi R24,7
09FA 9070 andi R25,0
09FC 89BD out 0x29,R24
09FE .dbline 415
09FE ; OCR1BL = pwm_duoji;
09FE A8BC out 0x28,R10
0A00 .dbline 421
0A00 ; /*OCR1BH = 0x03;
0A00 ; OCR1BL = 0xF0;
0A00 ; OCR1CH = 0x03;
0A00 ; OCR1CL = 0xF0;
0A00 ; */
0A00 ; PWM_ON
0A00 87B3 in R24,0x17
0A02 806F ori R24,240
0A04 87BB out 0x17,R24
0A06 .dbline 423
0A06 ; //SEI();
0A06 ; }
0A06 L98:
0A06 .dbline 424
0A06 ; }
0A06 L96:
0A06 .dbline 426
0A06 ;
0A06 ; }
0A06 L88:
0A06 .dbline 389
0A06 CCCF xjmp L87
0A08 L102:
0A08 .dbline 428
0A08 ; while(1)
0A08 ; { //(unsigned char)jiaodu;
0A08 .dbline 429
0A08 ; PORTF=juli;
0A08 20902100 lds R2,_juli
0A0C 30902200 lds R3,_juli+1
0A10 20926200 sts 98,R2
0A14 .dbline 430
0A14 ; if (!(PINE & STOP))jiaodu=100;//PWM_ON//PORTD=~PORTD;
0A14 0E99 sbic 0x1,6
0A16 0CC0 rjmp L105
0A18 X53:
0A18 .dbline 430
0A18 44E6 ldi R20,100
0A1A 50E0 ldi R21,0
0A1C 60E0 ldi R22,0
0A1E 70E0 ldi R23,0
0A20 50931E00 sts _jiaodu+1,R21
0A24 40931D00 sts _jiaodu,R20
0A28 70932000 sts _jiaodu+2+1,R23
0A2C 60931F00 sts _jiaodu+2,R22
0A30 L105:
0A30 .dbline 431
0A30 ; if (ms==1)
0A30 80910400 lds R24,_ms
0A34 90910500 lds R25,_ms+1
0A38 8130 cpi R24,1
0A3A A0E0 ldi R26,0
0A3C 9A07 cpc R25,R26
0A3E 09F0 breq X65
0A40 37C1 xjmp L107
0A42 X65:
0A42 X54:
0A42 .dbline 432
0A42 ; { //if (jiaodu!=n_jiaodu)//test
0A42 .dbline 433
0A42 ; if (jiaodu!=0)
0A42 40901F00 lds R4,_jiaodu+2
0A46 50902000 lds R5,_jiaodu+2+1
0A4A 20901D00 lds R2,_jiaodu
0A4E 30901E00 lds R3,_jiaodu+1
0A52 8894 clc
0A54 2220 tst R2
0A56 3204 cpc R3,R2
0A58 4204 cpc R4,R2
0A5A 5204 cpc R5,R2
0A5C 09F4 brne X66
0A5E 60C0 xjmp L109
0A60 X66:
0A60 X55:
0A60 .dbline 434
0A60 ; {//PORTF=jiaodu;
0A60 .dbline 436
0A60 ; //if (jiaodu<0-20)//test 旋转
0A60 ; if (ADCjohu0+20)//test
0AB4 ; else if (ADCjohu>jiaodu+20)
0AB4 44E1 ldi R20,20
0AB6 50E0 ldi R21,0
0AB8 60E0 ldi R22,0
0ABA 70E0 ldi R23,0
0ABC 40901F00 lds R4,_jiaodu+2
0AC0 50902000 lds R5,_jiaodu+2+1
0AC4 20901D00 lds R2,_jiaodu
0AC8 30901E00 lds R3,_jiaodu+1
0ACC 240E add R2,R20
0ACE 351E adc R3,R21
0AD0 461E adc R4,R22
0AD2 571E adc R5,R23
0AD4 80900200 lds R8,_ADCjohu+2
0AD8 90900300 lds R9,_ADCjohu+2+1
0ADC 60900000 lds R6,_ADCjohu
0AE0 70900100 lds R7,_ADCjohu+1
0AE4 2614 cp R2,R6
0AE6 3704 cpc R3,R7
0AE8 4804 cpc R4,R8
0AEA 5904 cpc R5,R9
0AEC A4F4 brge L113
0AEE X57:
0AEE .dbline 448
0AEE ; {DDRB |=(R_pwm0 | L_pwm1);
0AEE .dbline 448
0AEE 87B3 in R24,0x17
0AF0 8069 ori R24,144
0AF2 87BB out 0x17,R24
0AF4 .dbline 449
0AF4 ; DDRB &=~(R_pwm0 | L_pwm1);
0AF4 87B3 in R24,0x17
0AF6 8F76 andi R24,111
0AF8 87BB out 0x17,R24
0AFA .dbline 450
0AFA ; PORTB =0xf0;
0AFA 80EF ldi R24,240
0AFC 88BB out 0x18,R24
0AFE .dbline 451
0AFE ; OCR1AL = 0;
0AFE 2224 clr R2
0B00 2ABC out 0x2a,R2
0B02 .dbline 452
0B02 ; OCR1BL = 0;
0B02 28BC out 0x28,R2
0B04 .dbline 453
0B04 ; OCR1CL = pwm_pingjun;
0B04 20901100 lds R2,_pwm_pingjun
0B08 20927800 sts 120,R2
0B0C .dbline 454
0B0C ; OCR0=pwm_pingjun;
0B0C 21BE out 0x31,R2
0B0E .dbline 455
0B0E ; PWM_ON
0B0E 87B3 in R24,0x17
0B10 806F ori R24,240
0B12 87BB out 0x17,R24
0B14 .dbline 456
0B14 ; }
0B14 03C0 xjmp L114
0B16 L113:
0B16 .dbline 457
0B16 ; else PWM_OFF
0B16 87B3 in R24,0x17
0B18 8F70 andi R24,15
0B1A 87BB out 0x17,R24
0B1C L114:
0B1C L112:
0B1C .dbline 458
0B1C ; n_jiaodu=jiaodu;
0B1C A0901D00 lds R10,_jiaodu
0B20 .dbline 459
0B20 ; }
0B20 L109:
0B20 .dbline 460
0B20 ; if (juli!=0)
0B20 40902300 lds R4,_juli+2
0B24 50902400 lds R5,_juli+2+1
0B28 20902100 lds R2,_juli
0B2C 30902200 lds R3,_juli+1
0B30 8894 clc
0B32 2220 tst R2
0B34 3204 cpc R3,R2
0B36 4204 cpc R4,R2
0B38 5204 cpc R5,R2
0B3A 09F4 brne X67
0B3C 89C0 xjmp L115
0B3E X67:
0B3E X58:
0B3E .dbline 461
0B3E ; if (sec!=n_sec)
0B3E 20902700 lds R2,_sec
0B42 2A14 cp R2,R10
0B44 09F4 brne X68
0B46 84C0 xjmp L117
0B48 X68:
0B48 X59:
0B48 .dbline 462
0B48 ; {
0B48 .dbline 463
0B48 ; if (juli>0)
0B48 40E0 ldi R20,0
0B4A 50E0 ldi R21,0
0B4C 60E0 ldi R22,0
0B4E 70E0 ldi R23,0
0B50 40902300 lds R4,_juli+2
0B54 50902400 lds R5,_juli+2+1
0B58 20902100 lds R2,_juli
0B5C 30902200 lds R3,_juli+1
0B60 4215 cp R20,R2
0B62 5305 cpc R21,R3
0B64 6405 cpc R22,R4
0B66 7505 cpc R23,R5
0B68 84F5 brge L119
0B6A X60:
0B6A .dbline 464
0B6A ; {DDRB |=(R_pwm1 | L_pwm1);
0B6A .dbline 464
0B6A 87B3 in R24,0x17
0B6C 806A ori R24,160
0B6E 87BB out 0x17,R24
0B70 .dbline 465
0B70 ; DDRB &=~(R_pwm1 | L_pwm1);
0B70 87B3 in R24,0x17
0B72 8F75 andi R24,95
0B74 87BB out 0x17,R24
0B76 .dbline 466
0B76 ; OCR1AL = 0;
0B76 2224 clr R2
0B78 2ABC out 0x2a,R2
0B7A .dbline 467
0B7A ; OCR1BL = pwm_pingjun+Rpwm0;
0B7A 20901200 lds R2,_Rpwm0
0B7E 30901100 lds R3,_pwm_pingjun
0B82 320C add R3,R2
0B84 38BC out 0x28,R3
0B86 .dbline 468
0B86 ; OCR1CL = 0;
0B86 2224 clr R2
0B88 20927800 sts 120,R2
0B8C .dbline 469
0B8C ; OCR0=pwm_pingjun;
0B8C 20901100 lds R2,_pwm_pingjun
0B90 21BE out 0x31,R2
0B92 .dbline 470
0B92 ; PWM_ON
0B92 87B3 in R24,0x17
0B94 806F ori R24,240
0B96 87BB out 0x17,R24
0B98 .dbline 471
0B98 ; juli--;
0B98 41E0 ldi R20,1
0B9A 50E0 ldi R21,0
0B9C 60E0 ldi R22,0
0B9E 70E0 ldi R23,0
0BA0 40902300 lds R4,_juli+2
0BA4 50902400 lds R5,_juli+2+1
0BA8 20902100 lds R2,_juli
0BAC 30902200 lds R3,_juli+1
0BB0 241A sub R2,R20
0BB2 350A sbc R3,R21
0BB4 460A sbc R4,R22
0BB6 570A sbc R5,R23
0BB8 30922200 sts _juli+1,R3
0BBC 20922100 sts _juli,R2
0BC0 50922400 sts _juli+2+1,R5
0BC4 40922300 sts _juli+2,R4
0BC8 .dbline 472
0BC8 ; }
0BC8 41C0 xjmp L120
0BCA L119:
0BCA .dbline 473
0BCA ; else if (juli<0)
0BCA 40E0 ldi R20,0
0BCC 50E0 ldi R21,0
0BCE 60E0 ldi R22,0
0BD0 70E0 ldi R23,0
0BD2 40902300 lds R4,_juli+2
0BD6 50902400 lds R5,_juli+2+1
0BDA 20902100 lds R2,_juli
0BDE 30902200 lds R3,_juli+1
0BE2 2416 cp R2,R20
0BE4 3506 cpc R3,R21
0BE6 4606 cpc R4,R22
0BE8 5706 cpc R5,R23
0BEA 6CF5 brge L121
0BEC X61:
0BEC .dbline 474
0BEC ; {DDRB |=(R_pwm0 | L_pwm0);
0BEC .dbline 474
0BEC 87B3 in R24,0x17
0BEE 8065 ori R24,80
0BF0 87BB out 0x17,R24
0BF2 .dbline 475
0BF2 ; DDRB &=~(R_pwm0 | L_pwm0);
0BF2 87B3 in R24,0x17
0BF4 8F7A andi R24,175
0BF6 87BB out 0x17,R24
0BF8 .dbline 476
0BF8 ; OCR1AL = pwm_pingjun;
0BF8 20901100 lds R2,_pwm_pingjun
0BFC 2ABC out 0x2a,R2
0BFE .dbline 477
0BFE ; OCR1BL = 0;
0BFE 2224 clr R2
0C00 28BC out 0x28,R2
0C02 .dbline 478
0C02 ; OCR1CL = pwm_pingjun;
0C02 20901100 lds R2,_pwm_pingjun
0C06 20927800 sts 120,R2
0C0A .dbline 479
0C0A ; OCR0=0;
0C0A 2224 clr R2
0C0C 21BE out 0x31,R2
0C0E .dbline 480
0C0E ; PWM_ON
0C0E 87B3 in R24,0x17
0C10 806F ori R24,240
0C12 87BB out 0x17,R24
0C14 .dbline 481
0C14 ; juli++;
0C14 41E0 ldi R20,1
0C16 50E0 ldi R21,0
0C18 60E0 ldi R22,0
0C1A 70E0 ldi R23,0
0C1C 40902300 lds R4,_juli+2
0C20 50902400 lds R5,_juli+2+1
0C24 20902100 lds R2,_juli
0C28 30902200 lds R3,_juli+1
0C2C 240E add R2,R20
0C2E 351E adc R3,R21
0C30 461E adc R4,R22
0C32 571E adc R5,R23
0C34 30922200 sts _juli+1,R3
0C38 20922100 sts _juli,R2
0C3C 50922400 sts _juli+2+1,R5
0C40 40922300 sts _juli+2,R4
0C44 .dbline 482
0C44 ; }/**/
0C44 03C0 xjmp L122
0C46 L121:
0C46 .dbline 483
0C46 ; else PWM_OFF
0C46 87B3 in R24,0x17
0C48 8F70 andi R24,15
0C4A 87BB out 0x17,R24
0C4C L122:
0C4C L120:
0C4C .dbline 484
0C4C ; n_sec=sec;
0C4C A0902700 lds R10,_sec
0C50 .dbline 485
0C50 ; }
0C50 L117:
0C50 L115:
0C50 .dbline 489
0C50 ;
0C50 ; //number(0,2,5,xx,1);
0C50 ; //number(0,4,5,ADCjohu,1);
0C50 ; if (!(PINE & PREVSONG))xx=0;
0C50 0A99 sbic 0x1,2
0C52 0CC0 rjmp L123
0C54 X62:
0C54 .dbline 489
0C54 40E0 ldi R20,0
0C56 50E0 ldi R21,0
0C58 60E0 ldi R22,0
0C5A 70E0 ldi R23,0
0C5C 50930700 sts _xx+1,R21
0C60 40930600 sts _xx,R20
0C64 70930900 sts _xx+2+1,R23
0C68 60930800 sts _xx+2,R22
0C6C L123:
0C6C .dbline 490
0C6C ; if (!(PINE & NEXTSONG))
0C6C 0B99 sbic 0x1,3
0C6E 1AC0 rjmp L125
0C70 X63:
0C70 .dbline 491
0C70 ; {
0C70 .dbline 493
0C70 ; //CLI();
0C70 ; number_uart1(xx,0);
0C70 2224 clr R2
0C72 2882 std y+0,R2
0C74 20910800 lds R18,_xx+2
0C78 30910900 lds R19,_xx+2+1
0C7C 00910600 lds R16,_xx
0C80 10910700 lds R17,_xx+1
0C84 08DD xcall _number_uart1
0C86 .dbline 494
0C86 ; number_uart1(ADCjohu,1);
0C86 81E0 ldi R24,1
0C88 8883 std y+0,R24
0C8A 20910200 lds R18,_ADCjohu+2
0C8E 30910300 lds R19,_ADCjohu+2+1
0C92 00910000 lds R16,_ADCjohu
0C96 10910100 lds R17,_ADCjohu+1
0C9A FDDC xcall _number_uart1
0C9C .dbline 495
0C9C ; delay_ms(20);
0C9C 04E1 ldi R16,20
0C9E 10E0 ldi R17,0
0CA0 0E940000 xcall _delay_ms
0CA4 .dbline 497
0CA4 ; //SEI();
0CA4 ; }
0CA4 L125:
0CA4 .dbline 498
0CA4 ; ms=0;
0CA4 2224 clr R2
0CA6 3324 clr R3
0CA8 30920500 sts _ms+1,R3
0CAC 20920400 sts _ms,R2
0CB0 .dbline 499
0CB0 ; }
0CB0 L107:
0CB0 .dbline 500
0CB0 ; }
0CB0 L103:
0CB0 .dbline 427
0CB0 ABCE xjmp L102
0CB2 X64:
0CB2 .dbline -2
0CB2 L86:
0CB2 .dbline 0 ; func end
0CB2 2196 adiw R28,1
0CB4 0895 ret
0CB6 .dbsym l n 2 I
0CB6 .dbsym r n_juli 10 c
0CB6 .dbsym r n_jiaodu 10 c
0CB6 .dbsym r n_sec 10 c
0CB6 .dbsym r pwm_duoji 10 i
0CB6 .dbend
0CB6 ;
0CB6 ; }