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

📄 mudle1302.s

📁 ds1302事实时钟+12864液晶显示 4094
💻 S
字号:
	.module mudle1302.c
	.area text(rom, con, rel)
	.dbfile E:\AVR实验\ds1302+12864时钟\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
;   while(--i);
L3:
	.dbline 6
	mov R24,R16
	subi R24,1
	mov R16,R24
	tst R24
	brne L2
X0:
	.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 ReadDate _ReadDate fc
	.even
_ReadDate::
	.dbline -1
	.dbline 25
; }
; uchar ReadDate(void)
; {
	.dbline 26
;    return ReadRTC_Byte(0x87);
	ldi R16,135
	ldi R17,0
	rcall _ReadRTC_Byte
	.dbline -2
L8:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e ReadYear _ReadYear fc
	.even
_ReadYear::
	.dbline -1
	.dbline 30
; }
; 
; uchar ReadYear(void)
; {
	.dbline 31
;    return ReadRTC_Byte(0x8D);
	ldi R16,141
	ldi R17,0
	rcall _ReadRTC_Byte
	.dbline -2
L9:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e ReadMonth _ReadMonth fc
	.even
_ReadMonth::
	.dbline -1
	.dbline 35
; }
; 
; uchar ReadMonth(void)
; {
	.dbline 36
;    return ReadRTC_Byte(0x89);
	ldi R16,137
	ldi R17,0
	rcall _ReadRTC_Byte
	.dbline -2
L10:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e ReadDay _ReadDay fc
	.even
_ReadDay::
	.dbline -1
	.dbline 39
; }
; uchar ReadDay(void)
; {
	.dbline 40
;    return ReadRTC_Byte(0x8B);
	ldi R16,139
	ldi R17,0
	rcall _ReadRTC_Byte
	.dbline -2
L11:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e WriteSec _WriteSec fV
;         number -> R10
	.even
_WriteSec::
	st -y,R10
	mov R10,R16
	.dbline -1
	.dbline 46
; }
; 
; 
; 
; void WriteSec(uchar number)    	
; {
	.dbline 47
;     WriteRTC_Byte(0x80,number);
	mov R18,R10
	clr R19
	ldi R16,128
	ldi R17,0
	rcall _WriteRTC_Byte
	.dbline -2
L12:
	.dbline 0 ; func end
	ld R10,y+
	ret
	.dbsym r number 10 c
	.dbend
	.dbfunc e WriteMin _WriteMin fV
;         number -> R10
	.even
_WriteMin::
	st -y,R10
	mov R10,R16
	.dbline -1
	.dbline 50
; }
; void WriteMin(uchar number)    		
; {
	.dbline 51
;     WriteRTC_Byte(0x82,number);
	mov R18,R10
	clr R19
	ldi R16,130
	ldi R17,0
	rcall _WriteRTC_Byte
	.dbline -2
L13:
	.dbline 0 ; func end
	ld R10,y+
	ret
	.dbsym r number 10 c
	.dbend
	.dbfunc e WriteHour _WriteHour fV
;         number -> R10
	.even
_WriteHour::
	st -y,R10
	mov R10,R16
	.dbline -1
	.dbline 54
; }
; void WriteHour(uchar number)    		//向DS1302中写入分字节
; {
	.dbline 55
;     WriteRTC_Byte(0x84,number);
	mov R18,R10
	clr R19
	ldi R16,132
	ldi R17,0
	rcall _WriteRTC_Byte
	.dbline -2
L14:
	.dbline 0 ; func end
	ld R10,y+
	ret
	.dbsym r number 10 c
	.dbend
	.dbfunc e WriteYear _WriteYear fV
;         number -> R10
	.even
_WriteYear::
	st -y,R10
	mov R10,R16
	.dbline -1
	.dbline 58
; }
; void WriteYear(uchar number)    		//向DS1302中写入分字节
; {
	.dbline 59
;     WriteRTC_Byte(0x8C,number);
	mov R18,R10
	clr R19
	ldi R16,140
	ldi R17,0
	rcall _WriteRTC_Byte
	.dbline -2
L15:
	.dbline 0 ; func end
	ld R10,y+
	ret
	.dbsym r number 10 c
	.dbend
	.dbfunc e WriteMonth _WriteMonth fV
;         number -> R10
	.even
_WriteMonth::
	st -y,R10
	mov R10,R16
	.dbline -1
	.dbline 62
; }
; void WriteMonth(uchar number)    		//向DS1302中写入分字节
; {
	.dbline 63
;     WriteRTC_Byte(0x88,number);
	mov R18,R10
	clr R19
	ldi R16,136
	ldi R17,0
	rcall _WriteRTC_Byte
	.dbline -2
L16:
	.dbline 0 ; func end
	ld R10,y+
	ret
	.dbsym r number 10 c
	.dbend
	.dbfunc e WriteDay _WriteDay fV
;         number -> R10
	.even
_WriteDay::
	st -y,R10
	mov R10,R16
	.dbline -1
	.dbline 67
; }
; 
; void WriteDay(uchar number)    		//向DS1302中写入分字节
; {
	.dbline 68
;     WriteRTC_Byte(0x8A,number);
	mov R18,R10
	clr R19
	ldi R16,138
	ldi R17,0
	rcall _WriteRTC_Byte
	.dbline -2
L17:
	.dbline 0 ; func end
	ld R10,y+
	ret
	.dbsym r number 10 c
	.dbend
	.dbfunc e WriteDate _WriteDate fV
;         number -> R10
	.even
_WriteDate::
	st -y,R10
	mov R10,R16
	.dbline -1
	.dbline 71
; }
; void WriteDate(uchar number)    		//向DS1302中写入分字节
; {
	.dbline 72
;     WriteRTC_Byte(0x86,number);
	mov R18,R10
	clr R19
	ldi R16,134
	ldi R17,0
	rcall _WriteRTC_Byte
	.dbline -2
L18:
	.dbline 0 ; func end
	ld R10,y+
	ret
	.dbsym r number 10 c
	.dbend
	.dbfunc e ReadRTC_Byte _ReadRTC_Byte fi
;         redata -> R10
;        address -> R10
	.even
_ReadRTC_Byte::
	st -y,R10
	mov R10,R16
	.dbline -1
	.dbline 79
; }
; 
; 
; 
; 
; uint ReadRTC_Byte(uchar address)    			
; {
	.dbline 82
;     unsigned char  redata;
; 
; 	Clr_ds1302_rst;//ds1302_rst = 0; 			
	cbi 0x15,1
	.dbline 83
;     Clr_ds1302_clk;//ds1302_clk = 0; 				
	cbi 0x15,3
	.dbline 84
;     Set_ds1302_rst;//ds1302_rst = 1;				
	sbi 0x15,1
	.dbline 85
;     Write_bit(address);				
	mov R16,R10
	clr R17
	rcall _Write_bit
	.dbline 86
; 	redata=Read_bit();			
	rcall _Read_bit
	mov R10,R16
	.dbline 87
; 	Clr_ds1302_rst;//ds1302_rst = 0;
	cbi 0x15,1
	.dbline 88
; 	Set_ds1302_clk;//ds1302_clk = 1; 
	sbi 0x15,3
	.dbline 89
;    return redata;				
	clr R17
	.dbline -2
L19:
	.dbline 0 ; func end
	ld R10,y+
	ret
	.dbsym r redata 10 c
	.dbsym r address 10 c
	.dbend
	.dbfunc e WriteRTC_Byte _WriteRTC_Byte fV
;         number -> R10
;        address -> R12
	.even
_WriteRTC_Byte::
	st -y,R10
	st -y,R12
	mov R10,R18
	mov R12,R16
	.dbline -1
	.dbline 93
; }
; 
; void WriteRTC_Byte(uchar address,uchar number)   
; {
	.dbline 94
;     Clr_ds1302_clk;//ds1302_clk = 0;
	cbi 0x15,3
	.dbline 95
;     Clr_ds1302_rst;// ds1302_rst = 0;
	cbi 0x15,1
	.dbline 96
; 	Set_ds1302_rst;//ds1302_rst = 1;  
	sbi 0x15,1
	.dbline 97
;     Write_bit(address);				 
	mov R16,R12
	clr R17
	rcall _Write_bit
	.dbline 98
; 	Write_bit(number);				
	mov R16,R10
	clr R17
	rcall _Write_bit
	.dbline 99
;     Clr_ds1302_rst;//ds1302_rst = 0; 
	cbi 0x15,1
	.dbline 100
; 	Set_ds1302_clk;//ds1302_clk = 1;
	sbi 0x15,3
	.dbline -2
L20:
	.dbline 0 ; func end
	ld R12,y+
	ld R10,y+
	ret
	.dbsym r number 10 c
	.dbsym r address 12 c
	.dbend
	.dbfunc e Write_bit _Write_bit fV
;              i -> R20
;           addr -> R16
	.even
_Write_bit::
	st -y,R20
	.dbline -1
	.dbline 108
; }
; 				
; 
; 
; 
; 
; void Write_bit (uchar addr)				
; {
	.dbline 109
;   uchar i=0;
	.dbline 110
;  for(i=8;i>0;i--){
	ldi R20,8
	rjmp L25
L22:
	.dbline 110
	.dbline 111
; 	if((addr&0x01)==0x01)
	mov R24,R16
	andi R24,1
	cpi R24,1
	brne L26
X1:
	.dbline 112
; 	   Set_ds1302_data;//ds1302_dat = 1;
	sbi 0x15,2
	rjmp L27
L26:
	.dbline 114
;     else
; 		Clr_ds1302_data;//ds1302_dat = 0;
	cbi 0x15,2
L27:
	.dbline 115
;     Set_ds1302_clk;//ds1302_clk=1;
	sbi 0x15,3
	.dbline 116
; 	Clr_ds1302_clk;//ds1302_clk=0;
	cbi 0x15,3
	.dbline 117
; 	addr>>=1;
	lsr R16
	.dbline 118
;  }
L23:
	.dbline 110
	dec R20
L25:
	.dbline 110
	ldi R24,0
	cp R24,R20
	brlo L22
X2:
	.dbline -2
L21:
	.dbline 0 ; func end
	ld R20,y+
	ret
	.dbsym r i 20 c
	.dbsym r addr 16 c
	.dbend
	.dbfunc e Read_bit _Read_bit fc
;         data_r -> R20
;              i -> R22
	.even
_Read_bit::
	st -y,R20
	st -y,R22
	.dbline -1
	.dbline 122
; }
; 
; uchar Read_bit ()				
; {
	.dbline 123
;   uchar i=0;
	.dbline 124
;   uchar data_r=0;
	clr R20
	.dbline 126
; 
;   Set_ds1302_data;
	sbi 0x15,2
	.dbline 127
;   data_in;
	cbi 0x14,2
	.dbline 128
;   Delayus(15);
	ldi R16,15
	rcall _Delayus
	.dbline 130
; 
;  for(i=8;i>0;i--){
	ldi R22,8
	rjmp L32
L29:
	.dbline 130
	.dbline 131
; 	data_r>>=1;
	lsr R20
	.dbline 134
; 	
; 	
; 	 if(data_in_read)
	sbis 0x13,2
	rjmp L33
X3:
	.dbline 135
; 	{
	.dbline 136
; 		data_r|=0x80;
	ori R20,128
	.dbline 137
; 	}	
L33:
	.dbline 138
; 	Set_ds1302_clk;//ds1302_clk = 1;
	sbi 0x15,3
	.dbline 140
;  	
; 	Clr_ds1302_clk;//ds1302_clk = 0; 
	cbi 0x15,3
	.dbline 142
;  
;   }
L30:
	.dbline 130
	dec R22
L32:
	.dbline 130
	ldi R24,0
	cp R24,R22
	brlo L29
X4:
	.dbline 144
;   
;   data_out;
	sbi 0x14,2
	.dbline 145
; return data_r;
	mov R16,R20
	.dbline -2
L28:
	.dbline 0 ; func end
	ld R22,y+
	ld R20,y+
	ret
	.dbsym r data_r 20 c
	.dbsym r i 22 c
	.dbend
; }

⌨️ 快捷键说明

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