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

📄 addcounterdisplay.lst

📁 ATMEL AVR 单片机开发套件和大量C和ASM代码工程
💻 LST
字号:
                         .module AddCounterDisplay.c
                         .area lit
 000D                  _DATA_7SEG::
 000D  063F              .byte 63,6
 000E  4F5B              .byte 91,'O
 000F  6D66              .byte 'f,'m
 0010  077D              .byte 125,7
 0011  6F7F              .byte 127,'o
 0012  7C77              .byte 'w,124
 0013  5E39              .byte 57,94
 0014  7179              .byte 'y,'q
 0015                    .dbfile E:\grc\licc\例子10.3.8\AddCounterDisplay.c
 0015                    .dbsym s DATA_7SEG _DATA_7SEG Ac[16:16]
                         .area text
--- 0000                   .dbfile E:\grc\licc\例子10.3.8\AddCounterDisplay.c
--- 0000                   .dbfunc s delay _delay fI
                       ;              i -> R20,R21
                       ;              t -> R16,R17
                         .even
 0032                  _delay::
 0032  D0C1              rcall push_gset1
 0033                    .dbline 9{
                       ; #include <io8515.h>                   
                       ; #define uchar unsigned char           
                       ; #define uint unsigned int
                       ; const uchar DATA_7SEG[ ] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                       ;                            0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};/*LED 字形表*/
                       ; uchar led[6] ;                       
                       ; uint count;
                       ; void delay(uint t)                    
                       ; {
 0033                    .dbline 11
                       ;  uint i;
                       ;  for (i=0;i<t;i++)
 0033  2744              clr R20
 0034  2755              clr R21
 0035  C002              rjmp L5
 0036                  L2:
 0036                    .dbline 12
 0036                  L3:
 0036                    .dbline 11
 0036  5F4F              subi R20,255  ; offset = 1
 0037  4F5F              sbci R21,255
 0038                  L5:
 0038                    .dbline 11
 0038  1740              cp R20,R16
 0039  0751              cpc R21,R17
 003A  F3D8              brlo L2
 003B                    .dbline 13}
                       ;     ;
                       ; }
 003B                  L1:
 003B  D0BB              rcall pop_gset1
 003C  9508              ret
 003D                    .dbsym r i 20 i
 003D                    .dbsym r t 16 i
 003D                    .dbfunc s init_disp _init_disp fI
                         .even
 003D                  _init_disp::
 003D                    .dbline 15{
                       ; void init_disp(void)                  
                       ; {
 003D                    .dbline 16
                       ;  DDRB=0xff;
 003D  EF8F              ldi R24,255
 003E  BB87              out 0x17,R24
 003F                    .dbline 17
                       ;  DDRD=0x7f;
 003F  E78F              ldi R24,127
 0040  BB81              out 0x11,R24
 0041                    .dbline 18
                       ;  PORTD|=0x80;
 0041  9A97              sbi 0x12,7
 0042                    .dbline 19}
                       ; } 
 0042                  L6:
 0042  9508              ret
 0043                    .dbfunc s disp _disp fI
                       ;              i -> R20
                         .even
 0043                  _disp::
 0043  D0B0              rcall push_gset1
 0044                    .dbline 21{
                       ; void disp(void)                       
                       ; {
 0044                    .dbline 23
                       ;  uchar i;
                       ;  for (i=0;i<6;i++)
 0044  2744              clr R20
 0045  C01A              rjmp L11
 0046                  L8:
 0046                    .dbline 24
 0046                    .dbline 25
 0046  E001              ldi R16,1
 0047  2F14              mov R17,R20
 0048  D0C2              rcall lsl8
 0049  2E20              mov R2,R16
 004A  9420              com R2
 004B  BA22              out 0x12,R2
 004C                    .dbline 26
 004C  E682              ldi R24,<_led
 004D  E090              ldi R25,>_led
 004E  2FE4              mov R30,R20
 004F  27FF              clr R31
 0050  0FE8              add R30,R24
 0051  1FF9              adc R31,R25
 0052  8020              ldd R2,z+0
 0053  2433              clr R3
 0054  E18A              ldi R24,<_DATA_7SEG
 0055  E090              ldi R25,>_DATA_7SEG
 0056  0E28              add R2,R24
 0057  1E39              adc R3,R25
 0058  2DE2              mov R30,R2
 0059  2DF3              mov R31,R3
 005A  95C8              lpm
 005B  BA08              out 0x18,R0
 005C                    .dbline 27
 005C  EE08              ldi R16,232
 005D  E013              ldi R17,3
 005E  DFD3              rcall _delay
 005F                    .dbline 28
 005F                  L9:
 005F                    .dbline 23
 005F  9543              inc R20
 0060                  L11:
 0060                    .dbline 23
 0060  3046              cpi R20,6
 0061  F320              brlo L8
 0062                    .dbline 29
                       ;    {
                       ;     PORTD=~(0x01<<i);
                       ;     PORTB=DATA_7SEG[led[i]];
                       ;     delay(1000);
                       ;     }
                       ;   PORTB=0x00;
 0062  2422              clr R2
 0063  BA28              out 0x18,R2
 0064                    .dbline 30
                       ;   PORTD=0xff;
 0064  EF8F              ldi R24,255
 0065  BB82              out 0x12,R24
 0066                    .dbline 31}
                       ; }
 0066                  L7:
 0066  D090              rcall pop_gset1
 0067  9508              ret
 0068                    .dbsym r i 20 c
 0068                    .dbfunc s be_pc0 _be_pc0 fI
                       ;              i -> R20,R21
                         .even
 0068                  _be_pc0::
 0068  D08B              rcall push_gset1
 0069                    .dbline 33{
                       ; void be_pc0(void)                    
                       ; {
 0069                    .dbline 35
                       ;  uint i;
                       ;  DDRC|=0x01;
 0069  9AA0              sbi 0x14,0
 006A                    .dbline 36
                       ;  for (i=0;i<350;i++)
 006A  2744              clr R20
 006B  2755              clr R21
 006C  C009              rjmp L16
 006D                  L13:
 006D                    .dbline 37
 006D                    .dbline 38
 006D  E081              ldi R24,1
 006E  B225              in R2,0x15
 006F  2628              eor R2,R24
 0070  BA25              out 0x15,R2
 0071                    .dbline 39
 0071  E50E              ldi R16,94
 0072  E011              ldi R17,1
 0073  DFBE              rcall _delay
 0074                    .dbline 40
 0074                  L14:
 0074                    .dbline 36
 0074  5F4F              subi R20,255  ; offset = 1
 0075  4F5F              sbci R21,255
 0076                  L16:
 0076                    .dbline 36
 0076  354E              cpi R20,94
 0077  E0E1              ldi R30,1
 0078  075E              cpc R21,R30
 0079  F398              brlo L13
 007A                    .dbline 41}
                       ;     {
                       ;      PORTC^=0x01;
                       ;      delay(350);
                       ;     }
                       ; }
 007A                  L12:
 007A  D07C              rcall pop_gset1
 007B  9508              ret
 007C                    .dbsym r i 20 i
 007C                    .dbfunc s conv _conv fI
                         .even
 007C                  _conv::
 007C                    .dbline 43{
                       ; void conv(void)                      
                       ; {
 007C                    .dbline 44
                       ; led[5] =0;
 007C  2422              clr R2
 007D  92200067          sts _led+5,R2
 007F                    .dbline 45
                       ; led[4] =count/10000;
 007F  E120              ldi R18,16
 0080  E237              ldi R19,39
 0081  91100061          lds R17,_count+1
 0083  91000060          lds R16,_count
 0085  D051              rcall div16u
 0086  93000066          sts _led+4,R16
 0088                    .dbline 46
                       ; led[3] =count/1000%10;
 0088  EE28              ldi R18,232
 0089  E033              ldi R19,3
 008A  91100061          lds R17,_count+1
 008C  91000060          lds R16,_count
 008E  D048              rcall div16u
 008F  E02A              ldi R18,10
 0090  E030              ldi R19,0
 0091  D043              rcall mod16u
 0092  93000065          sts _led+3,R16
 0094                    .dbline 47
                       ; led[2] =count/100%10;
 0094  E624              ldi R18,100
 0095  E030              ldi R19,0
 0096  91100061          lds R17,_count+1
 0098  91000060          lds R16,_count
 009A  D03C              rcall div16u
 009B  E02A              ldi R18,10
 009C  E030              ldi R19,0
 009D  D037              rcall mod16u
 009E  93000064          sts _led+2,R16
 00A0                    .dbline 48
                       ; led[1] =count/10%10;
 00A0  E02A              ldi R18,10
 00A1  E030              ldi R19,0
 00A2  91100061          lds R17,_count+1
 00A4  91000060          lds R16,_count
 00A6  D030              rcall div16u
 00A7  E02A              ldi R18,10
 00A8  E030              ldi R19,0
 00A9  D02B              rcall mod16u
 00AA  93000063          sts _led+1,R16
 00AC                    .dbline 49
                       ; led[0] =count%10;
 00AC  E02A              ldi R18,10
 00AD  E030              ldi R19,0
 00AE  91100061          lds R17,_count+1
 00B0  91000060          lds R16,_count
 00B2  D022              rcall mod16u
 00B3  93000062          sts _led,R16
 00B5                    .dbline 50}
                       ; }
 00B5                  L17:
 00B5  9508              ret
 00B6                    .dbfunc s main _main fI
                         .even
 00B6                  _main::
 00B6                    .dbline 52{
                       ; void main(void)                              
                       ; {
 00B6                    .dbline 53
                       ;  init_disp();                                
 00B6  DF86              rcall _init_disp
 00B7                    .dbline 54
                       ;  count=0;                                    
 00B7  2422              clr R2
 00B8  2433              clr R3
 00B9  92300061          sts _count+1,R3
 00BB  92200060          sts _count,R2
 00BD                    .dbline 55
                       ;  conv();                                     
 00BD  DFBE              rcall _conv
 00BE                    .dbline 56
                       ;  for(;;)
 00BE                    .dbline 57
                       ;     {
 00BE  C001              rjmp L29
 00BF                  L28:
 00BF                    .dbline 59
 00BF  DF83              rcall _disp
 00C0                  L29:
 00C0                    .dbline 58
                       ;      while((PIND&0x80)==0x80)                
 00C0  B380              in R24,0x10
 00C1  7880              andi R24,128
 00C2  3880              cpi R24,128
 00C3  F3D9              breq L28
 00C4                    .dbline 60
                       ;          disp();                             
                       ;      be_pc0();                               
 00C4  DFA3              rcall _be_pc0
 00C5                    .dbline 61
                       ;      count++;                                
 00C5  91900061          lds R25,_count+1
 00C7  91800060          lds R24,_count
 00C9  9601              adiw R24,1
 00CA  93900061          sts _count+1,R25
 00CC  93800060          sts _count,R24
 00CE                    .dbline 62
                       ;      conv();                                 
 00CE  DFAD              rcall _conv
 00CF  C001              rjmp L32
 00D0                  L31:
 00D0                    .dbline 64
 00D0  DF72              rcall _disp
 00D1                  L32:
 00D1                    .dbline 63
                       ;      while((PIND&0x80)==0)                   
 00D1  9B87              sbis 0x10,7
 00D2  CFFD              rjmp L31
 00D3                    .dbline 65
                       ;          disp();                             
                       ;      }
 00D3                    .dbline 56
 00D3                    .dbline 56
 00D3  CFEC              rjmp L29
 00D4                  X0:
 00D4                  L23:
 00D4  9508              ret
 00D5                    .dbline 57}
                         .area bss
--- 0000                   .dbfile E:\grc\licc\例子10.3.8\AddCounterDisplay.c
 0030                  _count::
 0030                    .blkb 2
 0031                    .dbsym s count _count i
 0031                  _led::
 0031                    .blkb 6
 0034                    .dbsym s led _led Ac[6:6]

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -