?? ds1302.lis
字號:
0098 ; asm("nop");
0098 0000 nop
009A .dbline 69
009A ; asm("nop");
009A 0000 nop
009C .dbline 70
009C ; asm("nop");
009C 0000 nop
009E .dbline 71
009E ; T_PORT|=T_RST; //時鐘信號低時拉高RST初始化
009E D89A sbi 0x1b,0
00A0 .dbline 72
00A0 ; temp=addr;
00A0 642F mov R22,R20
00A2 .dbline 73
00A2 ; for(i=0;i<8;i++)
00A2 AA24 clr R10
00A4 0FC0 xjmp L23
00A6 L20:
00A6 .dbline 74
00A6 ; {
00A6 .dbline 75
00A6 ; if(temp&(1<<i))
00A6 01E0 ldi R16,1
00A8 1A2D mov R17,R10
00AA 0E940000 xcall lsl8
00AE 262E mov R2,R22
00B0 2022 and R2,R16
00B2 11F0 breq L24
00B4 .dbline 76
00B4 ; T_PORT |=T_IO ;
00B4 D99A sbi 0x1b,1
00B6 01C0 xjmp L25
00B8 L24:
00B8 .dbline 78
00B8 ; else
00B8 ; T_PORT &=~T_IO ;
00B8 D998 cbi 0x1b,1
00BA L25:
00BA .dbline 79
00BA 0000 nop
00BC .dbline 80
00BC 0000 nop
00BE .dbline 81
00BE DA9A sbi 0x1b,2
00C0 .dbline 82
00C0 DA98 cbi 0x1b,2
00C2 .dbline 83
00C2 L21:
00C2 .dbline 73
00C2 A394 inc R10
00C4 L23:
00C4 .dbline 73
00C4 8A2D mov R24,R10
00C6 8830 cpi R24,8
00C8 70F3 brlo L20
00CA .dbline 84
00CA ; asm("nop");
00CA ; asm("nop");
00CA ; T_PORT |=T_CLK; //時鐘上升沿寫入數據
00CA ; T_PORT &=~T_CLK; //時鐘拉低電平
00CA ; }
00CA ; T_DDR&=~T_IO;
00CA D198 cbi 0x1a,1
00CC .dbline 85
00CC ; for(i=0;i<8;i++)
00CC AA24 clr R10
00CE 16C0 xjmp L29
00D0 L26:
00D0 .dbline 86
00D0 ; {
00D0 .dbline 87
00D0 ; k=(T_PIN&T_IO);
00D0 49B3 in R20,0x19
00D2 4270 andi R20,2
00D4 .dbline 88
00D4 ; if(k==T_IO)
00D4 4230 cpi R20,2
00D6 31F4 brne L30
00D8 .dbline 89
00D8 ; temp|=(1<<i);
00D8 01E0 ldi R16,1
00DA 1A2D mov R17,R10
00DC 0E940000 xcall lsl8
00E0 602B or R22,R16
00E2 07C0 xjmp L31
00E4 L30:
00E4 .dbline 91
00E4 ; else
00E4 ; temp&=~(1<<i);
00E4 01E0 ldi R16,1
00E6 1A2D mov R17,R10
00E8 0E940000 xcall lsl8
00EC 202E mov R2,R16
00EE 2094 com R2
00F0 6221 and R22,R2
00F2 L31:
00F2 .dbline 92
00F2 0000 nop
00F4 .dbline 93
00F4 0000 nop
00F6 .dbline 94
00F6 DA9A sbi 0x1b,2
00F8 .dbline 95
00F8 DA98 cbi 0x1b,2
00FA .dbline 96
00FA L27:
00FA .dbline 85
00FA A394 inc R10
00FC L29:
00FC .dbline 85
00FC 8A2D mov R24,R10
00FE 8830 cpi R24,8
0100 38F3 brlo L26
0102 .dbline 97
0102 ; asm("nop");
0102 ; asm("nop");
0102 ; T_PORT|=T_CLK; //上升沿讀出數據
0102 ; T_PORT &=~T_CLK; //時鐘電平拉低
0102 ; }
0102 ; T_DDR|=T_IO;
0102 D19A sbi 0x1a,1
0104 .dbline 98
0104 ; T_PORT&=~T_CLK;
0104 DA98 cbi 0x1b,2
0106 .dbline 99
0106 ; T_PORT&=~T_RST; //禁止DS1302
0106 D898 cbi 0x1b,0
0108 .dbline 100
0108 ; return(temp);
0108 062F mov R16,R22
010A .dbline -2
010A L19:
010A 0E940000 xcall pop_gset3
010E .dbline 0 ; func end
010E 0895 ret
0110 .dbsym r k 20 c
0110 .dbsym r temp 22 c
0110 .dbsym r i 10 c
0110 .dbsym r addr 20 c
0110 .dbend
0110 .dbfunc e init_1302 _init_1302 fV
.even
0110 _init_1302::
0110 .dbline -1
0110 .dbline 104
0110 ; }
0110 ; //1302初始化
0110 ; void init_1302()
0110 ; {
0110 .dbline 105
0110 ; write_data(0x8e,0x00); //關閉寄存器寫保護
0110 2227 clr R18
0112 0EE8 ldi R16,142
0114 7FDF xcall _write_data
0116 .dbline 106
0116 ; write_data(0x90,0x00); //寫充電寄存器
0116 2227 clr R18
0118 00E9 ldi R16,144
011A 7CDF xcall _write_data
011C .dbline 107
011C ; write_data(0x80,0x00); //秒寄存器停止位置0,時鐘啟動,初值設為0
011C 2227 clr R18
011E 00E8 ldi R16,128
0120 79DF xcall _write_data
0122 .dbline -2
0122 L32:
0122 .dbline 0 ; func end
0122 0895 ret
0124 .dbend
0124 .dbfunc e init_time _init_time fV
0124 ; year -> y+12
0124 ; d -> y+10
0124 ; month -> y+8
0124 ; day -> y+6
0124 ; hour -> y+4
0124 ; min -> R20
0124 ; sec -> R22
.even
0124 _init_time::
0124 0E940000 xcall push_gset2
0128 422F mov R20,R18
012A 602F mov R22,R16
012C .dbline -1
012C .dbline 111
012C ; }
012C ;
012C ; void init_time(uchar sec,uchar min,uchar hour,uchar day,uchar month,uchar d,uchar year)
012C ; {
012C .dbline 112
012C ; write_data(0x80,sec);
012C 262F mov R18,R22
012E 00E8 ldi R16,128
0130 71DF xcall _write_data
0132 .dbline 113
0132 ; write_data(0x82,min);
0132 242F mov R18,R20
0134 02E8 ldi R16,130
0136 6EDF xcall _write_data
0138 .dbline 114
0138 ; write_data(0x84,hour);
0138 2C81 ldd R18,y+4
013A 04E8 ldi R16,132
013C 6BDF xcall _write_data
013E .dbline 115
013E ; write_data(0x86,day);
013E 2E81 ldd R18,y+6
0140 06E8 ldi R16,134
0142 68DF xcall _write_data
0144 .dbline 116
0144 ; write_data(0x88,month);
0144 2885 ldd R18,y+8
0146 08E8 ldi R16,136
0148 65DF xcall _write_data
014A .dbline 117
014A ; write_data(0x8a,d);
014A 2A85 ldd R18,y+10
014C 0AE8 ldi R16,138
014E 62DF xcall _write_data
0150 .dbline 118
0150 ; write_data(0x8c,year);
0150 2C85 ldd R18,y+12
0152 0CE8 ldi R16,140
0154 5FDF xcall _write_data
0156 .dbline -2
0156 L33:
0156 0E940000 xcall pop_gset2
015A .dbline 0 ; func end
015A 0895 ret
015C .dbsym l year 12 c
015C .dbsym l d 10 c
015C .dbsym l month 8 c
015C .dbsym l day 6 c
015C .dbsym l hour 4 c
015C .dbsym r min 20 c
015C .dbsym r sec 22 c
015C .dbend
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -