📄 1302模块.lis
字号:
.module _1302模块.c
.area text(rom, con, rel)
0000 .dbfile D:\AVR实验\DS1302时间芯片\1302模块.c
0000 .dbfunc e Delayus _Delayus fV
0000 ; i -> R16
.even
0000 _Delayus::
0000 .dbline -1
0000 .dbline 29
0000 ; #include <iom8515v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; #define uchar unsigned char
0000 ; #define uint unsigned int
0000 ;
0000 ; #define ds1302_clk PC1
0000 ; #define ds1302_data PC2
0000 ; #define ds1302_rst PC3
0000 ;
0000 ; #define Set_ds1302_clk PORTC |=(1<<ds1302_clk)
0000 ; #define Set_ds1302_data PORTC |=(1<<ds1302_data)
0000 ; #define Set_ds1302_rst PORTC |=(1<<ds1302_rst)
0000 ;
0000 ; #define Clr_ds1302_clk PORTC &=~(1<<ds1302_clk)
0000 ; #define Clr_ds1302_data PORTC &=~(1<<ds1302_data)
0000 ; #define Clr_ds1302_rst PORTC &=~(1<<ds1302_rst)
0000 ;
0000 ; #define read_data PORTC &=~(1<<ds1302_data)
0000 ;
0000 ; #define uchar unsigned char
0000 ; #define uint unsigned int
0000 ;
0000 ; uchar ReadSec(void);
0000 ;
0000 ;
0000 ;
0000 ; void Delayus(uchar i)
0000 ; {
0000 L2:
0000 .dbline 30
0000 L3:
0000 .dbline 30
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 35
000C ; }
000C ;
000C ;
000C ; uchar ReadSec(void)
000C ; {
000C .dbline 36
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 39
0014 ; }
0014 ; uchar ReadMin(void)
0014 ; {
0014 .dbline 40
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 43
001C ; }
001C ; uchar ReadHour(void)
001C ; {
001C .dbline 44
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 50
0028 ; }
0028 ;
0028 ;
0028 ;
0028 ; void WriteSec(uchar number)
0028 ; {
0028 .dbline 51
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 29D0 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 54
003A ; }
003A ; void WriteMin(uchar number)
003A ; {
003A .dbline 55
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 20D0 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 58
004C ; }
004C ; void WriteHour(uchar number) //向DS1302中写入分字节
004C ; {
004C .dbline 59
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 17D0 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,R21
005A ; address -> R20
.even
005A _ReadRTC_Byte::
005A 00D0 rcall push_gset1
005C 402F mov R20,R16
005E .dbline -1
005E .dbline 66
005E ; }
005E ;
005E ;
005E ;
005E ;
005E ; uint ReadRTC_Byte(uchar address)
005E ; {
005E .dbline 71
005E ; unsigned int redata;
005E ;
005E ;
005E ;
005E ; Clr_ds1302_rst;//ds1302_rst = 0;
005E AB98 cbi 0x15,3
0060 .dbline 72
0060 ; Clr_ds1302_clk;//ds1302_clk = 0;
0060 A998 cbi 0x15,1
0062 .dbline 73
0062 ; Set_ds1302_rst;//ds1302_rst = 1;
0062 AB9A sbi 0x15,3
0064 .dbline 74
0064 ; Write(address);
0064 042F mov R16,R20
0066 1127 clr R17
0068 00D0 rcall _Write
006A .dbline 75
006A ; redata=Read(address);
006A 042F mov R16,R20
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -