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

📄 mudle1302.s

📁 mega8515通过的DS1302芯片使用程序
💻 S
字号:
	.module mudle1302.c
	.area text(rom, con, rel)
	.dbfile D:\AVR实验\DS1302时间芯片\mudle1302.c
	.dbfunc e Delayus _Delayus fV
;              i -> R16
	.even
_Delayus::
	.dbline -1
	.dbline 5
; #include "ds1302.h"
; 
; 
; void Delayus(uchar i)
;  {
L2:
	.dbline 6
L3:
	.dbline 6
;   while(--i);
	mov R24,R16
	subi R24,1
	mov R16,R24
	tst R24
	brne L2
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbsym r i 16 c
	.dbend
	.dbfunc e ReadSec _ReadSec fc
	.even
_ReadSec::
	.dbline -1
	.dbline 13
;   }
;  
;   
; 
; 
; uchar ReadSec(void)    			
; {
	.dbline 14
;     return ReadRTC_Byte(0x81);
	ldi R16,129
	ldi R17,0
	rcall _ReadRTC_Byte
	.dbline -2
L5:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e ReadMin _ReadMin fc
	.even
_ReadMin::
	.dbline -1
	.dbline 17
; }
; uchar ReadMin(void)    		
; {
	.dbline 18
;     return ReadRTC_Byte(0x83);
	ldi R16,131
	ldi R17,0
	rcall _ReadRTC_Byte
	.dbline -2
L6:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e ReadHour _ReadHour fc
	.even
_ReadHour::
	.dbline -1
	.dbline 21
; }
; uchar ReadHour(void)
; {
	.dbline 22
;    return ReadRTC_Byte(0x85);
	ldi R16,133
	ldi R17,0
	rcall _ReadRTC_Byte
	.dbline -2
L7:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e WriteSec _WriteSec fV
;         number -> R20
	.even
_WriteSec::
	rcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 28
; }
; 
; 
; 
; void WriteSec(uchar number)    	
; {
	.dbline 29
;     WriteRTC_Byte(0x80,number);
	mov R18,R20
	clr R19
	ldi R16,128
	ldi R17,0
	rcall _WriteRTC_Byte
	.dbline -2
L8:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r number 20 c
	.dbend
	.dbfunc e WriteMin _WriteMin fV
;         number -> R20
	.even
_WriteMin::
	rcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 32
; }
; void WriteMin(uchar number)    		
; {
	.dbline 33
;     WriteRTC_Byte(0x82,number);
	mov R18,R20
	clr R19
	ldi R16,130
	ldi R17,0
	rcall _WriteRTC_Byte
	.dbline -2
L9:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r number 20 c
	.dbend
	.dbfunc e WriteHour _WriteHour fV
;         number -> R20
	.even
_WriteHour::
	rcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 36
; }
; void WriteHour(uchar number)    		//向DS1302中写入分字节
; {
	.dbline 37
;     WriteRTC_Byte(0x84,number);
	mov R18,R20
	clr R19
	ldi R16,132
	ldi R17,0
	rcall _WriteRTC_Byte
	.dbline -2
L10:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r number 20 c
	.dbend
	.dbfunc e ReadRTC_Byte _ReadRTC_Byte fi
;         redata -> R20
;        address -> R20
	.even
_ReadRTC_Byte::
	rcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 44
; }
; 
; 
; 
; 
; uint ReadRTC_Byte(uchar address)    			
; {
	.dbline 47
;     unsigned char  redata;
; 
; 	Clr_ds1302_rst;//ds1302_rst = 0; 			
	cbi 0x15,3
	.dbline 48
;     Clr_ds1302_clk;//ds1302_clk = 0; 				
	cbi 0x15,1
	.dbline 49
;     Set_ds1302_rst;//ds1302_rst = 1;				
	sbi 0x15,3
	.dbline 50
;     Write_bit(address);				
	mov R16,R20
	clr R17
	rcall _Write_bit
	.dbline 51
; 	redata=Read_bit();			
	rcall _Read_bit
	mov R20,R16
	.dbline 52
; 	Clr_ds1302_rst;//ds1302_rst = 0;
	cbi 0x15,3
	.dbline 53
; 	Set_ds1302_clk;//ds1302_clk = 1; 
	sbi 0x15,1
	.dbline 54
;    return redata;				
	clr R17
	.dbline -2
L11:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r redata 20 c
	.dbsym r address 20 c
	.dbend
	.dbfunc e WriteRTC_Byte _WriteRTC_Byte fV
;         number -> R20
;        address -> R22
	.even
_WriteRTC_Byte::
	rcall push_gset2
	mov R20,R18
	mov R22,R16
	.dbline -1
	.dbline 58
; }
; 
; void WriteRTC_Byte(uchar address,uchar number)   
; {
	.dbline 59
;     Clr_ds1302_clk;//ds1302_clk = 0;
	cbi 0x15,1
	.dbline 60
;     Clr_ds1302_rst;// ds1302_rst = 0;
	cbi 0x15,3
	.dbline 61
; 	Set_ds1302_rst;//ds1302_rst = 1;  
	sbi 0x15,3
	.dbline 62
;     Write_bit(address);				 
	mov R16,R22
	clr R17
	rcall _Write_bit
	.dbline 63
; 	Write_bit(number);				
	mov R16,R20
	clr R17
	rcall _Write_bit
	.dbline 64
;     Clr_ds1302_rst;//ds1302_rst = 0; 
	cbi 0x15,3
	.dbline 65
; 	Set_ds1302_clk;//ds1302_clk = 1;
	sbi 0x15,1
	.dbline -2
L12:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r number 20 c
	.dbsym r address 22 c
	.dbend
	.dbfunc e Write_bit _Write_bit fV
;              i -> R20
;           addr -> R16
	.even
_Write_bit::
	rcall push_gset1
	.dbline -1
	.dbline 73
; }
; 				
; 
; 
; 
; 
; void Write_bit (uchar addr)				
; {
	.dbline 74
;   uchar i=0;
	clr R20
	.dbline 75
	ldi R20,8
	rjmp L17
L14:
	.dbline 75
;  for(i=8;i>0;i--){
	.dbline 76
; 	if((addr&0x01)==0x01)
	mov R24,R16
	andi R24,1
	cpi R24,1
	brne L18
	.dbline 77
; 	   Set_ds1302_data;//ds1302_dat = 1;
	sbi 0x15,2
	rjmp L19
L18:
	.dbline 79
;     else
; 		Clr_ds1302_data;//ds1302_dat = 0;
	cbi 0x15,2
L19:
	.dbline 80
	sbi 0x15,1
	.dbline 81
	cbi 0x15,1
	.dbline 82
	lsr R16
	.dbline 83
L15:
	.dbline 75
	dec R20
L17:
	.dbline 75
	clr R2
	cp R2,R20
	brlo L14
	.dbline -2
L13:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r addr 16 c
	.dbend
	.dbfunc e Read_bit _Read_bit fc
;            num -> <dead>
;         data_r -> R20
;              i -> R22
	.even
_Read_bit::
	rcall push_gset2
	.dbline -1
	.dbline 87
;     Set_ds1302_clk;//ds1302_clk=1;
; 	Clr_ds1302_clk;//ds1302_clk=0;
; 	addr>>=1;
;  }
; }
; 
; uchar Read_bit ()				
; {
	.dbline 88
;   uchar i=0,num;
	clr R22
	.dbline 89
;   uchar data_r=0;
	clr R20
	.dbline 90
;   Delayus(15);//19us  delay
	ldi R16,15
	rcall _Delayus
	.dbline 91
;   data_in;
	cbi 0x14,2
	.dbline 94
	ldi R22,8
	rjmp L24
L21:
	.dbline 94
; 
; 
;   for(i=8;i>0;i--){
	.dbline 95
; 	data_r>>=1;
	lsr R20
	.dbline 98
; 	
; 	
; 	if(data_in_read)
	sbis 0x13,2
	rjmp L25
	.dbline 99
; 	{
	.dbline 100
; 		data_r|=0x80;
	ori R20,128
	.dbline 101
; 	}	
L25:
	.dbline 102
	sbi 0x15,1
	.dbline 103
	cbi 0x15,1
	.dbline 104
L22:
	.dbline 94
	dec R22
L24:
	.dbline 94
	clr R2
	cp R2,R22
	brlo L21
	.dbline 105
; 	Set_ds1302_clk;//ds1302_clk = 1;	
; 	Clr_ds1302_clk;//ds1302_clk = 0; 
;   }
; return data_r;
	mov R16,R20
	.dbline -2
L20:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym l num 1 c
	.dbsym r data_r 20 c
	.dbsym r i 22 c
	.dbend

⌨️ 快捷键说明

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