📄 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 text(rom, con, rel)
0000 .dbfile C:\ATMega8515\数码管/ForATmega8515.h
0000 .dbfile C:\ATMega8515\数码管\main.c
0000 .dbfunc e main _main fV
0000 ; softdelay -> R20,R21
0000 ; count -> R22
.even
0000 _main::
0000 .dbline -1
0000 .dbline 8
0000 ; #include <iom8515v.h>
0000 ; #include"ForATmega8515.h"
0000 ;
0000 ; void delay(uint ticks);
0000 ; void display(uchar left,uchar right);
0000 ;
0000 ; void main()
0000 ; {
0000 .dbline 9
0000 ; uchar count=0;
0000 6627 clr R22
0002 .dbline 10
0002 ; uint softdelay=1000;
0002 48EE ldi R20,1000
0004 53E0 ldi R21,3
0006 .dbline 11
0006 ; init_devices();
0006 00D0 rcall _init_devices
0008 17C0 rjmp L3
000A X0:
000A .dbline 13
000A ; while(1)
000A ; {
000A L5:
000A .dbline 14
000A 1AE0 ldi R17,10
000C 062F mov R16,R22
000E 00D0 rcall mod8u
0010 202F mov R18,R16
0012 1AE0 ldi R17,10
0014 062F mov R16,R22
0016 00D0 rcall div8u
0018 1FD0 rcall _display
001A L6:
001A .dbline 14
001A ; while(softdelay--)display(count/10,count%10);
001A 1A01 movw R2,R20
001C 4150 subi R20,1
001E 5040 sbci R21,0
0020 2220 tst R2
0022 99F7 brne L5
0024 3320 tst R3
0026 89F7 brne L5
0028 X1:
0028 .dbline 15
0028 ; softdelay=1000;
0028 48EE ldi R20,1000
002A 53E0 ldi R21,3
002C .dbline 16
002C ; if(++count==100)count=0;
002C 862F mov R24,R22
002E 8F5F subi R24,255 ; addi 1
0030 682F mov R22,R24
0032 6436 cpi R22,100
0034 09F4 brne L8
0036 .dbline 16
0036 6627 clr R22
0038 L8:
0038 .dbline 17
0038 L3:
0038 .dbline 12
0038 F0CF rjmp L6
003A X2:
003A .dbline -2
003A L1:
003A .dbline 0 ; func end
003A 0895 ret
003C .dbsym r softdelay 20 i
003C .dbsym r count 22 c
003C .dbend
003C .dbfunc e delay _delay fV
003C ; i -> R20
003C ; ticks -> R16,R17
.even
003C _delay::
003C 00D0 rcall push_gset1
003E .dbline -1
003E .dbline 21
003E ; }
003E ; }
003E ;
003E ; void delay(uint ticks)
003E ; {
003E .dbline 23
003E 07C0 rjmp L14
0040 L11:
0040 .dbline 23
0040 48EC ldi R20,200
0042 01C0 rjmp L18
0044 L15:
0044 .dbline 23
0044 L16:
0044 .dbline 23
0044 4A95 dec R20
0046 L18:
0046 .dbline 23
0046 4423 tst R20
0048 E9F7 brne L15
004A L12:
004A .dbline 23
004A 0150 subi R16,1
004C 1040 sbci R17,0
004E L14:
004E .dbline 23
004E ; uchar i;
004E ; for(;ticks!=0;ticks--)for(i=200;i!=0;i--);
004E 0030 cpi R16,0
0050 0107 cpc R16,R17
0052 B1F7 brne L11
0054 X3:
0054 .dbline -2
0054 L10:
0054 00D0 rcall pop_gset1
0056 .dbline 0 ; func end
0056 0895 ret
0058 .dbsym r i 20 c
0058 .dbsym r ticks 16 i
0058 .dbend
0058 .dbfunc e display _display fV
0058 ; right -> R20
0058 ; left -> R22
.even
0058 _display::
0058 00D0 rcall push_gset2
005A 422F mov R20,R18
005C 602F mov R22,R16
005E .dbline -1
005E .dbline 27
005E ; }
005E ;
005E ; void display(uchar left,uchar right)
005E ; {
005E .dbline 28
005E ; PORTA=Tab[left];//查表显示数码管
005E 80E0 ldi R24,<_Tab
0060 90E0 ldi R25,>_Tab
0062 E62F mov R30,R22
0064 FF27 clr R31
0066 E80F add R30,R24
0068 F91F adc R31,R25
006A E491 lpm R30,Z
006C EBBB out 0x1b,R30
006E .dbline 29
006E ; PORTC&=~SEG0; //选通左边的数码管
006E AF98 cbi 0x15,7
0070 .dbline 30
0070 ; delay(1); //延时
0070 01E0 ldi R16,1
0072 10E0 ldi R17,0
0074 E3DF rcall _delay
0076 .dbline 31
0076 ; PORTC|=SEG0; //关左边的数码管
0076 AF9A sbi 0x15,7
0078 .dbline 32
0078 ; PORTA=Tab[right];//查表显示数码管
0078 80E0 ldi R24,<_Tab
007A 90E0 ldi R25,>_Tab
007C E42F mov R30,R20
007E FF27 clr R31
0080 E80F add R30,R24
0082 F91F adc R31,R25
0084 E491 lpm R30,Z
0086 EBBB out 0x1b,R30
0088 .dbline 33
0088 ; PORTC&=~SEG1; //选通右边的数码管
0088 AE98 cbi 0x15,6
008A .dbline 34
008A ; delay(1);
008A 01E0 ldi R16,1
008C 10E0 ldi R17,0
008E D6DF rcall _delay
0090 .dbline 35
0090 ; PORTC|=SEG1; //关右边的数码管
0090 AE9A sbi 0x15,6
0092 .dbline -2
0092 L19:
0092 00D0 rcall pop_gset2
0094 .dbline 0 ; func end
0094 0895 ret
0096 .dbsym r right 20 c
0096 .dbsym r left 22 c
0096 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -