📄 compare.lis
字号:
00FA L31:
00FA .dbline 41
00FA ; Key2_Flag=0;}
00FA 2224 clr R2
00FC 20920100 sts _Key2_Flag,R2
0100 .dbline 41
0100 L29:
0100 .dbline 42
0100 ; if(Key3_Flag==1) //处理频率各位,最高9
0100 80910000 lds R24,_Key3_Flag
0104 8130 cpi R24,1
0106 A1F4 brne L33
0108 .dbline 43
0108 ; {p[1]++;
0108 .dbline 43
0108 842F mov R24,R20
010A 952F mov R25,R21
010C 0196 adiw R24,1
010E E82F mov R30,R24
0110 F92F mov R31,R25
0112 8081 ldd R24,z+0
0114 8F5F subi R24,255 ; addi 1
0116 8083 std z+0,R24
0118 .dbline 44
0118 ; if(p[1]==10) p[1]=0;
0118 E42F mov R30,R20
011A F52F mov R31,R21
011C 8181 ldd R24,z+1
011E 8A30 cpi R24,10
0120 21F4 brne L35
0122 .dbline 44
0122 2224 clr R2
0124 E42F mov R30,R20
0126 F52F mov R31,R21
0128 2182 std z+1,R2
012A L35:
012A .dbline 45
012A 2224 clr R2
012C 20920000 sts _Key3_Flag,R2
0130 .dbline 45
0130 L33:
0130 .dbline -2
0130 .dbline 46
0130 ; Key3_Flag=0;}
0130 ; }
0130 L15:
0130 00D0 rcall pop_gset1
0132 .dbline 0 ; func end
0132 0895 ret
0134 .dbsym l k 1 c
0134 .dbsym l j 1 c
0134 .dbsym l i 1 c
0134 .dbsym r p 20 pc
0134 .dbend
0134 .dbfunc e Set_Process _Set_Process fV
0134 ; i -> R20,R21
0134 ; j -> R20,R21
.even
0134 _Set_Process::
0134 00D0 rcall push_gset1
0136 .dbline -1
0136 .dbline 49
0136 ;
0136 ; void Set_Process(void)
0136 ; {uint i,j;
0136 .dbline 50
0136 ; i=Data[0]*1000+Data[1]*100+Data[2]*10+Data[3];
0136 20910B00 lds R18,_Data+1
013A 3327 clr R19
013C 04E6 ldi R16,100
013E 10E0 ldi R17,0
0140 00D0 rcall mpy16s
0142 202E mov R2,R16
0144 312E mov R3,R17
0146 20910A00 lds R18,_Data
014A 3327 clr R19
014C 08EE ldi R16,1000
014E 13E0 ldi R17,3
0150 00D0 rcall mpy16s
0152 402F mov R20,R16
0154 512F mov R21,R17
0156 420D add R20,R2
0158 531D adc R21,R3
015A 20910C00 lds R18,_Data+2
015E 3327 clr R19
0160 0AE0 ldi R16,10
0162 10E0 ldi R17,0
0164 00D0 rcall mpy16s
0166 400F add R20,R16
0168 511F adc R21,R17
016A 20900D00 lds R2,_Data+3
016E 3324 clr R3
0170 420D add R20,R2
0172 531D adc R21,R3
0174 .dbline 51
0174 ; j=500/i;
0174 04EF ldi R16,500
0176 11E0 ldi R17,1
0178 242F mov R18,R20
017A 352F mov R19,R21
017C 00D0 rcall div16u
017E 402F mov R20,R16
0180 512F mov R21,R17
0182 .dbline 52
0182 ; OCR1AH=j>>8;
0182 242E mov R2,R20
0184 352E mov R3,R21
0186 232C mov R2,R3
0188 3324 clr R3
018A 2BBC out 0x2b,R2
018C .dbline 53
018C ; OCR1AL=j&0x00ff;
018C 842F mov R24,R20
018E 952F mov R25,R21
0190 9070 andi R25,0
0192 8ABD out 0x2a,R24
0194 .dbline -2
0194 .dbline 54
0194 ; }
0194 L37:
0194 00D0 rcall pop_gset1
0196 .dbline 0 ; func end
0196 0895 ret
0198 .dbsym r i 20 i
0198 .dbsym r j 20 i
0198 .dbend
0198 .dbfunc e Init_IO _Init_IO fV
.even
0198 _Init_IO::
0198 .dbline -1
0198 .dbline 57
0198 ;
0198 ; void Init_IO(void) //初始化I/O口
0198 ; {DDRA=0xff; //设置A口为推挽1输出
0198 .dbline 57
0198 8FEF ldi R24,255
019A 8ABB out 0x1a,R24
019C .dbline 58
019C ; PORTA=0xff;
019C 8BBB out 0x1b,R24
019E .dbline 59
019E ; DDRC=0xff; //设置C口为推挽1输出
019E 84BB out 0x14,R24
01A0 .dbline 60
01A0 ; PORTC=0xff;
01A0 85BB out 0x15,R24
01A2 .dbline 61
01A2 ; DDRB=0x00; //设置B口为三态输入
01A2 2224 clr R2
01A4 27BA out 0x17,R2
01A6 .dbline 62
01A6 ; PORTB=0x00;
01A6 28BA out 0x18,R2
01A8 .dbline 63
01A8 ; DDRD=0xff; //设置D口为推挽1输出
01A8 81BB out 0x11,R24
01AA .dbline 64
01AA ; PORTD=0xff;
01AA 82BB out 0x12,R24
01AC .dbline -2
01AC .dbline 65
01AC ; }
01AC L41:
01AC .dbline 0 ; func end
01AC 0895 ret
01AE .dbend
01AE .dbfunc e Init_Timer1 _Init_Timer1 fV
.even
01AE _Init_Timer1::
01AE .dbline -1
01AE .dbline 68
01AE ;
01AE ; void Init_Timer1(void) //初始化T/C1的输入捕获中断
01AE ; {TIMSK=TIMSK|0x10; //输出比较使能
01AE .dbline 68
01AE 89B7 in R24,0x39
01B0 8061 ori R24,16
01B2 89BF out 0x39,R24
01B4 .dbline 69
01B4 ; TCCR1B=0x0a; //时钟1 频,输出比较匹配清除定时器值
01B4 8AE0 ldi R24,10
01B6 8EBD out 0x2e,R24
01B8 .dbline 70
01B8 ; TCNT1H=0x00; //清除定时器值
01B8 2224 clr R2
01BA 2DBC out 0x2d,R2
01BC .dbline 71
01BC ; TCNT1L=0x00;
01BC 2CBC out 0x2c,R2
01BE .dbline 72
01BE ; Set_Process(); //OCR1A,OCR1B置初值
01BE BADF rcall _Set_Process
01C0 .dbline 73
01C0 ; SREG=SREG|0x80; //全局中断开
01C0 7894 bset 7
01C2 .dbline -2
01C2 .dbline 74
01C2 ; }
01C2 L42:
01C2 .dbline 0 ; func end
01C2 0895 ret
01C4 .dbend
01C4 .dbfunc e main _main fV
.even
01C4 _main::
01C4 .dbline -1
01C4 .dbline 77
01C4 ;
01C4 ; void main(void)
01C4 ; {Init_IO(); //初始化I/O口
01C4 .dbline 77
01C4 E9DF rcall _Init_IO
01C6 .dbline 78
01C6 ; PORTA=0xff; //点亮以测试所有的数码管
01C6 8FEF ldi R24,255
01C8 8BBB out 0x1b,R24
01CA .dbline 79
01CA ; PORTC=0x00;
01CA 2224 clr R2
01CC 25BA out 0x15,R2
01CE .dbline 80
01CE ; Init_Timer1();
01CE EFDF rcall _Init_Timer1
01D0 .dbline 81
01D0 ; DelayMs(300); //延时
01D0 0CE2 ldi R16,300
01D2 11E0 ldi R17,1
01D4 15DF rcall _DelayMs
01D6 .dbline 82
01D6 ; PORTC=0xff; //熄灭所有的数码管
01D6 8FEF ldi R24,255
01D8 85BB out 0x15,R24
01DA 07C0 rjmp L45
01DC L44:
01DC .dbline 84
01DC .dbline 84
01DC 00E0 ldi R16,<_Data
01DE 10E0 ldi R17,>_Data
01E0 41DF rcall _Key_Process
01E2 .dbline 85
01E2 A8DF rcall _Set_Process
01E4 .dbline 86
01E4 00E0 ldi R16,<_Data
01E6 10E0 ldi R17,>_Data
01E8 1CDF rcall _Display
01EA .dbline 87
01EA L45:
01EA .dbline 83
01EA F8CF rjmp L44
01EC X2:
01EC .dbline -2
01EC .dbline 88
01EC ; while(1)
01EC ; {Key_Process(Data);
01EC ; Set_Process();
01EC ; Display(Data); //动态扫描显示
01EC ; }
01EC ; }
01EC L43:
01EC .dbline 0 ; func end
01EC 0895 ret
01EE .dbend
.area vector(rom, abs)
.org 12
000C F7C0 rjmp _Compare
.area text(rom, con, rel)
01EE .dbfile I:\AVRpractice\BOOK\定时器1\输出比较\Compare.c
01EE .dbfunc e Compare _Compare fV
.even
01EE _Compare::
01EE 2A92 st -y,R2
01F0 2FB6 in R2,0x3f
01F2 2A92 st -y,R2
01F4 .dbline -1
01F4 .dbline 92
01F4 ;
01F4 ; #pragma interrupt_handler Compare:7
01F4 ; void Compare(void)
01F4 ; {PORTD=~PORTD;}
01F4 .dbline 92
01F4 22B2 in R2,0x12
01F6 2094 com R2
01F8 22BA out 0x12,R2
01FA .dbline -2
01FA .dbline 92
01FA L47:
01FA 2990 ld R2,y+
01FC 2FBE out 0x3f,R2
01FE 2990 ld R2,y+
0200 .dbline 0 ; func end
0200 1895 reti
0202 .dbend
.area bss(ram, con, rel)
0000 .dbfile I:\AVRpractice\BOOK\定时器1\输出比较\Compare.c
0000 _Key3_Flag::
0000 .blkb 1
0001 .dbsym e Key3_Flag _Key3_Flag c
0001 _Key2_Flag::
0001 .blkb 1
0002 .dbsym e Key2_Flag _Key2_Flag c
0002 _Key1_Flag::
0002 .blkb 1
0003 .dbsym e Key1_Flag _Key1_Flag c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -