📄 4094.s
字号:
.module _4094.c
.area data(ram, con, rel)
_table2::
.blkb 2
.area idata
.byte 129,183
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 194,146
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 180,152
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 136,179
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 128,144
.area data(ram, con, rel)
.dbfile D:\AVR实验\DS1302时间芯片\4094.c
.dbsym e table2 _table2 A[10:10]c
_led_buffer::
.blkb 2
.area idata
.byte 0,3
.area data(ram, con, rel)
.dbfile D:\AVR实验\DS1302时间芯片\4094.c
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile D:\AVR实验\DS1302时间芯片\4094.c
.dbsym e led_buffer _led_buffer A[4:4]c
.area text(rom, con, rel)
.dbfile D:\AVR实验\DS1302时间芯片\4094.c
.dbfunc e update_display_dp _update_display_dp fV
; byte_counter -> R20
; bit_count -> R22
; temp_i -> R10
.even
_update_display_dp::
rcall push_gset3
.dbline -1
.dbline 27
; /*4094显示模式
; 基于实验板接线方式
; */
; #include <iom8515v.h>
; #include <macros.h>
;
; #define DATA_4094 PC4
; #define CLK_4094 PC5
; #define STR_4094 PC6
;
; #define SET_DATA_4094 PORTC |=(1<< DATA_4094)
; #define SET_CLK_4094 PORTC |=(1<< CLK_4094)
; #define SET_STR_4094 PORTC |=(1<< STR_4094)
;
; #define CLR_DATA_4094 PORTC &=~(1<<DATA_4094)
; #define CLR_CLK_4094 PORTC &=~(1<<CLK_4094)
; #define CLR_STR_4094 PORTC &=~(1<<STR_4094)
;
; unsigned int k;
; #define uchar unsigned char
; #define uint unsigned int
;
; uchar table2[10]={0x81,0xB7,0xC2,0x92,0xB4,0x98,0x88,0xB3,0x80,0x90};
; uchar led_buffer[4]={0,3};
;
; void update_display_dp(void)
; {
.dbline 28
; uchar bit_count=0;
clr R22
.dbline 29
; uchar byte_counter=0;
clr R20
.dbline 30
; uchar temp_i=0;
clr R10
.dbline 32
;
; led_buffer[0]=k/1000;
ldi R18,1000
ldi R19,3
lds R16,_k
lds R17,_k+1
rcall div16u
sts _led_buffer,R16
.dbline 33
; led_buffer[1]=(k%1000)/100;
ldi R18,1000
ldi R19,3
lds R16,_k
lds R17,_k+1
rcall mod16u
ldi R18,100
ldi R19,0
rcall div16u
sts _led_buffer+1,R16
.dbline 34
; led_buffer[2]=(k%100)/10;
ldi R18,100
ldi R19,0
lds R16,_k
lds R17,_k+1
rcall mod16u
ldi R18,10
ldi R19,0
rcall div16u
sts _led_buffer+2,R16
.dbline 35
; led_buffer[3]=k%10;
ldi R18,10
ldi R19,0
lds R16,_k
lds R17,_k+1
rcall mod16u
sts _led_buffer+3,R16
.dbline 37
;
; CLR_STR_4094;//led_str_off;
cbi 0x15,6
.dbline 38
; CLR_CLK_4094;//led_clk_off;
cbi 0x15,5
.dbline 40
;
; for(byte_counter=0;byte_counter<4;byte_counter++)
rjmp L8
L5:
.dbline 41
; {
.dbline 42
; bit_count=8;
ldi R22,8
.dbline 43
; temp_i=table2[led_buffer[byte_counter]];
ldi R24,<_led_buffer
ldi R25,>_led_buffer
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldd R30,z+0
clr R31
ldi R24,<_table2
ldi R25,>_table2
add R30,R24
adc R31,R25
ldd R10,z+0
rjmp L10
L9:
.dbline 46
;
; while(bit_count>0)
; {
.dbline 47
; if((temp_i&0x01)==0)
sbrc R10,0
rjmp L12
.dbline 48
; {
.dbline 49
; CLR_DATA_4094;//led_d_off;
cbi 0x15,4
.dbline 50
; }
rjmp L13
L12:
.dbline 52
; else
; {
.dbline 53
; SET_DATA_4094;//led_d_on;
sbi 0x15,4
.dbline 54
; }
L13:
.dbline 55
lsr R10
.dbline 58
sbi 0x15,5
.dbline 60
cbi 0x15,5
.dbline 62
dec R22
.dbline 64
L10:
.dbline 45
clr R2
cp R2,R22
brlo L9
.dbline 66
L6:
.dbline 40
inc R20
L8:
.dbline 40
cpi R20,4
brlo L5
.dbline 67
; temp_i=(temp_i>>1);
;
;
; SET_CLK_4094;//led_clk_on;
;
; CLR_CLK_4094;//led_clk_off;
;
; bit_count--;
;
; }
;
; }
; SET_STR_4094;
sbi 0x15,6
.dbline -2
L1:
rcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r byte_counter 20 c
.dbsym r bit_count 22 c
.dbsym r temp_i 10 c
.dbend
.area bss(ram, con, rel)
.dbfile D:\AVR实验\DS1302时间芯片\4094.c
_k::
.blkb 2
.dbsym e k _k i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -