📄 mudle1302.lis
字号:
.module mudle1302.c
.area text(rom, con, rel)
0000 .dbfile D:\AVR实验\DS1302时间芯片\mudle1302.c
0000 .dbfunc e Delayus _Delayus fV
0000 ; i -> R16
.even
0000 _Delayus::
0000 .dbline -1
0000 .dbline 5
0000 ; #include "ds1302.h"
0000 ;
0000 ;
0000 ; void Delayus(uchar i)
0000 ; {
0000 L2:
0000 .dbline 6
0000 L3:
0000 .dbline 6
0000 ; while(--i);
0000 802F mov R24,R16
0002 8150 subi R24,1
0004 082F mov R16,R24
0006 8823 tst R24
0008 D9F7 brne L2
000A .dbline -2
000A L1:
000A .dbline 0 ; func end
000A 0895 ret
000C .dbsym r i 16 c
000C .dbend
000C .dbfunc e ReadSec _ReadSec fc
.even
000C _ReadSec::
000C .dbline -1
000C .dbline 13
000C ; }
000C ;
000C ;
000C ;
000C ;
000C ; uchar ReadSec(void)
000C ; {
000C .dbline 14
000C ; return ReadRTC_Byte(0x81);
000C 01E8 ldi R16,129
000E 10E0 ldi R17,0
0010 24D0 rcall _ReadRTC_Byte
0012 .dbline -2
0012 L5:
0012 .dbline 0 ; func end
0012 0895 ret
0014 .dbend
0014 .dbfunc e ReadMin _ReadMin fc
.even
0014 _ReadMin::
0014 .dbline -1
0014 .dbline 17
0014 ; }
0014 ; uchar ReadMin(void)
0014 ; {
0014 .dbline 18
0014 ; return ReadRTC_Byte(0x83);
0014 03E8 ldi R16,131
0016 10E0 ldi R17,0
0018 20D0 rcall _ReadRTC_Byte
001A .dbline -2
001A L6:
001A .dbline 0 ; func end
001A 0895 ret
001C .dbend
001C .dbfunc e ReadHour _ReadHour fc
.even
001C _ReadHour::
001C .dbline -1
001C .dbline 21
001C ; }
001C ; uchar ReadHour(void)
001C ; {
001C .dbline 22
001C ; return ReadRTC_Byte(0x85);
001C 05E8 ldi R16,133
001E 10E0 ldi R17,0
0020 1CD0 rcall _ReadRTC_Byte
0022 .dbline -2
0022 L7:
0022 .dbline 0 ; func end
0022 0895 ret
0024 .dbend
0024 .dbfunc e WriteSec _WriteSec fV
0024 ; number -> R20
.even
0024 _WriteSec::
0024 00D0 rcall push_gset1
0026 402F mov R20,R16
0028 .dbline -1
0028 .dbline 28
0028 ; }
0028 ;
0028 ;
0028 ;
0028 ; void WriteSec(uchar number)
0028 ; {
0028 .dbline 29
0028 ; WriteRTC_Byte(0x80,number);
0028 242F mov R18,R20
002A 3327 clr R19
002C 00E8 ldi R16,128
002E 10E0 ldi R17,0
0030 23D0 rcall _WriteRTC_Byte
0032 .dbline -2
0032 L8:
0032 00D0 rcall pop_gset1
0034 .dbline 0 ; func end
0034 0895 ret
0036 .dbsym r number 20 c
0036 .dbend
0036 .dbfunc e WriteMin _WriteMin fV
0036 ; number -> R20
.even
0036 _WriteMin::
0036 00D0 rcall push_gset1
0038 402F mov R20,R16
003A .dbline -1
003A .dbline 32
003A ; }
003A ; void WriteMin(uchar number)
003A ; {
003A .dbline 33
003A ; WriteRTC_Byte(0x82,number);
003A 242F mov R18,R20
003C 3327 clr R19
003E 02E8 ldi R16,130
0040 10E0 ldi R17,0
0042 1AD0 rcall _WriteRTC_Byte
0044 .dbline -2
0044 L9:
0044 00D0 rcall pop_gset1
0046 .dbline 0 ; func end
0046 0895 ret
0048 .dbsym r number 20 c
0048 .dbend
0048 .dbfunc e WriteHour _WriteHour fV
0048 ; number -> R20
.even
0048 _WriteHour::
0048 00D0 rcall push_gset1
004A 402F mov R20,R16
004C .dbline -1
004C .dbline 36
004C ; }
004C ; void WriteHour(uchar number) //向DS1302中写入分字节
004C ; {
004C .dbline 37
004C ; WriteRTC_Byte(0x84,number);
004C 242F mov R18,R20
004E 3327 clr R19
0050 04E8 ldi R16,132
0052 10E0 ldi R17,0
0054 11D0 rcall _WriteRTC_Byte
0056 .dbline -2
0056 L10:
0056 00D0 rcall pop_gset1
0058 .dbline 0 ; func end
0058 0895 ret
005A .dbsym r number 20 c
005A .dbend
005A .dbfunc e ReadRTC_Byte _ReadRTC_Byte fi
005A ; redata -> R20
005A ; address -> R20
.even
005A _ReadRTC_Byte::
005A 00D0 rcall push_gset1
005C 402F mov R20,R16
005E .dbline -1
005E .dbline 44
005E ; }
005E ;
005E ;
005E ;
005E ;
005E ; uint ReadRTC_Byte(uchar address)
005E ; {
005E .dbline 47
005E ; unsigned char redata;
005E ;
005E ; Clr_ds1302_rst;//ds1302_rst = 0;
005E AB98 cbi 0x15,3
0060 .dbline 48
0060 ; Clr_ds1302_clk;//ds1302_clk = 0;
0060 A998 cbi 0x15,1
0062 .dbline 49
0062 ; Set_ds1302_rst;//ds1302_rst = 1;
0062 AB9A sbi 0x15,3
0064 .dbline 50
0064 ; Write_bit(address);
0064 042F mov R16,R20
0066 1127 clr R17
0068 17D0 rcall _Write_bit
006A .dbline 51
006A ; redata=Read_bit();
006A 2AD0 rcall _Read_bit
006C 402F mov R20,R16
006E .dbline 52
006E ; Clr_ds1302_rst;//ds1302_rst = 0;
006E AB98 cbi 0x15,3
0070 .dbline 53
0070 ; Set_ds1302_clk;//ds1302_clk = 1;
0070 A99A sbi 0x15,1
0072 .dbline 54
0072 ; return redata;
0072 1127 clr R17
0074 .dbline -2
0074 L11:
0074 00D0 rcall pop_gset1
0076 .dbline 0 ; func end
0076 0895 ret
0078 .dbsym r redata 20 c
0078 .dbsym r address 20 c
0078 .dbend
0078 .dbfunc e WriteRTC_Byte _WriteRTC_Byte fV
0078 ; number -> R20
0078 ; address -> R22
.even
0078 _WriteRTC_Byte::
0078 00D0 rcall push_gset2
007A 422F mov R20,R18
007C 602F mov R22,R16
007E .dbline -1
007E .dbline 58
007E ; }
007E ;
007E ; void WriteRTC_Byte(uchar address,uchar number)
007E ; {
007E .dbline 59
007E ; Clr_ds1302_clk;//ds1302_clk = 0;
007E A998 cbi 0x15,1
0080 .dbline 60
0080 ; Clr_ds1302_rst;// ds1302_rst = 0;
0080 AB98 cbi 0x15,3
0082 .dbline 61
0082 ; Set_ds1302_rst;//ds1302_rst = 1;
0082 AB9A sbi 0x15,3
0084 .dbline 62
0084 ; Write_bit(address);
0084 062F mov R16,R22
0086 1127 clr R17
0088 07D0 rcall _Write_bit
008A .dbline 63
008A ; Write_bit(number);
008A 042F mov R16,R20
008C 1127 clr R17
008E 04D0 rcall _Write_bit
0090 .dbline 64
0090 ; Clr_ds1302_rst;//ds1302_rst = 0;
0090 AB98 cbi 0x15,3
0092 .dbline 65
0092 ; Set_ds1302_clk;//ds1302_clk = 1;
0092 A99A sbi 0x15,1
0094 .dbline -2
0094 L12:
0094 00D0 rcall pop_gset2
0096 .dbline 0 ; func end
0096 0895 ret
0098 .dbsym r number 20 c
0098 .dbsym r address 22 c
0098 .dbend
0098 .dbfunc e Write_bit _Write_bit fV
0098 ; i -> R20
0098 ; addr -> R16
.even
0098 _Write_bit::
0098 00D0 rcall push_gset1
009A .dbline -1
009A .dbline 73
009A ; }
009A ;
009A ;
009A ;
009A ;
009A ;
009A ; void Write_bit (uchar addr)
009A ; {
009A .dbline 74
009A ; uchar i=0;
009A 4427 clr R20
009C .dbline 75
009C 48E0 ldi R20,8
009E 0BC0 rjmp L17
00A0 L14:
00A0 .dbline 75
00A0 ; for(i=8;i>0;i--){
00A0 .dbline 76
00A0 ; if((addr&0x01)==0x01)
00A0 802F mov R24,R16
00A2 8170 andi R24,1
00A4 8130 cpi R24,1
00A6 11F4 brne L18
00A8 .dbline 77
00A8 ; Set_ds1302_data;//ds1302_dat = 1;
00A8 AA9A sbi 0x15,2
00AA 01C0 rjmp L19
00AC L18:
00AC .dbline 79
00AC ; else
00AC ; Clr_ds1302_data;//ds1302_dat = 0;
00AC AA98 cbi 0x15,2
00AE L19:
00AE .dbline 80
00AE A99A sbi 0x15,1
00B0 .dbline 81
00B0 A998 cbi 0x15,1
00B2 .dbline 82
00B2 0695 lsr R16
00B4 .dbline 83
00B4 L15:
00B4 .dbline 75
00B4 4A95 dec R20
00B6 L17:
00B6 .dbline 75
00B6 2224 clr R2
00B8 2416 cp R2,R20
00BA 90F3 brlo L14
00BC .dbline -2
00BC L13:
00BC 00D0 rcall pop_gset1
00BE .dbline 0 ; func end
00BE 0895 ret
00C0 .dbsym r i 20 c
00C0 .dbsym r addr 16 c
00C0 .dbend
00C0 .dbfunc e Read_bit _Read_bit fc
00C0 ; num -> <dead>
00C0 ; data_r -> R20
00C0 ; i -> R22
.even
00C0 _Read_bit::
00C0 00D0 rcall push_gset2
00C2 .dbline -1
00C2 .dbline 87
00C2 ; Set_ds1302_clk;//ds1302_clk=1;
00C2 ; Clr_ds1302_clk;//ds1302_clk=0;
00C2 ; addr>>=1;
00C2 ; }
00C2 ; }
00C2 ;
00C2 ; uchar Read_bit ()
00C2 ; {
00C2 .dbline 88
00C2 ; uchar i=0,num;
00C2 6627 clr R22
00C4 .dbline 89
00C4 ; uchar data_r=0;
00C4 4427 clr R20
00C6 .dbline 90
00C6 ; Delayus(15);//19us delay
00C6 0FE0 ldi R16,15
00C8 9BDF rcall _Delayus
00CA .dbline 91
00CA ; data_in;
00CA A298 cbi 0x14,2
00CC .dbline 94
00CC 68E0 ldi R22,8
00CE 07C0 rjmp L24
00D0 L21:
00D0 .dbline 94
00D0 ;
00D0 ;
00D0 ; for(i=8;i>0;i--){
00D0 .dbline 95
00D0 ; data_r>>=1;
00D0 4695 lsr R20
00D2 .dbline 98
00D2 ;
00D2 ;
00D2 ; if(data_in_read)
00D2 9A9B sbis 0x13,2
00D4 01C0 rjmp L25
00D6 .dbline 99
00D6 ; {
00D6 .dbline 100
00D6 ; data_r|=0x80;
00D6 4068 ori R20,128
00D8 .dbline 101
00D8 ; }
00D8 L25:
00D8 .dbline 102
00D8 A99A sbi 0x15,1
00DA .dbline 103
00DA A998 cbi 0x15,1
00DC .dbline 104
00DC L22:
00DC .dbline 94
00DC 6A95 dec R22
00DE L24:
00DE .dbline 94
00DE 2224 clr R2
00E0 2616 cp R2,R22
00E2 B0F3 brlo L21
00E4 .dbline 105
00E4 ; Set_ds1302_clk;//ds1302_clk = 1;
00E4 ; Clr_ds1302_clk;//ds1302_clk = 0;
00E4 ; }
00E4 ; return data_r;
00E4 042F mov R16,R20
00E6 .dbline -2
00E6 L20:
00E6 00D0 rcall pop_gset2
00E8 .dbline 0 ; func end
00E8 0895 ret
00EA .dbsym l num 1 c
00EA .dbsym r data_r 20 c
00EA .dbsym r i 22 c
00EA .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -