📄 4094.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 + -