📄 mudle1302.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 + -