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

📄 4094.s

📁 mega8515通过的DS1302芯片使用程序
💻 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 + -