📄 ds1302.lis
字号:
0088 ; asm("nop");
0088 0000 nop
008A .dbline 68
008A ; asm("nop");
008A 0000 nop
008C .dbline 69
008C ; asm("nop");
008C 0000 nop
008E .dbline 70
008E ; asm("nop");
008E 0000 nop
0090 .dbline 71
0090 ; T_PORT|=T_RST; //时钟信号低时拉高RST初始化
0090 AF9A sbi 0x15,7
0092 .dbline 72
0092 ; temp=addr;
0092 642F mov R22,R20
0094 .dbline 73
0094 ; for(i=0;i<8;i++)
0094 AA24 clr R10
0096 0EC0 rjmp L23
0098 L20:
0098 .dbline 74
0098 ; {
0098 .dbline 75
0098 ; if(temp&(1<<i))
0098 01E0 ldi R16,1
009A 1A2D mov R17,R10
009C 00D0 rcall lsl8
009E 262E mov R2,R22
00A0 2022 and R2,R16
00A2 11F0 breq L24
00A4 .dbline 76
00A4 ; T_PORT |=T_IO ;
00A4 AE9A sbi 0x15,6
00A6 01C0 rjmp L25
00A8 L24:
00A8 .dbline 78
00A8 ; else
00A8 ; T_PORT &=~T_IO ;
00A8 AE98 cbi 0x15,6
00AA L25:
00AA .dbline 79
00AA 0000 nop
00AC .dbline 80
00AC 0000 nop
00AE .dbline 81
00AE AD9A sbi 0x15,5
00B0 .dbline 82
00B0 AD98 cbi 0x15,5
00B2 .dbline 83
00B2 L21:
00B2 .dbline 73
00B2 A394 inc R10
00B4 L23:
00B4 .dbline 73
00B4 8A2D mov R24,R10
00B6 8830 cpi R24,8
00B8 78F3 brlo L20
00BA .dbline 84
00BA ; asm("nop");
00BA ; asm("nop");
00BA ; T_PORT |=T_CLK; //时钟上升沿写入数据
00BA ; T_PORT &=~T_CLK; //时钟拉低电平
00BA ; }
00BA ; T_DDR&=~T_IO;
00BA A698 cbi 0x14,6
00BC .dbline 85
00BC ; for(i=0;i<8;i++)
00BC AA24 clr R10
00BE 14C0 rjmp L29
00C0 L26:
00C0 .dbline 86
00C0 ; {
00C0 .dbline 87
00C0 ; k=(T_PIN&T_IO);
00C0 43B3 in R20,0x13
00C2 4074 andi R20,64
00C4 .dbline 88
00C4 ; if(k==T_IO)
00C4 4034 cpi R20,64
00C6 29F4 brne L30
00C8 .dbline 89
00C8 ; temp|=(1<<i);
00C8 01E0 ldi R16,1
00CA 1A2D mov R17,R10
00CC 00D0 rcall lsl8
00CE 602B or R22,R16
00D0 06C0 rjmp L31
00D2 L30:
00D2 .dbline 91
00D2 ; else
00D2 ; temp&=~(1<<i);
00D2 01E0 ldi R16,1
00D4 1A2D mov R17,R10
00D6 00D0 rcall lsl8
00D8 202E mov R2,R16
00DA 2094 com R2
00DC 6221 and R22,R2
00DE L31:
00DE .dbline 92
00DE 0000 nop
00E0 .dbline 93
00E0 0000 nop
00E2 .dbline 94
00E2 AD9A sbi 0x15,5
00E4 .dbline 95
00E4 AD98 cbi 0x15,5
00E6 .dbline 96
00E6 L27:
00E6 .dbline 85
00E6 A394 inc R10
00E8 L29:
00E8 .dbline 85
00E8 8A2D mov R24,R10
00EA 8830 cpi R24,8
00EC 48F3 brlo L26
00EE .dbline 97
00EE ; asm("nop");
00EE ; asm("nop");
00EE ; T_PORT|=T_CLK; //上升沿读出数据
00EE ; T_PORT &=~T_CLK; //时钟电平拉低
00EE ; }
00EE ; T_DDR|=T_IO;
00EE A69A sbi 0x14,6
00F0 .dbline 98
00F0 ; T_PORT&=~T_CLK;
00F0 AD98 cbi 0x15,5
00F2 .dbline 99
00F2 ; T_PORT&=~T_RST; //禁止DS1302
00F2 AF98 cbi 0x15,7
00F4 .dbline 100
00F4 ; return(temp);
00F4 062F mov R16,R22
00F6 .dbline -2
00F6 L19:
00F6 00D0 rcall pop_gset3
00F8 .dbline 0 ; func end
00F8 0895 ret
00FA .dbsym r k 20 c
00FA .dbsym r temp 22 c
00FA .dbsym r i 10 c
00FA .dbsym r addr 20 c
00FA .dbend
00FA .dbfunc e init_1302 _init_1302 fV
.even
00FA _init_1302::
00FA .dbline -1
00FA .dbline 104
00FA ; }
00FA ; //1302初始化
00FA ; void init_1302()
00FA ; {
00FA .dbline 105
00FA ; write_data(0x8e,0x00); //关闭寄存器写保护
00FA 2227 clr R18
00FC 0EE8 ldi R16,142
00FE 88DF rcall _write_data
0100 .dbline 106
0100 ; write_data(0x90,0x00); //写充电寄存器
0100 2227 clr R18
0102 00E9 ldi R16,144
0104 85DF rcall _write_data
0106 .dbline 107
0106 ; write_data(0x80,0x00); //秒寄存器停止位置0,时钟启动,初值设为0
0106 2227 clr R18
0108 00E8 ldi R16,128
010A 82DF rcall _write_data
010C .dbline -2
010C L32:
010C .dbline 0 ; func end
010C 0895 ret
010E .dbend
010E .dbfunc e init_time _init_time fV
010E ; d -> y+10
010E ; month -> y+8
010E ; day -> y+6
010E ; hour -> y+4
010E ; min -> R20
010E ; sec -> R22
.even
010E _init_time::
010E 00D0 rcall push_gset2
0110 422F mov R20,R18
0112 602F mov R22,R16
0114 .dbline -1
0114 .dbline 111
0114 ; }
0114 ;
0114 ; void init_time(uchar sec,uchar min,uchar hour,uchar day,uchar month,uchar d)
0114 ; {
0114 .dbline 112
0114 ; write_data(0x80,sec);
0114 262F mov R18,R22
0116 00E8 ldi R16,128
0118 7BDF rcall _write_data
011A .dbline 113
011A ; write_data(0x82,min);
011A 242F mov R18,R20
011C 02E8 ldi R16,130
011E 78DF rcall _write_data
0120 .dbline 114
0120 ; write_data(0x84,hour);
0120 2C81 ldd R18,y+4
0122 04E8 ldi R16,132
0124 75DF rcall _write_data
0126 .dbline 115
0126 ; write_data(0x86,day);
0126 2E81 ldd R18,y+6
0128 06E8 ldi R16,134
012A 72DF rcall _write_data
012C .dbline 116
012C ; write_data(0x88,month);
012C 2885 ldd R18,y+8
012E 08E8 ldi R16,136
0130 6FDF rcall _write_data
0132 .dbline 117
0132 ; write_data(0x8a,d);
0132 2A85 ldd R18,y+10
0134 0AE8 ldi R16,138
0136 6CDF rcall _write_data
0138 .dbline -2
0138 L33:
0138 00D0 rcall pop_gset2
013A .dbline 0 ; func end
013A 0895 ret
013C .dbsym l d 10 c
013C .dbsym l month 8 c
013C .dbsym l day 6 c
013C .dbsym l hour 4 c
013C .dbsym r min 20 c
013C .dbsym r sec 22 c
013C .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -