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

📄 4094.lis

📁 mega8515通过的DS1302芯片使用程序
💻 LIS
字号:
                        .module _4094.c
                        .area data(ram, con, rel)
 0000           _table2::
 0000                   .blkb 2
                        .area idata
 0000 81B7              .byte 129,183
                        .area data(ram, con, rel)
 0002                   .blkb 2
                        .area idata
 0002 C292              .byte 194,146
                        .area data(ram, con, rel)
 0004                   .blkb 2
                        .area idata
 0004 B498              .byte 180,152
                        .area data(ram, con, rel)
 0006                   .blkb 2
                        .area idata
 0006 88B3              .byte 136,179
                        .area data(ram, con, rel)
 0008                   .blkb 2
                        .area idata
 0008 8090              .byte 128,144
                        .area data(ram, con, rel)
 000A                   .dbfile D:\AVR实验\DS1302时间芯片\4094.c
 000A                   .dbsym e table2 _table2 A[10:10]c
 000A           _led_buffer::
 000A                   .blkb 2
                        .area idata
 000A 0003              .byte 0,3
                        .area data(ram, con, rel)
 000C                   .dbfile D:\AVR实验\DS1302时间芯片\4094.c
 000C                   .blkb 2
                        .area idata
 000C 0000              .byte 0,0
                        .area data(ram, con, rel)
 000E                   .dbfile D:\AVR实验\DS1302时间芯片\4094.c
 000E                   .dbsym e led_buffer _led_buffer A[4:4]c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\AVR实验\DS1302时间芯片\4094.c
 0000                   .dbfunc e update_display_dp _update_display_dp fV
 0000           ;   byte_counter -> R20
 0000           ;      bit_count -> R22
 0000           ;         temp_i -> R10
                        .even
 0000           _update_display_dp::
 0000 00D0              rcall push_gset3
 0002                   .dbline -1
 0002                   .dbline 27
 0002           ; /*4094显示模式
 0002           ; 基于实验板接线方式
 0002           ; */
 0002           ; #include <iom8515v.h>
 0002           ; #include <macros.h>
 0002           ; 
 0002           ; #define DATA_4094 PC4
 0002           ; #define CLK_4094  PC5
 0002           ; #define STR_4094  PC6
 0002           ; 
 0002           ; #define SET_DATA_4094  PORTC |=(1<< DATA_4094)
 0002           ; #define SET_CLK_4094  PORTC |=(1<< CLK_4094)
 0002           ; #define SET_STR_4094  PORTC |=(1<< STR_4094)
 0002           ; 
 0002           ; #define CLR_DATA_4094 PORTC &=~(1<<DATA_4094)
 0002           ; #define CLR_CLK_4094 PORTC &=~(1<<CLK_4094)
 0002           ; #define CLR_STR_4094 PORTC &=~(1<<STR_4094)
 0002           ; 
 0002           ; unsigned int k;
 0002           ; #define uchar unsigned char
 0002           ; #define uint  unsigned int
 0002           ; 
 0002           ; uchar table2[10]={0x81,0xB7,0xC2,0x92,0xB4,0x98,0x88,0xB3,0x80,0x90};
 0002           ; uchar led_buffer[4]={0,3};
 0002           ; 
 0002           ; void update_display_dp(void)
 0002           ; {
 0002                   .dbline 28
 0002           ;        uchar bit_count=0;
 0002 6627              clr R22
 0004                   .dbline 29
 0004           ;        uchar byte_counter=0;
 0004 4427              clr R20
 0006                   .dbline 30
 0006           ;      uchar temp_i=0;
 0006 AA24              clr R10
 0008                   .dbline 32
 0008           ;        
 0008           ;      led_buffer[0]=k/1000;
 0008 28EE              ldi R18,1000
 000A 33E0              ldi R19,3
 000C 00910000          lds R16,_k
 0010 10910100          lds R17,_k+1
 0014 00D0              rcall div16u
 0016 00930A00          sts _led_buffer,R16
 001A                   .dbline 33
 001A           ;      led_buffer[1]=(k%1000)/100;
 001A 28EE              ldi R18,1000
 001C 33E0              ldi R19,3
 001E 00910000          lds R16,_k
 0022 10910100          lds R17,_k+1
 0026 00D0              rcall mod16u
 0028 24E6              ldi R18,100
 002A 30E0              ldi R19,0
 002C 00D0              rcall div16u
 002E 00930B00          sts _led_buffer+1,R16
 0032                   .dbline 34
 0032           ;      led_buffer[2]=(k%100)/10;
 0032 24E6              ldi R18,100
 0034 30E0              ldi R19,0
 0036 00910000          lds R16,_k
 003A 10910100          lds R17,_k+1
 003E 00D0              rcall mod16u
 0040 2AE0              ldi R18,10
 0042 30E0              ldi R19,0
 0044 00D0              rcall div16u
 0046 00930C00          sts _led_buffer+2,R16
 004A                   .dbline 35
 004A           ;      led_buffer[3]=k%10;
 004A 2AE0              ldi R18,10
 004C 30E0              ldi R19,0
 004E 00910000          lds R16,_k
 0052 10910100          lds R17,_k+1
 0056 00D0              rcall mod16u
 0058 00930D00          sts _led_buffer+3,R16
 005C                   .dbline 37
 005C           ;        
 005C           ;      CLR_STR_4094;//led_str_off;
 005C AE98              cbi 0x15,6
 005E                   .dbline 38
 005E           ;      CLR_CLK_4094;//led_clk_off;
 005E AD98              cbi 0x15,5
 0060                   .dbline 40
 0060           ;       
 0060           ;      for(byte_counter=0;byte_counter<4;byte_counter++)
 0060 1CC0              rjmp L8
 0062           L5:
 0062                   .dbline 41
 0062           ;          {
 0062                   .dbline 42
 0062           ;             bit_count=8;
 0062 68E0              ldi R22,8
 0064                   .dbline 43
 0064           ;              temp_i=table2[led_buffer[byte_counter]];
 0064 80E0              ldi R24,<_led_buffer
 0066 90E0              ldi R25,>_led_buffer
 0068 E42F              mov R30,R20
 006A FF27              clr R31
 006C E80F              add R30,R24
 006E F91F              adc R31,R25
 0070 E081              ldd R30,z+0
 0072 FF27              clr R31
 0074 80E0              ldi R24,<_table2
 0076 90E0              ldi R25,>_table2
 0078 E80F              add R30,R24
 007A F91F              adc R31,R25
 007C A080              ldd R10,z+0
 007E 09C0              rjmp L10
 0080           L9:
 0080                   .dbline 46
 0080           ; 
 0080           ;              while(bit_count>0)
 0080           ;                     {
 0080                   .dbline 47
 0080           ;                     if((temp_i&0x01)==0)
 0080 A0FC              sbrc R10,0
 0082 02C0              rjmp L12
 0084                   .dbline 48
 0084           ;                            {
 0084                   .dbline 49
 0084           ;                                CLR_DATA_4094;//led_d_off;
 0084 AC98              cbi 0x15,4
 0086                   .dbline 50
 0086           ;                             }
 0086 01C0              rjmp L13
 0088           L12:
 0088                   .dbline 52
 0088           ;                       else
 0088           ;                               {
 0088                   .dbline 53
 0088           ;                             SET_DATA_4094;//led_d_on;
 0088 AC9A              sbi 0x15,4
 008A                   .dbline 54
 008A           ;                                  }
 008A           L13:
 008A                   .dbline 55
 008A A694              lsr R10
 008C                   .dbline 58
 008C AD9A              sbi 0x15,5
 008E                   .dbline 60
 008E AD98              cbi 0x15,5
 0090                   .dbline 62
 0090 6A95              dec R22
 0092                   .dbline 64
 0092           L10:
 0092                   .dbline 45
 0092 2224              clr R2
 0094 2616              cp R2,R22
 0096 A0F3              brlo L9
 0098                   .dbline 66
 0098           L6:
 0098                   .dbline 40
 0098 4395              inc R20
 009A           L8:
 009A                   .dbline 40
 009A 4430              cpi R20,4
 009C 10F3              brlo L5
 009E                   .dbline 67
 009E           ;               temp_i=(temp_i>>1);
 009E           ;               
 009E           ;       
 009E           ;               SET_CLK_4094;//led_clk_on;
 009E           ; 
 009E           ;               CLR_CLK_4094;//led_clk_off;
 009E           ; 
 009E           ;               bit_count--;                    
 009E           ;               
 009E           ;               }
 009E           ;       
 009E           ;       }
 009E           ;     SET_STR_4094;
 009E AE9A              sbi 0x15,6
 00A0                   .dbline -2
 00A0           L1:
 00A0 00D0              rcall pop_gset3
 00A2                   .dbline 0 ; func end
 00A2 0895              ret
 00A4                   .dbsym r byte_counter 20 c
 00A4                   .dbsym r bit_count 22 c
 00A4                   .dbsym r temp_i 10 c
 00A4                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile D:\AVR实验\DS1302时间芯片\4094.c
 0000           _k::
 0000                   .blkb 2
 0002                   .dbsym e k _k i

⌨️ 快捷键说明

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