📄 counter.lis
字号:
.module Counter.c
.area text(rom, con, rel)
0000 .dbfile F:\Learn\AVR\Pro_Mega8\LED\Counter\Counter.c
0000 .dbfunc e delay_1ms _delay_1ms fV
0000 ; i -> R16,R17
.even
0000 _delay_1ms::
0000 .dbline -1
0000 .dbline 13
0000 ; /******************************************/
0000 ; //文件名:Counter.c
0000 ; //功能: 多个LED数码观的控制
0000 ; //作者: young
0000 ; //时间: 2006.10.1
0000 ; //目标MCU:ATmega8
0000 ; //晶振: 8MHZ
0000 ; /******************************************/
0000 ; #include <iom8v.h>
0000 ;
0000 ; //延时1MS
0000 ; void delay_1ms(void)
0000 ; {
0000 .dbline 15
0000 ; unsigned int i;
0000 ; for(i=1;i<(unsigned int)(1144-2);i++)
0000 01E0 ldi R16,1
0002 10E0 ldi R17,0
0004 02C0 rjmp L5
0006 L2:
0006 .dbline 16
0006 L3:
0006 .dbline 15
0006 0F5F subi R16,255 ; offset = 1
0008 1F4F sbci R17,255
000A L5:
000A .dbline 15
000A 0637 cpi R16,118
000C E4E0 ldi R30,4
000E 1E07 cpc R17,R30
0010 D0F3 brlo L2
0012 .dbline -2
0012 .dbline 17
0012 ; ;
0012 ; }
0012 L1:
0012 .dbline 0 ; func end
0012 0895 ret
0014 .dbsym r i 16 i
0014 .dbend
0014 .dbfunc e delay_ms _delay_ms fV
0014 ; i -> R20,R21
0014 ; n -> R22,R23
.even
0014 _delay_ms::
0014 00D0 rcall push_gset2
0016 B801 movw R22,R16
0018 .dbline -1
0018 .dbline 21
0018 ;
0018 ; //延时nMS
0018 ; void delay_ms(unsigned int n)
0018 ; {
0018 .dbline 22
0018 ; unsigned int i=0;
0018 4427 clr R20
001A 5527 clr R21
001C 03C0 rjmp L8
001E L7:
001E .dbline 24
001E .dbline 25
001E F0DF rcall _delay_1ms
0020 .dbline 26
0020 4F5F subi R20,255 ; offset = 1
0022 5F4F sbci R21,255
0024 .dbline 27
0024 L8:
0024 .dbline 23
0024 ; while(i<n)
0024 4617 cp R20,R22
0026 5707 cpc R21,R23
0028 D0F3 brlo L7
002A .dbline -2
002A .dbline 28
002A ; {
002A ; delay_1ms();
002A ; i++;
002A ; }
002A ; }
002A L6:
002A 00D0 rcall pop_gset2
002C .dbline 0 ; func end
002C 0895 ret
002E .dbsym r i 20 i
002E .dbsym r n 22 i
002E .dbend
.area data(ram, con, rel)
0000 .dbfile F:\Learn\AVR\Pro_Mega8\LED\Counter\Counter.c
0000 L11:
0000 .blkb 2
.area idata
0000 3F06 .byte 63,6
.area data(ram, con, rel)
0002 .dbfile F:\Learn\AVR\Pro_Mega8\LED\Counter\Counter.c
0002 .blkb 2
.area idata
0002 5B4F .byte 91,'O
.area data(ram, con, rel)
0004 .dbfile F:\Learn\AVR\Pro_Mega8\LED\Counter\Counter.c
0004 .blkb 2
.area idata
0004 666D .byte 'f,'m
.area data(ram, con, rel)
0006 .dbfile F:\Learn\AVR\Pro_Mega8\LED\Counter\Counter.c
0006 .blkb 2
.area idata
0006 7D07 .byte 125,7
.area data(ram, con, rel)
0008 .dbfile F:\Learn\AVR\Pro_Mega8\LED\Counter\Counter.c
0008 .blkb 2
.area idata
0008 7F6F .byte 127,'o
.area data(ram, con, rel)
000A .dbfile F:\Learn\AVR\Pro_Mega8\LED\Counter\Counter.c
.area lit(rom, con, rel)
0000 L12:
0000 0000 .byte 0,0
0002 0000 .byte 0,0
.area text(rom, con, rel)
002E .dbfile F:\Learn\AVR\Pro_Mega8\LED\Counter\Counter.c
002E .dbfunc e main _main fV
002E .dbsym s LedNum L11 A[10:10]c
002E ; j -> R20
002E ; CountNum -> y+0
002E ; i -> R22
.even
002E _main::
002E 2497 sbiw R28,4
0030 .dbline -1
0030 .dbline 32
0030 ;
0030 ; //主函数,依次显示数字0~9
0030 ; void main()
0030 ; {
0030 .dbline 37
0030 ; unsigned char i,j;
0030 ; static unsigned char LedNum[10]={0x3F, 0x06, 0x5B, 0x4F, 0x66,
0030 ; 0x6D, 0x7D, 0x07, 0x7F, 0x6F};
0030 ; //显示小数点要加0x80
0030 ; unsigned char CountNum[4]={0, 0, 0, 0}; //计数的百、十、个位和十分位
0030 80E0 ldi R24,<L12
0032 90E0 ldi R25,>L12
0034 FE01 movw R30,R28
0036 04E0 ldi R16,4
0038 10E0 ldi R17,0
003A FA93 st -y,R31
003C EA93 st -y,R30
003E 9A93 st -y,R25
0040 8A93 st -y,R24
0042 00D0 rcall asgncblk
0044 .dbline 38
0044 ; DDRB=0xFF; //设置B口为输出模式
0044 8FEF ldi R24,255
0046 87BB out 0x17,R24
0048 .dbline 39
0048 ; PORTB=0xFF; //置高电平
0048 88BB out 0x18,R24
004A .dbline 40
004A ; DDRC=0x0F;
004A 8FE0 ldi R24,15
004C 84BB out 0x14,R24
004E .dbline 41
004E ; PORTC=0xFF;
004E 8FEF ldi R24,255
0050 85BB out 0x15,R24
0052 88C0 rjmp L14
0054 L13:
0054 .dbline 44
0054 ;
0054 ; while (1)
0054 ; {
0054 .dbline 45
0054 ; i=0;
0054 6627 clr R22
0056 .dbline 46
0056 ; for(j=0;j<100;j++) //依次显示1S"000.0"
0056 4427 clr R20
0058 1FC0 rjmp L19
005A L16:
005A .dbline 47
005A ; {
005A .dbline 48
005A ; i=++i%4;
005A 862F mov R24,R22
005C 8F5F subi R24,255 ; addi 1
005E 14E0 ldi R17,4
0060 082F mov R16,R24
0062 00D0 rcall mod8u
0064 602F mov R22,R16
0066 .dbline 49
0066 ; PORTC&=~(1<<i);
0066 01E0 ldi R16,1
0068 162F mov R17,R22
006A 00D0 rcall lsl8
006C 202E mov R2,R16
006E 2094 com R2
0070 35B2 in R3,0x15
0072 3220 and R3,R2
0074 35BA out 0x15,R3
0076 .dbline 50
0076 ; if(2==i)
0076 6230 cpi R22,2
0078 29F4 brne L20
007A .dbline 51
007A ; PORTB=LedNum[0]+0x80;
007A 80910000 lds R24,L11
007E 8058 subi R24,128 ; addi 128
0080 88BB out 0x18,R24
0082 03C0 rjmp L21
0084 L20:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -