⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 counter.lis

📁 protues_atmeg8学习之:LED篇源代码
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .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 + -