📄 m16_t1_compare.lis
字号:
00E2 2282 std z+2,R2
00E4 L31:
00E4 .dbline 45
00E4 ; Key2=0;
00E4 2224 clr R2
00E6 20920100 sts _Key2,R2
00EA .dbline 46
00EA ; }
00EA L29:
00EA .dbline 47
00EA ; if(Key3==1)
00EA 80910000 lds R24,_Key3
00EE 8130 cpi R24,1
00F0 81F4 brne L33
00F2 .dbline 48
00F2 ; {
00F2 .dbline 49
00F2 ; p[1]++;
00F2 CA01 movw R24,R20
00F4 0196 adiw R24,1
00F6 FC01 movw R30,R24
00F8 8081 ldd R24,z+0
00FA 8F5F subi R24,255 ; addi 1
00FC 8083 std z+0,R24
00FE .dbline 50
00FE ; if(p[1]==10) p[1]=0;
00FE FA01 movw R30,R20
0100 8181 ldd R24,z+1
0102 8A30 cpi R24,10
0104 19F4 brne L35
0106 .dbline 50
0106 2224 clr R2
0108 FA01 movw R30,R20
010A 2182 std z+1,R2
010C L35:
010C .dbline 51
010C 2224 clr R2
010E 20920000 sts _Key3,R2
0112 .dbline 52
0112 L33:
0112 .dbline -2
0112 .dbline 53
0112 ; Key3=0;
0112 ; }
0112 ; }
0112 L15:
0112 0E940000 xcall pop_gset1
0116 .dbline 0 ; func end
0116 0895 ret
0118 .dbsym r p 20 pc
0118 .dbend
0118 .dbfunc e Set_Process _Set_Process fV
0118 ; i -> R20,R21
0118 ; j -> R20,R21
.even
0118 _Set_Process::
0118 0E940000 xcall push_gset1
011C .dbline -1
011C .dbline 56
011C ;
011C ; void Set_Process(void)
011C ; {
011C .dbline 58
011C ; uint i,j;
011C ; i=Data[0]*1000+Data[1]*100+Data[2]*10+Data[3];
011C .dbline 59
011C ; j=500/i;
011C .dbline 60
011C ; OCR1AH=j>>8;
011C 20900B00 lds R2,_Data+1
0120 84E6 ldi R24,100
0122 829D mul R24,R2
0124 1001 movw R2,R0
0126 20910A00 lds R18,_Data
012A 3327 clr R19
012C 08EE ldi R16,1000
012E 13E0 ldi R17,3
0130 0E940000 xcall empy16s
0134 A801 movw R20,R16
0136 420D add R20,R2
0138 531D adc R21,R3
013A 20900C00 lds R2,_Data+2
013E 8AE0 ldi R24,10
0140 829D mul R24,R2
0142 400D add R20,R0
0144 511D adc R21,R1
0146 20900D00 lds R2,_Data+3
014A 3324 clr R3
014C 420D add R20,R2
014E 531D adc R21,R3
0150 04EF ldi R16,500
0152 11E0 ldi R17,1
0154 9A01 movw R18,R20
0156 0E940000 xcall div16u
015A A801 movw R20,R16
015C 1A01 movw R2,R20
015E 232C mov R2,R3
0160 3324 clr R3
0162 2BBC out 0x2b,R2
0164 .dbline 61
0164 ; OCR1AL=j&0x00ff;
0164 CA01 movw R24,R20
0166 9070 andi R25,0
0168 8ABD out 0x2a,R24
016A .dbline -2
016A .dbline 62
016A ; }
016A L37:
016A 0E940000 xcall pop_gset1
016E .dbline 0 ; func end
016E 0895 ret
0170 .dbsym r i 20 i
0170 .dbsym r j 20 i
0170 .dbend
0170 .dbfunc e Init_IO _Init_IO fV
.even
0170 _Init_IO::
0170 .dbline -1
0170 .dbline 65
0170 ;
0170 ; void Init_IO(void)
0170 ; {
0170 .dbline 66
0170 ; DDRA=0xff;
0170 8FEF ldi R24,255
0172 8ABB out 0x1a,R24
0174 .dbline 67
0174 ; PORTA=0xff;
0174 8BBB out 0x1b,R24
0176 .dbline 68
0176 ; DDRC=0xff;
0176 84BB out 0x14,R24
0178 .dbline 69
0178 ; PORTC=0xff;
0178 85BB out 0x15,R24
017A .dbline 70
017A ; DDRB=0x00;
017A 2224 clr R2
017C 27BA out 0x17,R2
017E .dbline 71
017E ; PORTB=0x00;
017E 28BA out 0x18,R2
0180 .dbline 72
0180 ; DDRD=0xff;
0180 81BB out 0x11,R24
0182 .dbline 73
0182 ; PORTD=0xff;
0182 82BB out 0x12,R24
0184 .dbline -2
0184 .dbline 74
0184 ; }
0184 L41:
0184 .dbline 0 ; func end
0184 0895 ret
0186 .dbend
0186 .dbfunc e Init_Timer1 _Init_Timer1 fV
.even
0186 _Init_Timer1::
0186 .dbline -1
0186 .dbline 77
0186 ;
0186 ; void Init_Timer1(void)
0186 ; {
0186 .dbline 78
0186 ; TIMSK=TIMSK|0x10;
0186 89B7 in R24,0x39
0188 8061 ori R24,16
018A 89BF out 0x39,R24
018C .dbline 79
018C ; TCCR1B=0x0a;
018C 8AE0 ldi R24,10
018E 8EBD out 0x2e,R24
0190 .dbline 80
0190 ; TCNT1H=0x00;
0190 2224 clr R2
0192 2DBC out 0x2d,R2
0194 .dbline 81
0194 ; TCNT1L=0x00;
0194 2CBC out 0x2c,R2
0196 .dbline 82
0196 ; Set_Process();
0196 C0DF xcall _Set_Process
0198 .dbline 83
0198 ; SREG=SREG|0x80;
0198 7894 bset 7
019A .dbline -2
019A .dbline 84
019A ; }
019A L42:
019A .dbline 0 ; func end
019A 0895 ret
019C .dbend
019C .dbfunc e main _main fV
.even
019C _main::
019C .dbline -1
019C .dbline 87
019C ;
019C ; void main(void)
019C ; {
019C .dbline 88
019C ; Init_IO();
019C E9DF xcall _Init_IO
019E .dbline 89
019E ; Init_Timer1();
019E F3DF xcall _Init_Timer1
01A0 .dbline 90
01A0 ; DelayMs(50);
01A0 02E3 ldi R16,50
01A2 2EDF xcall _DelayMs
01A4 07C0 xjmp L45
01A6 L44:
01A6 .dbline 92
01A6 .dbline 93
01A6 00E0 ldi R16,<_Data
01A8 10E0 ldi R17,>_Data
01AA 59DF xcall _Key_Process
01AC .dbline 94
01AC B5DF xcall _Set_Process
01AE .dbline 95
01AE 00E0 ldi R16,<_Data
01B0 10E0 ldi R17,>_Data
01B2 34DF xcall _Display
01B4 .dbline 96
01B4 L45:
01B4 .dbline 91
01B4 F8CF xjmp L44
01B6 X0:
01B6 .dbline -2
01B6 .dbline 97
01B6 ; while(1)
01B6 ; {
01B6 ; Key_Process(Data);
01B6 ; Set_Process();
01B6 ; Display(Data);
01B6 ; }
01B6 ; }
01B6 L43:
01B6 .dbline 0 ; func end
01B6 0895 ret
01B8 .dbend
.area vector(rom, abs)
.org 24
0018 0C94DC00 jmp _Compare
.area text(rom, con, rel)
01B8 .dbfile F:\myavr\temp\M16_T1_Compare\M16_T1_Compare.c
01B8 .dbfunc e Compare _Compare fV
.even
01B8 _Compare::
01B8 2A92 st -y,R2
01BA 2FB6 in R2,0x3f
01BC 2A92 st -y,R2
01BE .dbline -1
01BE .dbline 101
01BE ;
01BE ; #pragma interrupt_handler Compare:7
01BE ; void Compare(void)
01BE ; {PORTD=~PORTD;}
01BE .dbline 101
01BE 22B2 in R2,0x12
01C0 2094 com R2
01C2 22BA out 0x12,R2
01C4 .dbline -2
01C4 .dbline 101
01C4 L47:
01C4 2990 ld R2,y+
01C6 2FBE out 0x3f,R2
01C8 2990 ld R2,y+
01CA .dbline 0 ; func end
01CA 1895 reti
01CC .dbend
.area bss(ram, con, rel)
0000 .dbfile F:\myavr\temp\M16_T1_Compare\M16_T1_Compare.c
0000 _Key3::
0000 .blkb 1
0001 .dbsym e Key3 _Key3 c
0001 _Key2::
0001 .blkb 1
0002 .dbsym e Key2 _Key2 c
0002 _Key1::
0002 .blkb 1
0003 .dbsym e Key1 _Key1 c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -