📄 main.lis
字号:
.module main.c
.area lit(rom, con, rel)
0000 _Tab::
0000 21F9 .byte 33,249
0002 1351 .byte 19,'Q
0004 C945 .byte 201,'E
0006 05F1 .byte 5,241
0008 0141 .byte 1,'A
000A 810D .byte 129,13
000C 2719 .byte 39,25
000E 0787 .byte 7,135
0010 .dbfile C:\ATMega8515\定时实验/ForATmega8515.h
0010 .dbsym e Tab _Tab A[16:16]kc
.area data(ram, con, rel)
0000 .dbfile C:\ATMega8515\定时实验/ForATmega8515.h
0000 _flag::
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile C:\ATMega8515\定时实验/ForATmega8515.h
0001 .dbfile C:\ATMega8515\定时实验\main.c
0001 .dbsym e flag _flag c
.area text(rom, con, rel)
0000 .dbfile C:\ATMega8515\定时实验\main.c
0000 .dbfunc e main _main fV
0000 ; count -> R20
.even
0000 _main::
0000 .dbline -1
0000 .dbline 10
0000 ; #include <iom8515v.h>
0000 ; #include"ForATmega8515.h"
0000 ;
0000 ;
0000 ; void delay(uint ticks);
0000 ; void display(uchar left,uchar right);
0000 ; uchar flag=0;
0000 ;
0000 ; void main()
0000 ; {
0000 .dbline 11
0000 ; uchar count=0;
0000 4427 clr R20
0002 .dbline 12
0002 ; init_devices();
0002 00D0 rcall _init_devices
0004 16C0 rjmp L3
0006 L2:
0006 .dbline 15
0006 ;
0006 ; while(1)
0006 ; {
0006 .dbline 16
0006 ; display(count/10,count%10);
0006 1AE0 ldi R17,10
0008 042F mov R16,R20
000A 00D0 rcall mod8u
000C 202F mov R18,R16
000E 1AE0 ldi R17,10
0010 042F mov R16,R20
0012 00D0 rcall div8u
0014 1ED0 rcall _display
0016 .dbline 17
0016 ; if(flag)
0016 20900000 lds R2,_flag
001A 2220 tst R2
001C 51F0 breq L5
001E .dbline 18
001E ; {
001E .dbline 19
001E ; if(count++==99)count=0;
001E 242E mov R2,R20
0020 3324 clr R3
0022 4F5F subi R20,255 ; addi 1
0024 822D mov R24,R2
0026 8336 cpi R24,99
0028 09F4 brne L7
002A .dbline 19
002A 4427 clr R20
002C L7:
002C .dbline 20
002C ; flag=0;
002C 2224 clr R2
002E 20920000 sts _flag,R2
0032 .dbline 21
0032 ; }
0032 L5:
0032 .dbline 22
0032 L3:
0032 .dbline 14
0032 E9CF rjmp L2
0034 X0:
0034 .dbline -2
0034 L1:
0034 .dbline 0 ; func end
0034 0895 ret
0036 .dbsym r count 20 c
0036 .dbend
0036 .dbfunc e delay _delay fV
0036 ; i -> R20
0036 ; ticks -> R16,R17
.even
0036 _delay::
0036 00D0 rcall push_gset1
0038 .dbline -1
0038 .dbline 26
0038 ; }
0038 ; }
0038 ;
0038 ; void delay(uint ticks)
0038 ; {
0038 .dbline 28
0038 07C0 rjmp L13
003A L10:
003A .dbline 28
003A 48EC ldi R20,200
003C 01C0 rjmp L17
003E L14:
003E .dbline 28
003E L15:
003E .dbline 28
003E 4A95 dec R20
0040 L17:
0040 .dbline 28
0040 4423 tst R20
0042 E9F7 brne L14
0044 L11:
0044 .dbline 28
0044 0150 subi R16,1
0046 1040 sbci R17,0
0048 L13:
0048 .dbline 28
0048 ; uchar i;
0048 ; for(;ticks!=0;ticks--)for(i=200;i!=0;i--);
0048 0030 cpi R16,0
004A 0107 cpc R16,R17
004C B1F7 brne L10
004E X1:
004E .dbline -2
004E L9:
004E 00D0 rcall pop_gset1
0050 .dbline 0 ; func end
0050 0895 ret
0052 .dbsym r i 20 c
0052 .dbsym r ticks 16 i
0052 .dbend
0052 .dbfunc e display _display fV
0052 ; right -> R20
0052 ; left -> R22
.even
0052 _display::
0052 00D0 rcall push_gset2
0054 422F mov R20,R18
0056 602F mov R22,R16
0058 .dbline -1
0058 .dbline 32
0058 ; }
0058 ;
0058 ; void display(uchar left,uchar right)
0058 ; {
0058 .dbline 33
0058 ; PORTA=Tab[left];//查表显示数码管
0058 80E0 ldi R24,<_Tab
005A 90E0 ldi R25,>_Tab
005C E62F mov R30,R22
005E FF27 clr R31
0060 E80F add R30,R24
0062 F91F adc R31,R25
0064 E491 lpm R30,Z
0066 EBBB out 0x1b,R30
0068 .dbline 34
0068 ; PORTC&=~SEG0; //选通左边的数码管
0068 AF98 cbi 0x15,7
006A .dbline 35
006A ; delay(1); //延时
006A 01E0 ldi R16,1
006C 10E0 ldi R17,0
006E E3DF rcall _delay
0070 .dbline 36
0070 ; PORTC|=SEG0; //关左边的数码管
0070 AF9A sbi 0x15,7
0072 .dbline 37
0072 ; PORTA=Tab[right];//查表显示数码管
0072 80E0 ldi R24,<_Tab
0074 90E0 ldi R25,>_Tab
0076 E42F mov R30,R20
0078 FF27 clr R31
007A E80F add R30,R24
007C F91F adc R31,R25
007E E491 lpm R30,Z
0080 EBBB out 0x1b,R30
0082 .dbline 38
0082 ; PORTC&=~SEG1; //选通右边的数码管
0082 AE98 cbi 0x15,6
0084 .dbline 39
0084 ; delay(1);
0084 01E0 ldi R16,1
0086 10E0 ldi R17,0
0088 D6DF rcall _delay
008A .dbline 40
008A ; PORTC|=SEG1; //关右边的数码管
008A AE9A sbi 0x15,6
008C .dbline -2
008C L18:
008C 00D0 rcall pop_gset2
008E .dbline 0 ; func end
008E 0895 ret
0090 .dbsym r right 20 c
0090 .dbsym r left 22 c
0090 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -