⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rtc.lis

📁 AVRkaifashili.rar
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 00AA                   .dbend
 00AA                   .dbfunc e Ack _Ack fV
                        .even
 00AA           _Ack::
 00AA                   .dbline -1
 00AA                   .dbline 69
 00AA           ; 
 00AA           ; void Ack()                             //单片机应答信号
 00AA           ; {SetSDA(0);
 00AA                   .dbline 69
 00AA 0027              clr R16
 00AC DEDF              rcall _SetSDA
 00AE                   .dbline 70
 00AE           ;  SetSCL(1);   
 00AE 01E0              ldi R16,1
 00B0 D4DF              rcall _SetSCL
 00B2                   .dbline 71
 00B2           ;  NOPNOP(50);
 00B2 02E3              ldi R16,50
 00B4 CCDF              rcall _NOPNOP
 00B6                   .dbline 72
 00B6           ;  SetSCL(0);
 00B6 0027              clr R16
 00B8 D0DF              rcall _SetSCL
 00BA                   .dbline 73
 00BA           ;  SetSDA(1);     
 00BA 01E0              ldi R16,1
 00BC                   .dbline -2
 00BC                   .dbline 74
 00BC           ; }
 00BC           L28:
 00BC                   .dbline 0 ; func end
 00BC D6CF              rjmp _SetSDA
 00BE                   .dbend
 00BE                   .dbfunc e Nack _Nack fV
                        .even
 00BE           _Nack::
 00BE                   .dbline -1
 00BE                   .dbline 77
 00BE           ; 
 00BE           ; void Nack()                            //单片机非应答信号
 00BE           ; {SetSDA(1);
 00BE                   .dbline 77
 00BE 01E0              ldi R16,1
 00C0 D4DF              rcall _SetSDA
 00C2                   .dbline 78
 00C2           ;  SetSCL(1);
 00C2 01E0              ldi R16,1
 00C4 CADF              rcall _SetSCL
 00C6                   .dbline 79
 00C6           ;  NOPNOP(50);
 00C6 02E3              ldi R16,50
 00C8 C2DF              rcall _NOPNOP
 00CA                   .dbline 80
 00CA           ;  SetSCL(0);
 00CA 0027              clr R16
 00CC C6DF              rcall _SetSCL
 00CE                   .dbline 81
 00CE           ;  SetSDA(0);
 00CE 0027              clr R16
 00D0                   .dbline -2
 00D0                   .dbline 82
 00D0           ; }
 00D0           L29:
 00D0                   .dbline 0 ; func end
 00D0 CCCF              rjmp _SetSDA
 00D2                   .dbend
 00D2                   .dbfunc e Check_Ack _Check_Ack fV
                        .even
 00D2           _Check_Ack::
 00D2                   .dbline -1
 00D2                   .dbline 85
 00D2           ; 
 00D2           ; void Check_Ack()                       //器件应答信号检查
 00D2           ; {SetSDA(1);
 00D2                   .dbline 85
 00D2 01E0              ldi R16,1
 00D4 CADF              rcall _SetSDA
 00D6                   .dbline 86
 00D6           ;  SetSCL(1);
 00D6 01E0              ldi R16,1
 00D8 C0DF              rcall _SetSCL
 00DA                   .dbline 87
 00DA           ;  F_Flag=0;
 00DA 2224              clr R2
 00DC 20920000          sts _F_Flag,R2
 00E0                   .dbline 88
 00E0           ;  DDRB=DDRB&0xFD; 
 00E0 87B3              in R24,0x17
 00E2 8D7F              andi R24,253
 00E4 87BB              out 0x17,R24
 00E6                   .dbline 89
 00E6           ;  if((PINB&0x02)==0)
 00E6 B199              sbic 0x16,1
 00E8 05C0              rjmp L31
 00EA                   .dbline 90
 00EA           ;    {SetSCL(0);
 00EA                   .dbline 90
 00EA 0027              clr R16
 00EC B6DF              rcall _SetSCL
 00EE                   .dbline 91
 00EE           ;     NOPNOP(50);}
 00EE 02E3              ldi R16,50
 00F0 AEDF              rcall _NOPNOP
 00F2                   .dbline 91
 00F2 07C0              rjmp L32
 00F4           L31:
 00F4                   .dbline 93
 00F4           ;  else
 00F4           ;     {F_Flag=1;
 00F4                   .dbline 93
 00F4 81E0              ldi R24,1
 00F6 80930000          sts _F_Flag,R24
 00FA                   .dbline 94
 00FA           ;      SetSCL(0);
 00FA 0027              clr R16
 00FC AEDF              rcall _SetSCL
 00FE                   .dbline 95
 00FE           ;      NOPNOP(50);}
 00FE 02E3              ldi R16,50
 0100 A6DF              rcall _NOPNOP
 0102                   .dbline 95
 0102           L32:
 0102                   .dbline 96
 0102           ; DDRB=DDRB|0x02;
 0102 B99A              sbi 0x17,1
 0104                   .dbline -2
 0104                   .dbline 97
 0104           ; }
 0104           L30:
 0104                   .dbline 0 ; func end
 0104 0895              ret
 0106                   .dbend
 0106                   .dbfunc e Write_Bit0 _Write_Bit0 fV
                        .even
 0106           _Write_Bit0::
 0106                   .dbline -1
 0106                   .dbline 100
 0106           ; 
 0106           ; void Write_Bit0()                      //向IIC总线写0
 0106           ; {SetSDA(0);
 0106                   .dbline 100
 0106 0027              clr R16
 0108 B0DF              rcall _SetSDA
 010A                   .dbline 101
 010A           ;  SetSCL(1);
 010A 01E0              ldi R16,1
 010C A6DF              rcall _SetSCL
 010E                   .dbline 102
 010E           ;  NOPNOP(50);
 010E 02E3              ldi R16,50
 0110 9EDF              rcall _NOPNOP
 0112                   .dbline 103
 0112           ;  SetSCL(0);
 0112 0027              clr R16
 0114                   .dbline -2
 0114                   .dbline 104
 0114           ; }
 0114           L33:
 0114                   .dbline 0 ; func end
 0114 A2CF              rjmp _SetSCL
 0116                   .dbend
 0116                   .dbfunc e Write_Bit1 _Write_Bit1 fV
                        .even
 0116           _Write_Bit1::
 0116                   .dbline -1
 0116                   .dbline 107
 0116           ; 
 0116           ; void Write_Bit1()                      //向IIC总线写1
 0116           ; {SetSDA(1);
 0116                   .dbline 107
 0116 01E0              ldi R16,1
 0118 A8DF              rcall _SetSDA
 011A                   .dbline 108
 011A           ;  SetSCL(1);
 011A 01E0              ldi R16,1
 011C 9EDF              rcall _SetSCL
 011E                   .dbline 109
 011E           ;  NOPNOP(50);
 011E 02E3              ldi R16,50
 0120 96DF              rcall _NOPNOP
 0122                   .dbline 110
 0122           ;  SetSCL(0);
 0122 0027              clr R16
 0124 9ADF              rcall _SetSCL
 0126                   .dbline 111
 0126           ;  SetSDA(0);
 0126 0027              clr R16
 0128                   .dbline -2
 0128                   .dbline 112
 0128           ; }
 0128           L34:
 0128                   .dbline 0 ; func end
 0128 A0CF              rjmp _SetSDA
 012A                   .dbend
 012A                   .dbfunc e Write_Byte _Write_Byte fV
 012A           ;              i -> R20
 012A           ;           Data -> R22
                        .even
 012A           _Write_Byte::
 012A 00D0              rcall push_gset2
 012C 602F              mov R22,R16
 012E                   .dbline -1
 012E                   .dbline 115
 012E           ; 
 012E           ; void Write_Byte(uchar Data)            //向IIC总线写一字节数据
 012E           ; {uchar i;
 012E                   .dbline 116
 012E           ;  for(i=0;i<8;i++)
 012E 4427              clr R20
 0130 0AC0              rjmp L39
 0132           L36:
 0132                   .dbline 117
 0132           ;    {if((Data&0x80)>0)       
 0132                   .dbline 117
 0132 2224              clr R2
 0134 862F              mov R24,R22
 0136 8078              andi R24,128
 0138 2816              cp R2,R24
 013A 10F4              brsh L40
 013C                   .dbline 118
 013C           ;          Write_Bit1();
 013C ECDF              rcall _Write_Bit1
 013E 01C0              rjmp L41
 0140           L40:
 0140                   .dbline 120
 0140           ;     else
 0140           ;          Write_Bit0();
 0140 E2DF              rcall _Write_Bit0
 0142           L41:
 0142                   .dbline 121
 0142 660F              lsl R22
 0144                   .dbline 122
 0144           L37:
 0144                   .dbline 116
 0144 4395              inc R20
 0146           L39:
 0146                   .dbline 116
 0146 4830              cpi R20,8
 0148 A0F3              brlo L36
 014A                   .dbline -2
 014A                   .dbline 123
 014A           ;     Data<<=1;                        
 014A           ;     }
 014A           ; }
 014A           L35:
 014A 00D0              rcall pop_gset2
 014C                   .dbline 0 ; func end
 014C 0895              ret
 014E                   .dbsym r i 20 c
 014E                   .dbsym r Data 22 c
 014E                   .dbend
 014E                   .dbfunc e Read_Byte _Read_Byte fc
 014E           ;              j -> R20
 014E           ;             nn -> R22
                        .even
 014E           _Read_Byte::
 014E 00D0              rcall push_gset2
 0150                   .dbline -1
 0150                   .dbline 127
 0150           ; 
 0150           ; 
 0150           ; uchar Read_Byte()                      //从IIC总线读一字节数据
 0150           ; {uchar nn=0xff;             
 0150                   .dbline 127
 0150 6FEF              ldi R22,255
 0152                   .dbline 129
 0152           ;  uchar j;
 0152           ;  for (j=0;j<8;j++)
 0152 4427              clr R20
 0154 13C0              rjmp L46
 0156           L43:
 0156                   .dbline 130
 0156           ;     {SetSDA(1);
 0156                   .dbline 130
 0156 01E0              ldi R16,1
 0158 88DF              rcall _SetSDA
 015A                   .dbline 131
 015A           ;      SetSCL(1);
 015A 01E0              ldi R16,1
 015C 7EDF              rcall _SetSCL
 015E                   .dbline 132
 015E           ;      DDRB=DDRB&0xFB;
 015E 87B3              in R24,0x17
 0160 8B7F              andi R24,251
 0162 87BB              out 0x17,R24
 0164                   .dbline 134
 0164           ;       
 0164           ;        if((PINB&0x02)==0)
 0164 B199              sbic 0x16,1
 0166 05C0              rjmp L47
 0168                   .dbline 135
 0168           ;           {nn<<=1;
 0168                   .dbline 135
 0168 660F              lsl R22
 016A                   .dbline 136
 016A           ;          nn=(nn&0xfe);                 
 016A 6E7F              andi R22,254
 016C                   .dbline 137
 016C           ;          SetSCL(0);}
 016C 0027              clr R16
 016E 75DF              rcall _SetSCL
 0170                   .dbline 137
 0170 04C0              rjmp L48
 0172           L47:
 0172                   .dbline 139
 0172           ;      else 
 0172           ;         {nn<<=1;
 0172                   .dbline 139
 0172 660F              lsl R22
 0174                   .dbline 140
 0174           ;          nn=(nn|0x01);                 
 0174 6160              ori R22,1
 0176                   .dbline 141
 0176           ;          SetSCL(0);}
 0176 0027              clr R16
 0178 70DF              rcall _SetSCL
 017A                   .dbline 141
 017A           L48:
 017A                   .dbline 142
 017A           L44:
 017A                   .dbline 129
 017A 4395              inc R20
 017C           L46:
 017C                   .dbline 129
 017C 4830              cpi R20,8
 017E 58F3              brlo L43
 0180                   .dbline 143
 0180           ;     }
 0180           ;   DDRB=DDRB|0x02;
 0180 B99A              sbi 0x17,1
 0182                   .dbline 144
 0182           ;  return(nn);              
 0182 062F              mov R16,R22
 0184                   .dbline -2
 0184           L42:
 0184 00D0              rcall pop_gset2
 0186                   .dbline 0 ; func end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -