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

📄 ds1305.s

📁 DS1305程序代码,在网上很少,一般不容易找到.现上传一个给大家分享.
💻 S
📖 第 1 页 / 共 2 页
字号:
	.module DS1305.c
	.area vector(rom, abs)
	.org 2
	rjmp _int0_isr
	.area text(rom, con, rel)
	.dbfile F:\ziliao\JTAG\example\DS1305\DS1305.c
	.dbfunc e int0_isr _int0_isr fV
	.even
_int0_isr::
	st -y,R2
	st -y,R24
	in R2,0x3f
	st -y,R2
	.dbline -1
	.dbline 50
; /*DS1302时钟显示*/
; 
; #include <iom8v.h>
; #include <macros.h>
; #include <stdio.h>
; 
; /*串口波特率设置*/
; #define fosc 7372800  //晶振7.3728M
; #define baud 9600    //波特率设置
; 
; #define ds1305_rst   PC0 
; #define ds1305_sclk   PC1  
; #define ds1305_io   PC2
; #define set_ds1305_rst_ddr()   DDRC|=1<<ds1305_rst 
; #define set_ds1305_rst()     PORTC|=1<<ds1305_rst 
; #define clr_ds1305_rst()     PORTC&=~(1<<ds1305_rst) 
; #define set_ds1305_io_ddr()     DDRC|=1<<ds1305_io 
; #define set_ds1305_io()       PORTC|=1<<ds1305_io 
; #define clr_ds1305_io()       PORTC&=~(1<<ds1305_io) 
; #define clr_ds1305_io_ddr()     DDRC&=~(1<<ds1305_io) 
; #define in_ds1305_io()       PINC&(1<<ds1305_io) 
; #define set_ds1305_sclk_ddr()   DDRC|=1<<ds1305_sclk 
; #define set_ds1305_sclk()     PORTC|=1<<ds1305_sclk 
; #define clr_ds1305_sclk()     PORTC&=~(1<<ds1305_sclk) 
; 
; #define ds1305_sec_reg     0x00 
; #define ds1305_min_reg     0x01 
; #define ds1305_hr_reg      0x02 
; #define ds1305_date_reg    0x04 
; #define ds1305_month_reg   0x05 
; #define ds1305_day_reg     0x03 
; #define ds1305_year_reg    0x06 
; #define alarm0_sec_reg     0x07
; #define alarm0_min_reg     0x08
; #define alarm0_hr_reg      0x09
; #define alarm0_day_reg     0x0a
; #define alarm1_sec_reg     0x0b
; #define alarm1_min_reg     0x0c
; #define alarm1_hr_reg      0x0d
; #define alarm1_day_reg     0x0e
; #define ds1305_control_reg   0x0f 
; #define ds1305_status_reg   0x10 
; #define ds1305_charger_reg   0x11 
; 
; 
; unsigned char month,week,day,hour,minute,second;
; unsigned int year;
; #pragma interrupt_handler int0_isr:2
; void int0_isr(void)
; {
	.dbline 51
; PORTB^=0X01;
	ldi R24,1
	in R2,0x18
	eor R2,R24
	out 0x18,R2
	.dbline -2
L1:
	ld R2,y+
	out 0x3f,R2
	ld R24,y+
	ld R2,y+
	.dbline 0 ; func end
	reti
	.dbend
	.dbfunc e main _main fV
;      guangbiao -> <dead>
;    queren_zhi1 -> <dead>
;       jia_zhi1 -> <dead>
;      jian_zhi1 -> <dead>
;    tuichu_zhi1 -> <dead>
;     queren_zhi -> <dead>
;        jia_zhi -> <dead>
;       jian_zhi -> <dead>
;     tuichu_zhi -> <dead>
;        she_zhi -> <dead>
;        queren1 -> <dead>
;        tuichu1 -> <dead>
;          jian1 -> <dead>
;           jia1 -> <dead>
;         queren -> <dead>
;         tuichu -> <dead>
;           jian -> <dead>
;            jia -> <dead>
;            shu -> <dead>
;              j -> <dead>
	.even
_main::
	sbiw R28,12
	.dbline -1
	.dbline 56
; 
; }
; 
; void main(void)
; { unsigned char j,shu,jia,jian,tuichu,queren,jia1,jian1,tuichu1,queren1,she_zhi,tuichu_zhi,jian_zhi,jia_zhi,queren_zhi,tuichu_zhi1,jian_zhi1,jia_zhi1,queren_zhi1,guangbiao;
	.dbline 58
;   //guangbiao=0;
;   CLI();
	cli
	.dbline 59
;   DDRC=0XFF;
	ldi R24,255
	out 0x14,R24
	.dbline 60
;   PORTC|=0x07;
	in R24,0x15
	ori R24,7
	out 0x15,R24
	.dbline 61
;   DDRB=0XFF;
	ldi R24,255
	out 0x17,R24
	.dbline 62
;   PORTB=0x00;
	clr R2
	out 0x18,R2
	.dbline 63
;   PORTD=0XFF;
	out 0x12,R24
	.dbline 64
;   DDRD=0X00;
	out 0x11,R2
	.dbline 65
;   MCUCR=0x00;
	out 0x35,R2
	.dbline 66
;   GICR=0X40;
	ldi R24,64
	out 0x3b,R24
	.dbline 67
;   uart_init();
	rcall _uart_init
	.dbline 68
;   ds1305_init();
	rcall _ds1305_init
	.dbline 69
;   SEI();
	sei
	rjmp L4
L3:
	.dbline 72
	.dbline 73
	ldi R16,500
	ldi R17,1
	rcall _delay_nms
	.dbline 74
	rcall _ds1305_read_time
	.dbline 75
	lds R2,_second
	clr R3
	std y+11,R3
	std y+10,R2
	lds R2,_minute
	clr R3
	std y+9,R3
	std y+8,R2
	lds R2,_hour
	clr R3
	std y+7,R3
	std y+6,R2
	lds R2,_week
	clr R3
	std y+5,R3
	std y+4,R2
	lds R2,_day
	clr R3
	std y+3,R3
	std y+2,R2
	lds R2,_month
	clr R3
	std y+1,R3
	std y+0,R2
	lds R18,_year
	lds R19,_year+1
	ldi R16,<L6
	ldi R17,>L6
	rcall _printf
	.dbline 76
	ldi R16,10
	rcall _putchar
	.dbline 77
	ldi R16,13
	rcall _putchar
	.dbline 78
L4:
	.dbline 71
	rjmp L3
X0:
	.dbline -2
L2:
	adiw R28,12
	.dbline 0 ; func end
	ret
	.dbsym l guangbiao 13 c
	.dbsym l queren_zhi1 13 c
	.dbsym l jia_zhi1 13 c
	.dbsym l jian_zhi1 13 c
	.dbsym l tuichu_zhi1 13 c
	.dbsym l queren_zhi 13 c
	.dbsym l jia_zhi 13 c
	.dbsym l jian_zhi 13 c
	.dbsym l tuichu_zhi 13 c
	.dbsym l she_zhi 13 c
	.dbsym l queren1 13 c
	.dbsym l tuichu1 13 c
	.dbsym l jian1 13 c
	.dbsym l jia1 13 c
	.dbsym l queren 13 c
	.dbsym l tuichu 13 c
	.dbsym l jian 13 c
	.dbsym l jia 13 c
	.dbsym l shu 13 c
	.dbsym l j 13 c
	.dbend
	.dbfunc e ds1305_write _ds1305_write fV
;              i -> R20
;           data -> R18
;            reg -> R16
	.even
_ds1305_write::
	rcall push_gset1
	.dbline -1
	.dbline 83
; 
; while(1)
; {  	
;     delay_nms(500);
; 	ds1305_read_time();
; 	printf("当前的时间是:  %d年%d月%d日  星期%d %d:%d:%d\n",year,month,day,week,hour,minute,second);
; 	putchar(0x0a);
; 	putchar(0x0d);
; }
; 
; }
; 
; void ds1305_write(unsigned char reg,unsigned char data) 
; { 
	.dbline 84
;   unsigned char i=0; 
	clr R20
	.dbline 85
;    reg+=0x80;//写标志
	subi R16,128    ; addi 128
	.dbline 86
;   set_ds1305_io_ddr(); 
	sbi 0x14,2
	.dbline 89
;   //asm("nop"); 
;   //asm("nop"); 
;   clr_ds1305_rst(); 
	cbi 0x15,0
	.dbline 90
;   asm("nop"); 
	nop
	.dbline 91
;   asm("nop"); 
	nop
	.dbline 92
;   clr_ds1305_sclk(); 
	cbi 0x15,1
	.dbline 93
;   asm("nop"); 
	nop
	.dbline 94
;   asm("nop"); 
	nop
	.dbline 95
;   set_ds1305_rst(); 
	sbi 0x15,0
	.dbline 96
;   asm("nop"); 
	nop
	.dbline 97
;   asm("nop"); 
	nop
	.dbline 98
;   for(i=8;i>0;i--) 
	ldi R20,8
	rjmp L11
L8:
	.dbline 99
;   {     
	.dbline 100
;     if(reg&0x01) set_ds1305_io(); 
	sbrs R16,0
	rjmp L12
	.dbline 100
	sbi 0x15,2
	rjmp L13
L12:
	.dbline 101
;     else clr_ds1305_io(); 
	cbi 0x15,2
L13:
	.dbline 102
	nop
	.dbline 103
	nop
	.dbline 104
	sbi 0x15,1
	.dbline 105
	nop
	.dbline 106
	nop
	.dbline 107
	cbi 0x15,1
	.dbline 108
	nop
	.dbline 109
	nop
	.dbline 110
	lsr R16
	.dbline 111
L9:
	.dbline 98
	dec R20
L11:
	.dbline 98
	clr R2
	cp R2,R20
	brlo L8
	.dbline 112
;     asm("nop"); 
;     asm("nop"); 
;     set_ds1305_sclk();   
;     asm("nop"); 
;     asm("nop"); 
;     clr_ds1305_sclk(); 
;     asm("nop"); 
;     asm("nop"); 
;     reg>>=1; 
;   } 
;   for(i=8;i>0;i--) 
	ldi R20,8
	rjmp L17
L14:
	.dbline 113
;   {     
	.dbline 114
;     if(data&0x01) set_ds1305_io(); 
	sbrs R18,0
	rjmp L18
	.dbline 114
	sbi 0x15,2
	rjmp L19
L18:
	.dbline 115
;     else clr_ds1305_io(); 
	cbi 0x15,2
L19:
	.dbline 116
	nop
	.dbline 117
	nop
	.dbline 118
	sbi 0x15,1
	.dbline 119
	nop
	.dbline 120
	nop
	.dbline 121
	cbi 0x15,1
	.dbline 122
	nop
	.dbline 123
	nop
	.dbline 124
	lsr R18
	.dbline 125
L15:
	.dbline 112
	dec R20
L17:
	.dbline 112
	clr R2
	cp R2,R20
	brlo L14
	.dbline 126
;     asm("nop"); 
;     asm("nop"); 
;     set_ds1305_sclk(); 
;     asm("nop"); 
;     asm("nop"); 
;     clr_ds1305_sclk(); 
;     asm("nop"); 
;     asm("nop"); 
;     data>>=1; 
;   } 
;   clr_ds1305_rst(); 
	cbi 0x15,0
	.dbline 127
;   asm("nop"); 
	nop
	.dbline 128
;   asm("nop"); 
	nop
	.dbline 129
;   clr_ds1305_io_ddr(); 
	cbi 0x14,2
	.dbline 130
;   asm("nop"); 
	nop
	.dbline 131
;   asm("nop"); 
	nop
	.dbline -2
L7:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r data 18 c
	.dbsym r reg 16 c
	.dbend
	.dbfunc e ds1305_read _ds1305_read fc
;           data -> R20
;              i -> R22
;            reg -> R16
	.even
_ds1305_read::
	rcall push_gset2
	.dbline -1
	.dbline 134
; } 
; unsigned char ds1305_read(unsigned char reg) 
; { 
	.dbline 135
;   unsigned char data=0; 
	clr R20
	.dbline 136
;   unsigned char i=0; 
	clr R22
	.dbline 138
;   
;   set_ds1305_io_ddr();   
	sbi 0x14,2
	.dbline 141
;   //asm("nop"); 
;   //asm("nop"); 
;   clr_ds1305_rst(); 
	cbi 0x15,0
	.dbline 142
;   asm("nop"); 
	nop
	.dbline 143
;   asm("nop"); 
	nop
	.dbline 144
;   clr_ds1305_sclk(); 
	cbi 0x15,1
	.dbline 145
;   asm("nop"); 
	nop
	.dbline 146
;   asm("nop"); 
	nop
	.dbline 147
;   set_ds1305_rst(); 
	sbi 0x15,0
	.dbline 148
;   asm("nop"); 
	nop
	.dbline 149
;   asm("nop"); 
	nop
	.dbline 150
;   for(i=8;i>0;i--) 
	ldi R22,8
	rjmp L24
L21:
	.dbline 151
;   { 
	.dbline 153
;     
;     if(reg&0x01) set_ds1305_io(); 
	sbrs R16,0
	rjmp L25
	.dbline 153
	sbi 0x15,2
	rjmp L26
L25:
	.dbline 154
;     else clr_ds1305_io(); 
	cbi 0x15,2
L26:
	.dbline 155
	nop
	.dbline 156
	nop
	.dbline 157
	sbi 0x15,1
	.dbline 158
	nop
	.dbline 159
	nop
	.dbline 160
	cbi 0x15,1
	.dbline 161
	nop
	.dbline 162
	nop
	.dbline 163
	lsr R16
	.dbline 164
L22:
	.dbline 150
	dec R22
L24:
	.dbline 150
	clr R2
	cp R2,R22
	brlo L21
	.dbline 165
;     asm("nop"); 
;     asm("nop"); 
;     set_ds1305_sclk(); 
;     asm("nop"); 
;     asm("nop"); 
;     clr_ds1305_sclk(); 
;     asm("nop"); 
;     asm("nop"); 
;     reg>>=1; 
;   } 
;   clr_ds1305_io_ddr(); 
	cbi 0x14,2
	.dbline 166
;   asm("nop"); 
	nop
	.dbline 167
;   asm("nop"); 
	nop
	.dbline 168
;   for(i=8;i>0;i--) 
	ldi R22,8
	rjmp L30
L27:
	.dbline 169
;   {   
	.dbline 170
;     data>>=1; 
	lsr R20
	.dbline 171
;     if(in_ds1305_io()) data|=0x80; 
	sbis 0x13,2
	rjmp L31
	.dbline 171
	ori R20,128
L31:
	.dbline 172
	nop
	.dbline 173
	nop
	.dbline 174
	sbi 0x15,1
	.dbline 175
	nop
	.dbline 176
	nop
	.dbline 177
	cbi 0x15,1
	.dbline 178
	nop
	.dbline 179
	nop

⌨️ 快捷键说明

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