📄 rtc8025.s
字号:
.module Rtc8025.c
.area text(rom, con, rel)
.dbfile E:\程序\AVR程序\BOOTLoadICC\Rtc8025.c
.dbfunc e RTC_Delay _RTC_Delay fV
; MD -> R16,R17
.even
_RTC_Delay::
.dbline -1
.dbline 12
; #include <iom128v.h>
; #include "Rtc8025.h"
;
; //==========================================================
; //函 数:void RTC_Delay(unsigned int MD)
; //功 能:延时
; //入口参数:延时的参数
; //出口参数:无
; //日 期:2005-07-21 覃道堂
; //==========================================================
; void RTC_Delay(unsigned int MD)
; {
L2:
.dbline 13
L3:
.dbline 13
; while(MD --);
movw R2,R16
subi R16,1
sbci R17,0
tst R2
brne L2
tst R3
brne L2
X0:
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbsym r MD 16 i
.dbend
.dbfunc e Send_Start _Send_Start fc
.even
_Send_Start::
.dbline -1
.dbline 23
; }
; //==========================================================
; //函 数: void Send_Start(void)
; //功 能: 发送起始位
; //入口参数: 无
; //出口参数: 1错误,0正确
; //日 期: 2005-07-20 覃道堂
; //==========================================================
; unsigned char Send_Start(void)
; {
.dbline 24
; RTCSDA_INPUT;
in R24,0x11
andi R24,253
out 0x11,R24
.dbline 25
; RTC_Delay(1);
ldi R16,1
ldi R17,0
xcall _RTC_Delay
.dbline 26
; if((PIND & 0x02) == 0)
sbic 0x10,1
rjmp L6
.dbline 27
; return 1;
ldi R16,1
xjmp L5
L6:
.dbline 28
; RTCSDA_H;
sbi 0x12,1
.dbline 29
; RTC_Delay(1);
ldi R16,1
ldi R17,0
xcall _RTC_Delay
.dbline 30
; RTCSDA_OUTPUT;
sbi 0x11,1
.dbline 31
; RTCSCL_L;
in R24,0x12
andi R24,254
out 0x12,R24
.dbline 32
; RTC_Delay(1);
ldi R16,1
ldi R17,0
xcall _RTC_Delay
.dbline 33
; RTCSCL_H;
sbi 0x12,0
.dbline 34
; RTC_Delay(1);
ldi R16,1
ldi R17,0
xcall _RTC_Delay
.dbline 35
; RTCSDA_L;
in R24,0x12
andi R24,253
out 0x12,R24
.dbline 36
; RTC_Delay(1);
ldi R16,1
ldi R17,0
xcall _RTC_Delay
.dbline 37
; RTCSCL_L;
in R24,0x12
andi R24,254
out 0x12,R24
.dbline 38
; RTC_Delay(1);
ldi R16,1
ldi R17,0
xcall _RTC_Delay
.dbline 39
; return 0;
clr R16
.dbline -2
L5:
.dbline 0 ; func end
ret
.dbend
.dbfunc e Send_Stop _Send_Stop fc
.even
_Send_Stop::
.dbline -1
.dbline 49
; }
; //==========================================================
; //函 数: void Send_Stop(void)
; //功 能: 发送停止位
; //入口参数: 无
; //出口参数: 1错误,0正确
; //日 期: 2005-07-20 覃道堂
; //==========================================================
; unsigned char Send_Stop(void)
; {
.dbline 50
; RTCSDA_INPUT;
in R24,0x11
andi R24,253
out 0x11,R24
.dbline 51
; RTC_Delay(20);
ldi R16,20
ldi R17,0
xcall _RTC_Delay
.dbline 52
; if((PIND & 0x02) == 0)
sbic 0x10,1
rjmp L9
.dbline 53
; return 1;
ldi R16,1
xjmp L8
L9:
.dbline 54
; RTCSDA_L;
in R24,0x12
andi R24,253
out 0x12,R24
.dbline 55
; RTCSDA_OUTPUT;
sbi 0x11,1
.dbline 56
; RTCSCL_L;
in R24,0x12
andi R24,254
out 0x12,R24
.dbline 57
; RTC_Delay(1);
ldi R16,1
ldi R17,0
xcall _RTC_Delay
.dbline 58
; RTCSCL_H;
sbi 0x12,0
.dbline 59
; RTC_Delay(1);
ldi R16,1
ldi R17,0
xcall _RTC_Delay
.dbline 60
; RTCSDA_H;
sbi 0x12,1
.dbline 61
; RTC_Delay(1);
ldi R16,1
ldi R17,0
xcall _RTC_Delay
.dbline 62
; RTCSCL_L;
in R24,0x12
andi R24,254
out 0x12,R24
.dbline 63
; RTC_Delay(1);
ldi R16,1
ldi R17,0
xcall _RTC_Delay
.dbline 64
; return 0;
clr R16
.dbline -2
L8:
.dbline 0 ; func end
ret
.dbend
.dbfunc e Receive_ACK _Receive_ACK fc
.even
_Receive_ACK::
.dbline -1
.dbline 74
; }
; //==========================================================
; //函 数: unsigned char Receive_ACK()
; //功 能: 接收应答
; //入口参数: 无
; //出口参数: 1错误,0正确
; //日 期: 2005-07-20 覃道堂
; //==========================================================
; unsigned char Receive_ACK(void)
; {
.dbline 75
; RTCSDA_INPUT;
in R24,0x11
andi R24,253
out 0x11,R24
.dbline 76
; RTC_Delay(1);
ldi R16,1
ldi R17,0
xcall _RTC_Delay
.dbline 77
; RTCSCL_H;
sbi 0x12,0
.dbline 78
; RTC_Delay(1);
ldi R16,1
ldi R17,0
xcall _RTC_Delay
.dbline 79
; if((PIND & 0x02) == 2)
in R24,0x10
andi R24,2
cpi R24,2
brne L12
.dbline 80
; return 1;
ldi R16,1
xjmp L11
L12:
.dbline 81
; RTCSCL_L;
in R24,0x12
andi R24,254
out 0x12,R24
.dbline 82
; RTC_Delay(1);
ldi R16,1
ldi R17,0
xcall _RTC_Delay
.dbline 83
; return 0;
clr R16
.dbline -2
L11:
.dbline 0 ; func end
ret
.dbend
.dbfunc e Send_ACK _Send_ACK fc
.even
_Send_ACK::
.dbline -1
.dbline 93
; }
; //==========================================================
; //函 数: unsigned char Send_ACK(void)
; //功 能: 发送应答
; //入口参数: 无
; //出口参数: 无
; //日 期: 2005-07-20 覃道堂
; //==========================================================
; unsigned char Send_ACK(void)
; {
.dbline 94
; RTCSCL_L;
in R24,0x12
andi R24,254
out 0x12,R24
.dbline 95
; if(!(PIND & 0x02))
sbic 0x10,1
rjmp L15
.dbline 96
; return 1;
ldi R16,1
xjmp L14
L15:
.dbline 97
; RTCSDA_L;
in R24,0x12
andi R24,253
out 0x12,R24
.dbline 98
; RTCSDA_OUTPUT;
sbi 0x11,1
.dbline 99
; RTC_Delay(1);
ldi R16,1
ldi R17,0
xcall _RTC_Delay
.dbline 100
; RTCSCL_H;
sbi 0x12,0
.dbline 101
; RTC_Delay(1);
ldi R16,1
ldi R17,0
xcall _RTC_Delay
.dbline 102
; RTCSCL_L;
in R24,0x12
andi R24,254
out 0x12,R24
.dbline 103
; RTC_Delay(1);
ldi R16,1
ldi R17,0
xcall _RTC_Delay
.dbline 104
; return 0;
clr R16
.dbline -2
L14:
.dbline 0 ; func end
ret
.dbend
.dbfunc e Send_No_ACK _Send_No_ACK fc
.even
_Send_No_ACK::
.dbline -1
.dbline 115
; }
;
; //==========================================================
; //函 数: void Send_No_ACK(void)
; //功 能: 发送应答
; //入口参数: 无
; //出口参数: 无
; //日 期: 2005-07-20 覃道堂
; //==========================================================
; unsigned char Send_No_ACK(void)
; {
.dbline 116
; RTCSCL_L;
in R24,0x12
andi R24,254
out 0x12,R24
.dbline 117
; if(!(PIND & 0x02))
sbic 0x10,1
rjmp L18
.dbline 118
; return 1;
ldi R16,1
xjmp L17
L18:
.dbline 119
; RTCSDA_OUTPUT;
sbi 0x11,1
.dbline 120
; RTC_Delay(1);
ldi R16,1
ldi R17,0
xcall _RTC_Delay
.dbline 121
; RTCSDA_H;
sbi 0x12,1
.dbline 122
; RTC_Delay(1);
ldi R16,1
ldi R17,0
xcall _RTC_Delay
.dbline 123
; RTCSCL_H;
sbi 0x12,0
.dbline 124
; RTC_Delay(1);
ldi R16,1
ldi R17,0
xcall _RTC_Delay
.dbline 125
; RTCSCL_L;
in R24,0x12
andi R24,254
out 0x12,R24
.dbline 126
; RTC_Delay(1);
ldi R16,1
ldi R17,0
xcall _RTC_Delay
.dbline 127
; return 0;
clr R16
.dbline -2
L17:
.dbline 0 ; func end
ret
.dbend
.dbfunc e Read_Byte _Read_Byte fc
; i -> R20
; Byte -> R22
.even
_Read_Byte::
xcall push_gset2
.dbline -1
.dbline 137
; }
; //==========================================================
; //函 数: unsigned char Read_Byte(void)
; //功 能: 从R8025里读一个Byte
; //入口参数: 无
; //出口参数: 错误返回1,正确返回读取的值
; //日 期: 2005-07-20 覃道堂
; //==========================================================
; unsigned char Read_Byte(void)
; {
.dbline 138
; unsigned char i = 8;
ldi R20,8
.dbline 141
; unsigned char Byte;
;
; RTCSCL_L;
in R24,0x12
andi R24,254
out 0x12,R24
.dbline 142
; RTCSDA_INPUT;
in R24,0x11
andi R24,253
out 0x11,R24
xjmp L22
L21:
.dbline 144
; while(i --)
; {
.dbline 145
; Byte = Byte << 1;
lsl R22
.dbline 146
; RTCSCL_H;
sbi 0x12,0
.dbline 147
; RTC_Delay(1);
ldi R16,1
ldi R17,0
xcall _RTC_Delay
.dbline 148
; if((PIND & 0x02))
sbis 0x10,1
rjmp L24
.dbline 149
; {
.dbline 150
; Byte = Byte + 1;
inc R22
.dbline 151
; }
L24:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -