📄 m4094.s
字号:
.module m4094.c
.area text(rom, con, rel)
.dbfile F:\学习\AVR单片机\AVR实验\adc0832_avr\m4094.c
.area data(ram, con, rel)
.dbfile F:\学习\AVR单片机\AVR实验\adc0832_avr\m4094.c
_table2::
.blkb 2
.area idata
.byte 129,183
.area data(ram, con, rel)
.dbfile F:\学习\AVR单片机\AVR实验\adc0832_avr\m4094.c
.blkb 2
.area idata
.byte 194,146
.area data(ram, con, rel)
.dbfile F:\学习\AVR单片机\AVR实验\adc0832_avr\m4094.c
.blkb 2
.area idata
.byte 180,152
.area data(ram, con, rel)
.dbfile F:\学习\AVR单片机\AVR实验\adc0832_avr\m4094.c
.blkb 2
.area idata
.byte 136,179
.area data(ram, con, rel)
.dbfile F:\学习\AVR单片机\AVR实验\adc0832_avr\m4094.c
.blkb 2
.area idata
.byte 128,144
.area data(ram, con, rel)
.dbfile F:\学习\AVR单片机\AVR实验\adc0832_avr\m4094.c
.dbsym e table2 _table2 A[10:10]c
_led_buffer::
.blkb 2
.area idata
.byte 0,3
.area data(ram, con, rel)
.dbfile F:\学习\AVR单片机\AVR实验\adc0832_avr\m4094.c
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile F:\学习\AVR单片机\AVR实验\adc0832_avr\m4094.c
.dbsym e led_buffer _led_buffer A[4:4]c
.area text(rom, con, rel)
.dbfile F:\学习\AVR单片机\AVR实验\adc0832_avr\m4094.c
.dbfunc e update_display_dp _update_display_dp fV
; byte_counter -> R20
; bit_count -> R22
; temp_i -> R10
; k -> R12,R13
.even
_update_display_dp::
rcall push_xgsetF03C
movw R12,R16
.dbline -1
.dbline 11
; /*4094显示模式
; 基于实验板接线方式
; */
; #include "d4094.h"
;
;
; uchar table2[10]={0x81,0xB7,0xC2,0x92,0xB4,0x98,0x88,0xB3,0x80,0x90};
; uchar led_buffer[4]={0,3};
;
; void update_display_dp(uint k)
; {
.dbline 12
; uchar bit_count=0;
clr R22
.dbline 13
; uchar byte_counter=0;
clr R20
.dbline 14
; uchar temp_i=0;
clr R10
.dbline 16
;
; led_buffer[3]=k/1000;
ldi R18,1000
ldi R19,3
movw R16,R12
rcall div16u
sts _led_buffer+3,R16
.dbline 17
; led_buffer[2]=(k%1000)/100;
ldi R18,1000
ldi R19,3
movw R16,R12
rcall mod16u
ldi R18,100
ldi R19,0
rcall div16u
sts _led_buffer+2,R16
.dbline 18
; led_buffer[1]=(k%100)/10;
ldi R18,100
ldi R19,0
movw R16,R12
rcall mod16u
ldi R18,10
ldi R19,0
rcall div16u
sts _led_buffer+1,R16
.dbline 19
; led_buffer[0]=k%10;
ldi R18,10
ldi R19,0
movw R16,R12
rcall mod16u
sts _led_buffer,R16
.dbline 21
;
; CLR_STR_4094;//led_str_off;
cbi 0x15,6
.dbline 22
; CLR_CLK_4094;//led_clk_off;
cbi 0x15,5
.dbline 24
;
; for(byte_counter=0;byte_counter<4;byte_counter++)
rjmp L8
L5:
.dbline 25
; {
.dbline 26
; bit_count=8;
ldi R22,8
.dbline 27
; 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 30
;
; while(bit_count>0)
; {
.dbline 31
; if((temp_i&0x01)==0)
sbrc R10,0
rjmp L12
X0:
.dbline 32
; {
.dbline 33
; CLR_DATA_4094;//led_d_off;
cbi 0x15,4
.dbline 34
; }
rjmp L13
L12:
.dbline 36
; else
; {
.dbline 37
; SET_DATA_4094;//led_d_on;
sbi 0x15,4
.dbline 38
; }
L13:
.dbline 39
; temp_i=(temp_i>>1);
lsr R10
.dbline 42
;
;
; SET_CLK_4094;//led_clk_on;
sbi 0x15,5
.dbline 44
;
; CLR_CLK_4094;//led_clk_off;
cbi 0x15,5
.dbline 46
;
; bit_count--;
dec R22
.dbline 48
;
; }
L10:
.dbline 29
ldi R24,0
cp R24,R22
brlo L9
X1:
.dbline 50
;
; }
L6:
.dbline 24
inc R20
L8:
.dbline 24
cpi R20,4
brlo L5
X2:
.dbline 51
; SET_STR_4094;
sbi 0x15,6
.dbline -2
L1:
.dbline 0 ; func end
rjmp pop_xgsetF03C
.dbsym r byte_counter 20 c
.dbsym r bit_count 22 c
.dbsym r temp_i 10 c
.dbsym r k 12 i
.dbend
;
;
; }
;
;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -