📄 1302模块.lis
字号:
006C 1127 clr R17
006E 00D0 rcall _Read
0070 A801 movw R20,R16
0072 .dbline 76
0072 ; Clr_ds1302_rst;//ds1302_rst = 0;
0072 AB98 cbi 0x15,3
0074 .dbline 77
0074 ; Set_ds1302_clk;//ds1302_clk = 1;
0074 A99A sbi 0x15,1
0076 .dbline 78
0076 ; return read_data;
0076 85B3 in R24,0x15
0078 8B7F andi R24,251
007A 85BB out 0x15,R24
007C 082F mov R16,R24
007E 1127 clr R17
0080 .dbline -2
0080 L11:
0080 00D0 rcall pop_gset1
0082 .dbline 0 ; func end
0082 0895 ret
0084 .dbsym r redata 20 i
0084 .dbsym r address 20 c
0084 .dbend
0084 .dbfunc e WriteRTC_Byte _WriteRTC_Byte fV
0084 ; number -> R20
0084 ; address -> R22
.even
0084 _WriteRTC_Byte::
0084 00D0 rcall push_gset2
0086 422F mov R20,R18
0088 602F mov R22,R16
008A .dbline -1
008A .dbline 82
008A ; }
008A ;
008A ; void WriteRTC_Byte(uchar address,uchar number)
008A ; {
008A .dbline 83
008A ; Clr_ds1302_clk;//ds1302_clk = 0;
008A A998 cbi 0x15,1
008C .dbline 84
008C ; Clr_ds1302_rst;// ds1302_rst = 0;
008C AB98 cbi 0x15,3
008E .dbline 85
008E ; Set_ds1302_rst;//ds1302_rst = 1;
008E AB9A sbi 0x15,3
0090 .dbline 86
0090 ; Write(address);
0090 062F mov R16,R22
0092 1127 clr R17
0094 00D0 rcall _Write
0096 .dbline 87
0096 ; Write(number);
0096 042F mov R16,R20
0098 1127 clr R17
009A 00D0 rcall _Write
009C .dbline 88
009C ; Clr_ds1302_rst;//ds1302_rst = 0;
009C AB98 cbi 0x15,3
009E .dbline 89
009E ; Set_ds1302_clk;//ds1302_clk = 1;
009E A99A sbi 0x15,1
00A0 .dbline -2
00A0 L12:
00A0 00D0 rcall pop_gset2
00A2 .dbline 0 ; func end
00A2 0895 ret
00A4 .dbsym r number 20 c
00A4 .dbsym r address 22 c
00A4 .dbend
00A4 .dbfunc e Write_bit _Write_bit fV
00A4 ; i -> R20
00A4 ; addr -> R16
.even
00A4 _Write_bit::
00A4 00D0 rcall push_gset1
00A6 .dbline -1
00A6 .dbline 97
00A6 ; }
00A6 ;
00A6 ;
00A6 ;
00A6 ;
00A6 ;
00A6 ; void Write_bit (uchar addr)
00A6 ; {
00A6 .dbline 98
00A6 ; uchar i=0;
00A6 4427 clr R20
00A8 .dbline 99
00A8 48E0 ldi R20,8
00AA 0BC0 rjmp L17
00AC L14:
00AC .dbline 99
00AC ; for(i=8;i>0;i--){
00AC .dbline 100
00AC ; if((addr&0x01)==0x01)
00AC 802F mov R24,R16
00AE 8170 andi R24,1
00B0 8130 cpi R24,1
00B2 11F4 brne L18
00B4 .dbline 101
00B4 ; Set_ds1302_data;//ds1302_dat = 1;
00B4 AA9A sbi 0x15,2
00B6 01C0 rjmp L19
00B8 L18:
00B8 .dbline 103
00B8 ; else
00B8 ; Clr_ds1302_data;//ds1302_dat = 0;
00B8 AA98 cbi 0x15,2
00BA L19:
00BA .dbline 104
00BA A99A sbi 0x15,1
00BC .dbline 105
00BC A998 cbi 0x15,1
00BE .dbline 106
00BE 0695 lsr R16
00C0 .dbline 107
00C0 L15:
00C0 .dbline 99
00C0 4A95 dec R20
00C2 L17:
00C2 .dbline 99
00C2 2224 clr R2
00C4 2416 cp R2,R20
00C6 90F3 brlo L14
00C8 .dbline -2
00C8 L13:
00C8 00D0 rcall pop_gset1
00CA .dbline 0 ; func end
00CA 0895 ret
00CC .dbsym r i 20 c
00CC .dbsym r addr 16 c
00CC .dbend
00CC .dbfunc e Read_bit _Read_bit fc
00CC ; data_r -> R20
00CC ; num -> R22
00CC ; i -> R10
00CC ; addr -> R20
.even
00CC _Read_bit::
00CC 00D0 rcall push_gset3
00CE 402F mov R20,R16
00D0 .dbline -1
00D0 .dbline 111
00D0 ; Set_ds1302_clk;//ds1302_clk=1;
00D0 ; Clr_ds1302_clk;//ds1302_clk=0;
00D0 ; addr>>=1;
00D0 ; }
00D0 ; }
00D0 ;
00D0 ; uchar Read_bit (uchar addr)
00D0 ; {
00D0 .dbline 112
00D0 ; uchar i=0,num;
00D0 AA24 clr R10
00D2 .dbline 113
00D2 ; uchar data_r=0;;
00D2 4427 clr R20
00D4 .dbline 113
00D4 .dbline 114
00D4 ; Delayus(2);
00D4 02E0 ldi R16,2
00D6 94DF rcall _Delayus
00D8 .dbline 116
00D8 88E0 ldi R24,8
00DA A82E mov R10,R24
00DC 0AC0 rjmp L24
00DE L21:
00DE .dbline 116
00DE ; //ds1302_dat = 1;
00DE ; for(i=8;i>0;i--){
00DE .dbline 117
00DE ; data_r>>=1;
00DE 4695 lsr R20
00E0 .dbline 118
00E0 ; read_data;
00E0 AA98 cbi 0x15,2
00E2 .dbline 119
00E2 ; num=PINC&0x04;
00E2 63B3 in R22,0x13
00E4 6470 andi R22,4
00E6 .dbline 120
00E6 ; if(num == 1)
00E6 6130 cpi R22,1
00E8 09F4 brne L25
00EA .dbline 121
00EA ; {
00EA .dbline 122
00EA ; data_r|=0x80;
00EA 4068 ori R20,128
00EC .dbline 123
00EC ; }
00EC L25:
00EC .dbline 124
00EC A99A sbi 0x15,1
00EE .dbline 125
00EE A998 cbi 0x15,1
00F0 .dbline 126
00F0 L22:
00F0 .dbline 116
00F0 AA94 dec R10
00F2 L24:
00F2 .dbline 116
00F2 2224 clr R2
00F4 2A14 cp R2,R10
00F6 98F3 brlo L21
00F8 .dbline 127
00F8 ; Set_ds1302_clk;//ds1302_clk = 1;
00F8 ; Clr_ds1302_clk;//ds1302_clk = 0;
00F8 ; }
00F8 ; return data_r;
00F8 042F mov R16,R20
00FA .dbline -2
00FA L20:
00FA 00D0 rcall pop_gset3
00FC .dbline 0 ; func end
00FC 0895 ret
00FE .dbsym r data_r 20 c
00FE .dbsym r num 22 c
00FE .dbsym r i 10 c
00FE .dbsym r addr 20 c
00FE .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -