📄 compare.lis
字号:
.module Compare.c
.area data(ram, con, rel)
0000 _Table::
0000 .blkb 2
.area idata
0000 3F06 .byte 63,6
.area data(ram, con, rel)
0002 .blkb 2
.area idata
0002 5B4F .byte 91,'O
.area data(ram, con, rel)
0004 .blkb 2
.area idata
0004 666D .byte 'f,'m
.area data(ram, con, rel)
0006 .blkb 2
.area idata
0006 7D07 .byte 125,7
.area data(ram, con, rel)
0008 .blkb 2
.area idata
0008 7F6F .byte 127,'o
.area data(ram, con, rel)
000A .dbfile I:\AVRpractice\BOOK\定时器1\输出比较\Compare.c
000A .dbsym e Table _Table A[10:10]c
000A _Data::
000A .blkb 2
.area idata
000A 0000 .byte 0,0
.area data(ram, con, rel)
000C .dbfile I:\AVRpractice\BOOK\定时器1\输出比较\Compare.c
000C .blkb 2
.area idata
000C 0001 .byte 0,1
.area data(ram, con, rel)
000E .dbfile I:\AVRpractice\BOOK\定时器1\输出比较\Compare.c
000E .dbsym e Data _Data A[4:4]c
.area text(rom, con, rel)
0000 .dbfile I:\AVRpractice\BOOK\定时器1\输出比较\Compare.c
0000 .dbfunc e DelayMs _DelayMs fV
0000 ; j -> R20,R21
0000 ; i -> R16,R17
.even
0000 _DelayMs::
0000 00D0 rcall push_gset1
0002 .dbline -1
0002 .dbline 14
0002 ; //***************FileName:Capature.C***************//
0002 ; //***************ICCAVR V6.30编译*****************//
0002 ;
0002 ; #include <io8535v.h>
0002 ; #define uchar unsigned char
0002 ; #define uint unsigned int
0002 ;
0002 ; //数码管字型表,对应0,1,2,3,4,5,6,7,8,9//
0002 ; uchar Table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
0002 ; uchar Data[4]={0,0,0,1}; //定义初始方波频率:1KHz
0002 ; uchar Key1_Flag,Key2_Flag,Key3_Flag;
0002 ;
0002 ; void DelayMs(uint i) //Ms级延时,参数i为延时时间
0002 ; {uint j;
0002 .dbline 15
0002 ; for(;i!=0;i--)
0002 0AC0 rjmp L5
0004 L2:
0004 .dbline 16
0004 .dbline 16
0004 40E4 ldi R20,8000
0006 5FE1 ldi R21,31
0008 02C0 rjmp L9
000A L6:
000A .dbline 16
000A .dbline 16
000A .dbline 16
000A L7:
000A .dbline 16
000A 4150 subi R20,1
000C 5040 sbci R21,0
000E L9:
000E .dbline 16
000E 4030 cpi R20,0
0010 4507 cpc R20,R21
0012 D9F7 brne L6
0014 X0:
0014 .dbline 16
0014 L3:
0014 .dbline 15
0014 0150 subi R16,1
0016 1040 sbci R17,0
0018 L5:
0018 .dbline 15
0018 0030 cpi R16,0
001A 0107 cpc R16,R17
001C 99F7 brne L2
001E X1:
001E .dbline -2
001E .dbline 17
001E ; {for(j=8000;j!=0;j--) {;}}
001E ; }
001E L1:
001E 00D0 rcall pop_gset1
0020 .dbline 0 ; func end
0020 0895 ret
0022 .dbsym r j 20 i
0022 .dbsym r i 16 i
0022 .dbend
0022 .dbfunc e Display _Display fV
0022 ; sel -> R20
0022 ; i -> R22
0022 ; p -> R10,R11
.even
0022 _Display::
0022 00D0 rcall push_gset3
0024 A02E mov R10,R16
0026 B12E mov R11,R17
0028 .dbline -1
0028 .dbline 20
0028 ;
0028 ; void Display(uchar *p) //动态显示函数,参数p为待显示的数组名
0028 ; {uchar i,sel=0x01;
0028 .dbline 20
0028 41E0 ldi R20,1
002A .dbline 21
002A ; for(i=0;i<4;i++)
002A 6627 clr R22
002C 17C0 rjmp L14
002E L11:
002E .dbline 22
002E .dbline 22
002E 4BBB out 0x1b,R20
0030 .dbline 23
0030 E62F mov R30,R22
0032 FF27 clr R31
0034 EA0D add R30,R10
0036 FB1D adc R31,R11
0038 E081 ldd R30,z+0
003A FF27 clr R31
003C 80E0 ldi R24,<_Table
003E 90E0 ldi R25,>_Table
0040 E80F add R30,R24
0042 F91F adc R31,R25
0044 2080 ldd R2,z+0
0046 3324 clr R3
0048 8FEF ldi R24,255
004A 90E0 ldi R25,0
004C 8219 sub R24,R2
004E 9309 sbc R25,R3
0050 85BB out 0x15,R24
0052 .dbline 24
0052 01E0 ldi R16,1
0054 10E0 ldi R17,0
0056 D4DF rcall _DelayMs
0058 .dbline 25
0058 440F lsl R20
005A .dbline 26
005A L12:
005A .dbline 21
005A 6395 inc R22
005C L14:
005C .dbline 21
005C 6430 cpi R22,4
005E 38F3 brlo L11
0060 .dbline -2
0060 .dbline 27
0060 ; {PORTA=sel; //选通最右边的数码管
0060 ; PORTC=0xff-Table[p[i]]; //送字型码
0060 ; DelayMs(1); //显示延时
0060 ; sel=sel<<1; //移位以显示前一位
0060 ; }
0060 ; }
0060 L10:
0060 00D0 rcall pop_gset3
0062 .dbline 0 ; func end
0062 0895 ret
0064 .dbsym r sel 20 c
0064 .dbsym r i 22 c
0064 .dbsym r p 10 pc
0064 .dbend
0064 .dbfunc e Key_Process _Key_Process fV
0064 ; k -> <dead>
0064 ; j -> <dead>
0064 ; i -> <dead>
0064 ; p -> R20,R21
.even
0064 _Key_Process::
0064 00D0 rcall push_gset1
0066 402F mov R20,R16
0068 512F mov R21,R17
006A .dbline -1
006A .dbline 30
006A ;
006A ; void Key_Process(uchar *p)
006A ; {uchar i,j,k;
006A 06C0 rjmp L17
006C L16:
006C .dbline 31
006C .dbline 31
006C 00E0 ldi R16,<_Data
006E 10E0 ldi R17,>_Data
0070 D8DF rcall _Display
0072 .dbline 31
0072 81E0 ldi R24,1
0074 80930200 sts _Key1_Flag,R24
0078 .dbline 31
0078 L17:
0078 .dbline 31
0078 ; while((PINB&0x01)==0) {Display(Data);Key1_Flag=1;} //处理频率百位,最高5
0078 B09B sbis 0x16,0
007A F8CF rjmp L16
007C 06C0 rjmp L20
007E L19:
007E .dbline 32
007E .dbline 32
007E 00E0 ldi R16,<_Data
0080 10E0 ldi R17,>_Data
0082 CFDF rcall _Display
0084 .dbline 32
0084 81E0 ldi R24,1
0086 80930100 sts _Key2_Flag,R24
008A .dbline 32
008A L20:
008A .dbline 32
008A ; while((PINB&0x02)==0) {Display(Data);Key2_Flag=1;}
008A B19B sbis 0x16,1
008C F8CF rjmp L19
008E 06C0 rjmp L23
0090 L22:
0090 .dbline 33
0090 .dbline 33
0090 00E0 ldi R16,<_Data
0092 10E0 ldi R17,>_Data
0094 C6DF rcall _Display
0096 .dbline 33
0096 81E0 ldi R24,1
0098 80930000 sts _Key3_Flag,R24
009C .dbline 33
009C L23:
009C .dbline 33
009C ; while((PINB&0x04)==0) {Display(Data);Key3_Flag=1;}
009C B29B sbis 0x16,2
009E F8CF rjmp L22
00A0 .dbline 34
00A0 ; if(Key1_Flag==1)
00A0 80910200 lds R24,_Key1_Flag
00A4 8130 cpi R24,1
00A6 A1F4 brne L25
00A8 .dbline 35
00A8 ; {p[3]++;
00A8 .dbline 35
00A8 842F mov R24,R20
00AA 952F mov R25,R21
00AC 0396 adiw R24,3
00AE E82F mov R30,R24
00B0 F92F mov R31,R25
00B2 8081 ldd R24,z+0
00B4 8F5F subi R24,255 ; addi 1
00B6 8083 std z+0,R24
00B8 .dbline 36
00B8 ; if(p[3]==10) p[3]=0;
00B8 E42F mov R30,R20
00BA F52F mov R31,R21
00BC 8381 ldd R24,z+3
00BE 8A30 cpi R24,10
00C0 21F4 brne L27
00C2 .dbline 36
00C2 2224 clr R2
00C4 E42F mov R30,R20
00C6 F52F mov R31,R21
00C8 2382 std z+3,R2
00CA L27:
00CA .dbline 37
00CA ; Key1_Flag=0;}
00CA 2224 clr R2
00CC 20920200 sts _Key1_Flag,R2
00D0 .dbline 37
00D0 L25:
00D0 .dbline 38
00D0 ; if(Key2_Flag==1) //处理频率十位,最高9
00D0 80910100 lds R24,_Key2_Flag
00D4 8130 cpi R24,1
00D6 A1F4 brne L29
00D8 .dbline 39
00D8 ; {p[2]++;
00D8 .dbline 39
00D8 842F mov R24,R20
00DA 952F mov R25,R21
00DC 0296 adiw R24,2
00DE E82F mov R30,R24
00E0 F92F mov R31,R25
00E2 8081 ldd R24,z+0
00E4 8F5F subi R24,255 ; addi 1
00E6 8083 std z+0,R24
00E8 .dbline 40
00E8 ; if(p[2]==10) p[2]=0;
00E8 E42F mov R30,R20
00EA F52F mov R31,R21
00EC 8281 ldd R24,z+2
00EE 8A30 cpi R24,10
00F0 21F4 brne L31
00F2 .dbline 40
00F2 2224 clr R2
00F4 E42F mov R30,R20
00F6 F52F mov R31,R21
00F8 2282 std z+2,R2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -