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

📄 addcounterdisplay.lis

📁 单片机开发资料光盘-双龙-686M.zip
💻 LIS
字号:
                         .module AddCounterDisplay.c
                         .area lit
 0000                 _DATA_7SEG::
 0000 3F06              .byte 63,6
 0002 5B4F              .byte 91,'O
 0004 666D              .byte 'f,'m
 0006 7D07              .byte 125,7
 0008 7F6F              .byte 127,'o
 000A 777C              .byte 'w,124
 000C 395E              .byte 57,94
 000E 7971              .byte 'y,'q
 0010                   .dbfile E:\grc\licc\例子10.3.8\AddCounterDisplay.c
 0010                   .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
 0000                 _delay::
 0000 00D0              rcall push_gset1
 0002                   .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)                    
                       ; {
 0002                   .dbline 11
                       ;  uint i;
                       ;  for (i=0;i<t;i++)
 0002 4427              clr R20
 0004 5527              clr R21
 0006 02C0              rjmp L5
 0008                 L2:
 0008                   .dbline 12
 0008                 L3:
 0008                   .dbline 11
 0008 4F5F              subi R20,255  ; offset = 1
 000A 5F4F              sbci R21,255
 000C                 L5:
 000C                   .dbline 11
 000C 4017              cp R20,R16
 000E 5107              cpc R21,R17
 0010 D8F3              brlo L2
 0012                   .dbline 13}
                       ;     ;
                       ; }
 0012                 L1:
 0012 00D0              rcall pop_gset1
 0014 0895              ret
 0016                   .dbsym r i 20 i
 0016                   .dbsym r t 16 i
 0016                   .dbfunc s init_disp _init_disp fI
                         .even
 0016                 _init_disp::
 0016                   .dbline 15{
                       ; void init_disp(void)                  
                       ; {
 0016                   .dbline 16
                       ;  DDRB=0xff;
 0016 8FEF              ldi R24,255
 0018 87BB              out 0x17,R24
 001A                   .dbline 17
                       ;  DDRD=0x7f;
 001A 8FE7              ldi R24,127
 001C 81BB              out 0x11,R24
 001E                   .dbline 18
                       ;  PORTD|=0x80;
 001E 979A              sbi 0x12,7
 0020                   .dbline 19}
                       ; } 
 0020                 L6:
 0020 0895              ret
 0022                   .dbfunc s disp _disp fI
                       ;              i -> R20
                         .even
 0022                 _disp::
 0022 00D0              rcall push_gset1
 0024                   .dbline 21{
                       ; void disp(void)                       
                       ; {
 0024                   .dbline 23
                       ;  uchar i;
                       ;  for (i=0;i<6;i++)
 0024 4427              clr R20
 0026 1AC0              rjmp L11
 0028                 L8:
 0028                   .dbline 24
 0028                   .dbline 25
 0028 01E0              ldi R16,1
 002A 142F              mov R17,R20
 002C 00D0              rcall lsl8
 002E 202E              mov R2,R16
 0030 2094              com R2
 0032 22BA              out 0x12,R2
 0034                   .dbline 26
 0034 80E0              ldi R24,<_led
 0036 90E0              ldi R25,>_led
 0038 E42F              mov R30,R20
 003A FF27              clr R31
 003C E80F              add R30,R24
 003E F91F              adc R31,R25
 0040 2080              ldd R2,z+0
 0042 3324              clr R3
 0044 80E0              ldi R24,<_DATA_7SEG
 0046 90E0              ldi R25,>_DATA_7SEG
 0048 280E              add R2,R24
 004A 391E              adc R3,R25
 004C E22D              mov R30,R2
 004E F32D              mov R31,R3
 0050 C895              lpm
 0052 08BA              out 0x18,R0
 0054                   .dbline 27
 0054 08EE              ldi R16,232
 0056 13E0              ldi R17,3
 0058 D3DF              rcall _delay
 005A                   .dbline 28
 005A                 L9:
 005A                   .dbline 23
 005A 4395              inc R20
 005C                 L11:
 005C                   .dbline 23
 005C 4630              cpi R20,6
 005E 20F3              brlo L8
 0060                   .dbline 29
                       ;    {
                       ;     PORTD=~(0x01<<i);
                       ;     PORTB=DATA_7SEG[led[i]];
                       ;     delay(1000);
                       ;     }
                       ;   PORTB=0x00;
 0060 2224              clr R2
 0062 28BA              out 0x18,R2
 0064                   .dbline 30
                       ;   PORTD=0xff;
 0064 8FEF              ldi R24,255
 0066 82BB              out 0x12,R24
 0068                   .dbline 31}
                       ; }
 0068                 L7:
 0068 00D0              rcall pop_gset1
 006A 0895              ret
 006C                   .dbsym r i 20 c
 006C                   .dbfunc s be_pc0 _be_pc0 fI
                       ;              i -> R20,R21
                         .even
 006C                 _be_pc0::
 006C 00D0              rcall push_gset1
 006E                   .dbline 33{
                       ; void be_pc0(void)                    
                       ; {
 006E                   .dbline 35
                       ;  uint i;
                       ;  DDRC|=0x01;
 006E A09A              sbi 0x14,0
 0070                   .dbline 36
                       ;  for (i=0;i<350;i++)
 0070 4427              clr R20
 0072 5527              clr R21
 0074 09C0              rjmp L16
 0076                 L13:
 0076                   .dbline 37
 0076                   .dbline 38
 0076 81E0              ldi R24,1
 0078 25B2              in R2,0x15
 007A 2826              eor R2,R24
 007C 25BA              out 0x15,R2
 007E                   .dbline 39
 007E 0EE5              ldi R16,94
 0080 11E0              ldi R17,1
 0082 BEDF              rcall _delay
 0084                   .dbline 40
 0084                 L14:
 0084                   .dbline 36
 0084 4F5F              subi R20,255  ; offset = 1
 0086 5F4F              sbci R21,255
 0088                 L16:
 0088                   .dbline 36
 0088 4E35              cpi R20,94
 008A E1E0              ldi R30,1
 008C 5E07              cpc R21,R30
 008E 98F3              brlo L13
 0090                   .dbline 41}
                       ;     {
                       ;      PORTC^=0x01;
                       ;      delay(350);
                       ;     }
                       ; }
 0090                 L12:
 0090 00D0              rcall pop_gset1
 0092 0895              ret
 0094                   .dbsym r i 20 i
 0094                   .dbfunc s conv _conv fI
                         .even
 0094                 _conv::
 0094                   .dbline 43{
                       ; void conv(void)                      
                       ; {
 0094                   .dbline 44
                       ; led[5] =0;
 0094 2224              clr R2
 0096 20920700          sts _led+5,R2
 009A                   .dbline 45
                       ; led[4] =count/10000;
 009A 20E1              ldi R18,16
 009C 37E2              ldi R19,39
 009E 10910100          lds R17,_count+1
 00A2 00910000          lds R16,_count
 00A6 00D0              rcall div16u
 00A8 00930600          sts _led+4,R16
 00AC                   .dbline 46
                       ; led[3] =count/1000%10;
 00AC 28EE              ldi R18,232
 00AE 33E0              ldi R19,3
 00B0 10910100          lds R17,_count+1
 00B4 00910000          lds R16,_count
 00B8 00D0              rcall div16u
 00BA 2AE0              ldi R18,10
 00BC 30E0              ldi R19,0
 00BE 00D0              rcall mod16u
 00C0 00930500          sts _led+3,R16
 00C4                   .dbline 47
                       ; led[2] =count/100%10;
 00C4 24E6              ldi R18,100
 00C6 30E0              ldi R19,0
 00C8 10910100          lds R17,_count+1
 00CC 00910000          lds R16,_count
 00D0 00D0              rcall div16u
 00D2 2AE0              ldi R18,10
 00D4 30E0              ldi R19,0
 00D6 00D0              rcall mod16u
 00D8 00930400          sts _led+2,R16
 00DC                   .dbline 48
                       ; led[1] =count/10%10;
 00DC 2AE0              ldi R18,10
 00DE 30E0              ldi R19,0
 00E0 10910100          lds R17,_count+1
 00E4 00910000          lds R16,_count
 00E8 00D0              rcall div16u
 00EA 2AE0              ldi R18,10
 00EC 30E0              ldi R19,0
 00EE 00D0              rcall mod16u
 00F0 00930300          sts _led+1,R16
 00F4                   .dbline 49
                       ; led[0] =count%10;
 00F4 2AE0              ldi R18,10
 00F6 30E0              ldi R19,0
 00F8 10910100          lds R17,_count+1
 00FC 00910000          lds R16,_count
 0100 00D0              rcall mod16u
 0102 00930200          sts _led,R16
 0106                   .dbline 50}
                       ; }
 0106                 L17:
 0106 0895              ret
 0108                   .dbfunc s main _main fI
                         .even
 0108                 _main::
 0108                   .dbline 52{
                       ; void main(void)                              
                       ; {
 0108                   .dbline 53
                       ;  init_disp();                                
 0108 86DF              rcall _init_disp
 010A                   .dbline 54
                       ;  count=0;                                    
 010A 2224              clr R2
 010C 3324              clr R3
 010E 30920100          sts _count+1,R3
 0112 20920000          sts _count,R2
 0116                   .dbline 55
                       ;  conv();                                     
 0116 BEDF              rcall _conv
 0118                   .dbline 56
                       ;  for(;;)
 0118                   .dbline 57
                       ;     {
 0118 01C0              rjmp L29
 011A                 L28:
 011A                   .dbline 59
 011A 83DF              rcall _disp
 011C                 L29:
 011C                   .dbline 58
                       ;      while((PIND&0x80)==0x80)                
 011C 80B3              in R24,0x10
 011E 8078              andi R24,128
 0120 8038              cpi R24,128
 0122 D9F3              breq L28
 0124                   .dbline 60
                       ;          disp();                             
                       ;      be_pc0();                               
 0124 A3DF              rcall _be_pc0
 0126                   .dbline 61
                       ;      count++;                                
 0126 90910100          lds R25,_count+1
 012A 80910000          lds R24,_count
 012E 0196              adiw R24,1
 0130 90930100          sts _count+1,R25
 0134 80930000          sts _count,R24
 0138                   .dbline 62
                       ;      conv();                                 
 0138 ADDF              rcall _conv
 013A 01C0              rjmp L32
 013C                 L31:
 013C                   .dbline 64
 013C 72DF              rcall _disp
 013E                 L32:
 013E                   .dbline 63
                       ;      while((PIND&0x80)==0)                   
 013E 879B              sbis 0x10,7
 0140 FDCF              rjmp L31
 0142                   .dbline 65
                       ;          disp();                             
                       ;      }
 0142                   .dbline 56
 0142                   .dbline 56
 0142 ECCF              rjmp L29
 0144                 X0:
 0144                 L23:
 0144 0895              ret
 0146                   .dbline 57}
                         .area bss
 0000                   .dbfile E:\grc\licc\例子10.3.8\AddCounterDisplay.c
 0000                 _count::
 0000                   .blkb 2
 0002                   .dbsym s count _count i
 0002                 _led::
 0002                   .blkb 6
 0008                   .dbsym s led _led Ac[6:6]

⌨️ 快捷键说明

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