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

📄 rtc.lis

📁 AVRkaifashili.rar
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 00B8                   .dbline 75
 00B8           ; }
 00B8           L27:
 00B8                   .dbline 0 ; func end
 00B8 D8CF              rjmp _SetSCL
 00BA                   .dbend
 00BA                   .dbfunc e Ack _Ack fV
                        .even
 00BA           _Ack::
 00BA                   .dbline -1
 00BA                   .dbline 78
 00BA           ; 
 00BA           ; void Ack()          //IIC总线应答
 00BA           ; {SetSDA(0);//SDA=0;             //应答方式:读完一个字节后将SDA线拉低,即应答0
 00BA                   .dbline 78
 00BA 0027              clr R16
 00BC DEDF              rcall _SetSDA
 00BE                   .dbline 79
 00BE           ;  SetSCL(1);//SCL=1;             
 00BE 01E0              ldi R16,1
 00C0 D4DF              rcall _SetSCL
 00C2                   .dbline 80
 00C2           ;  NOPNOP(50);
 00C2 02E3              ldi R16,50
 00C4 CCDF              rcall _NOPNOP
 00C6                   .dbline 85
 00C6           ;  //_nop_();
 00C6           ;  //_nop_();
 00C6           ;  //_nop_();
 00C6           ;  //_nop_();
 00C6           ;  SetSCL(0);//SCL=0;
 00C6 0027              clr R16
 00C8 D0DF              rcall _SetSCL
 00CA                   .dbline 86
 00CA           ;  SetSDA(1);//SDA=1;            
 00CA 01E0              ldi R16,1
 00CC                   .dbline -2
 00CC                   .dbline 87
 00CC           ; }
 00CC           L28:
 00CC                   .dbline 0 ; func end
 00CC D6CF              rjmp _SetSDA
 00CE                   .dbend
 00CE                   .dbfunc e Nack _Nack fV
                        .even
 00CE           _Nack::
 00CE                   .dbline -1
 00CE                   .dbline 90
 00CE           ; 
 00CE           ; void Nack()        //IIC总线应答
 00CE           ; {SetSDA(1);//SDA=1;            //应答方式:读完所要求的字节数据后将SDA线拉高,即
 00CE                   .dbline 90
 00CE 01E0              ldi R16,1
 00D0 D4DF              rcall _SetSDA
 00D2                   .dbline 91
 00D2           ;  SetSCL(1);//SCL=1;            //应答1,为结束IIC总线操作做准备
 00D2 01E0              ldi R16,1
 00D4 CADF              rcall _SetSCL
 00D6                   .dbline 92
 00D6           ;  NOPNOP(50);
 00D6 02E3              ldi R16,50
 00D8 C2DF              rcall _NOPNOP
 00DA                   .dbline 97
 00DA           ;  //_nop_();
 00DA           ;  //_nop_();
 00DA           ;  //_nop_();
 00DA           ;  //_nop_();
 00DA           ;  SetSCL(0);//SCL=0;
 00DA 0027              clr R16
 00DC C6DF              rcall _SetSCL
 00DE                   .dbline 98
 00DE           ;  SetSDA(0);//SDA=0;
 00DE 0027              clr R16
 00E0                   .dbline -2
 00E0                   .dbline 99
 00E0           ; }
 00E0           L29:
 00E0                   .dbline 0 ; func end
 00E0 CCCF              rjmp _SetSDA
 00E2                   .dbend
 00E2                   .dbfunc e Check_Ack _Check_Ack fV
                        .even
 00E2           _Check_Ack::
 00E2                   .dbline -1
 00E2                   .dbline 102
 00E2           ; 
 00E2           ; void Check_Ack()   //检查IIC器件应答情况
 00E2           ; {SetSDA(1);//SDA=1;
 00E2                   .dbline 102
 00E2 01E0              ldi R16,1
 00E4 CADF              rcall _SetSDA
 00E6                   .dbline 103
 00E6           ;  SetSCL(1);//SCL=1;
 00E6 01E0              ldi R16,1
 00E8 C0DF              rcall _SetSCL
 00EA                   .dbline 104
 00EA           ;  F_Flag=0;//F0=0;
 00EA 2224              clr R2
 00EC 20920000          sts _F_Flag,R2
 00F0                   .dbline 105
 00F0           ;  DDRC=DDRC&0xfd; //设置SDA为输入
 00F0 84B3              in R24,0x14
 00F2 8D7F              andi R24,253
 00F4 84BB              out 0x14,R24
 00F6                   .dbline 107
 00F6           ;  //if(SDA==0)
 00F6           ;  if((PINC&0x02)==0)
 00F6 9999              sbic 0x13,1
 00F8 05C0              rjmp L31
 00FA                   .dbline 108
 00FA           ;    {
 00FA                   .dbline 109
 00FA           ;         SetSCL(0);//SCL=0;
 00FA 0027              clr R16
 00FC B6DF              rcall _SetSCL
 00FE                   .dbline 110
 00FE           ;         NOPNOP(50);
 00FE 02E3              ldi R16,50
 0100 AEDF              rcall _NOPNOP
 0102                   .dbline 115
 0102           ;               //_nop_();
 0102           ;         //_nop_();
 0102           ;         //_nop_();
 0102           ;         //_nop_();
 0102           ;     }
 0102 07C0              rjmp L32
 0104           L31:
 0104                   .dbline 117
 0104           ;  else
 0104           ;     {
 0104                   .dbline 118
 0104           ;          F_Flag=1;//F0=1;
 0104 81E0              ldi R24,1
 0106 80930000          sts _F_Flag,R24
 010A                   .dbline 119
 010A           ;          SetSCL(0);//SCL=0;
 010A 0027              clr R16
 010C AEDF              rcall _SetSCL
 010E                   .dbline 120
 010E           ;          NOPNOP(50);
 010E 02E3              ldi R16,50
 0110 A6DF              rcall _NOPNOP
 0112                   .dbline 125
 0112           ;                //_nop_();
 0112           ;          //_nop_();
 0112           ;          //_nop_();
 0112           ;          //_nop_();
 0112           ;      }
 0112           L32:
 0112                   .dbline 126
 0112           ; DDRC=DDRC|0x02; //重新设置SDA为输出    
 0112 A19A              sbi 0x14,1
 0114                   .dbline -2
 0114                   .dbline 127
 0114           ; }
 0114           L30:
 0114                   .dbline 0 ; func end
 0114 0895              ret
 0116                   .dbend
 0116                   .dbfunc e Write_Bit0 _Write_Bit0 fV
                        .even
 0116           _Write_Bit0::
 0116                   .dbline -1
 0116                   .dbline 130
 0116           ; 
 0116           ; void Write_Bit0()     //写1bit数据:0
 0116           ; {SetSDA(0);//SDA=0;
 0116                   .dbline 130
 0116 0027              clr R16
 0118 B0DF              rcall _SetSDA
 011A                   .dbline 131
 011A           ;  SetSCL(1);//SCL=1;
 011A 01E0              ldi R16,1
 011C A6DF              rcall _SetSCL
 011E                   .dbline 132
 011E           ;  NOPNOP(50);
 011E 02E3              ldi R16,50
 0120 9EDF              rcall _NOPNOP
 0122                   .dbline 137
 0122           ;  //_nop_(); 
 0122           ;  //_nop_(); 
 0122           ;  //_nop_(); 
 0122           ;  //_nop_();
 0122           ;  SetSCL(0);//SCL=0;
 0122 0027              clr R16
 0124                   .dbline -2
 0124                   .dbline 138
 0124           ; }
 0124           L33:
 0124                   .dbline 0 ; func end
 0124 A2CF              rjmp _SetSCL
 0126                   .dbend
 0126                   .dbfunc e Write_Bit1 _Write_Bit1 fV
                        .even
 0126           _Write_Bit1::
 0126                   .dbline -1
 0126                   .dbline 141
 0126           ; 
 0126           ; void Write_Bit1()     //写1bit数据:1  
 0126           ; {SetSDA(1);//SDA=1;
 0126                   .dbline 141
 0126 01E0              ldi R16,1
 0128 A8DF              rcall _SetSDA
 012A                   .dbline 142
 012A           ;  SetSCL(1);//SCL=1;
 012A 01E0              ldi R16,1
 012C 9EDF              rcall _SetSCL
 012E                   .dbline 143
 012E           ;  NOPNOP(50);
 012E 02E3              ldi R16,50
 0130 96DF              rcall _NOPNOP
 0132                   .dbline 148
 0132           ;  //_nop_(); 
 0132           ;  //_nop_(); 
 0132           ;  //_nop_(); 
 0132           ;  //_nop_(); 
 0132           ;  SetSCL(0);//SCL=0;
 0132 0027              clr R16
 0134 9ADF              rcall _SetSCL
 0136                   .dbline 149
 0136           ;  SetSDA(0);//SDA=0;
 0136 0027              clr R16
 0138                   .dbline -2
 0138                   .dbline 150
 0138           ; }
 0138           L34:
 0138                   .dbline 0 ; func end
 0138 A0CF              rjmp _SetSDA
 013A                   .dbend
 013A                   .dbfunc e Write_Byte _Write_Byte fV
 013A           ;              i -> R20
 013A           ;           Data -> R22
                        .even
 013A           _Write_Byte::
 013A 00D0              rcall push_gset2
 013C 602F              mov R22,R16
 013E                   .dbline -1
 013E                   .dbline 153
 013E           ; 
 013E           ; void Write_Byte(uchar Data)  //写一字节数据:Data:要写入的数据
 013E           ; {uchar i;
 013E                   .dbline 154
 013E           ;  for(i=0;i<8;i++)
 013E 4427              clr R20
 0140 0AC0              rjmp L39
 0142           L36:
 0142                   .dbline 155
 0142           ;    {if((Data&0x80)>0)        //传输位从高位到低位,先传最高位 
 0142                   .dbline 155
 0142 2224              clr R2
 0144 862F              mov R24,R22
 0146 8078              andi R24,128
 0148 2816              cp R2,R24
 014A 10F4              brsh L40
 014C                   .dbline 156
 014C           ;          Write_Bit1();
 014C ECDF              rcall _Write_Bit1
 014E 01C0              rjmp L41
 0150           L40:
 0150                   .dbline 158
 0150           ;     else
 0150           ;          Write_Bit0();
 0150 E2DF              rcall _Write_Bit0
 0152           L41:
 0152                   .dbline 159
 0152 660F              lsl R22
 0154                   .dbline 160
 0154           L37:
 0154                   .dbline 154
 0154 4395              inc R20
 0156           L39:
 0156                   .dbline 154
 0156 4830              cpi R20,8
 0158 A0F3              brlo L36
 015A                   .dbline -2
 015A                   .dbline 161
 015A           ;     Data<<=1;                //数据左移             
 015A           ;     }
 015A           ; }
 015A           L35:
 015A 00D0              rcall pop_gset2
 015C                   .dbline 0 ; func end
 015C 0895              ret
 015E                   .dbsym r i 20 c
 015E                   .dbsym r Data 22 c
 015E                   .dbend
 015E                   .dbfunc e Read_Byte _Read_Byte fc
 015E           ;              j -> R20
 015E           ;             nn -> R22
                        .even
 015E           _Read_Byte::
 015E 00D0              rcall push_gset2
 0160                   .dbline -1
 0160                   .dbline 165
 0160           ; 
 0160           ; 
 0160           ; uchar Read_Byte()            //读一字节数据:返回值即读的数据
 0160           ; {uchar nn=0xff;              //nn:初始化为0xff,读入的数据也放在此
 0160                   .dbline 165
 0160 6FEF              ldi R22,255
 0162                   .dbline 167
 0162           ;  uchar j;
 0162           ;  for (j=0;j<8;j++)
 0162 4427              clr R20
 0164 13C0              rjmp L46
 0166           L43:
 0166                   .dbline 168
 0166           ;     {SetSDA(1);//SDA=1;
 0166                   .dbline 168
 0166 01E0              ldi R16,1
 0168 88DF              rcall _SetSDA
 016A                   .dbline 169
 016A           ;      SetSCL(1);//SCL=1;
 016A 01E0              ldi R16,1
 016C 7EDF              rcall _SetSCL
 016E                   .dbline 170
 016E           ;      DDRC=DDRC&0xfd;//设置SDA为输入线
 016E 84B3              in R24,0x14
 0170 8D7F              andi R24,253
 0172 84BB              out 0x14,R24
 0174                   .dbline 172
 0174           ;        //if(SDA==0)              //数据读出,若是0则移位;若是1则与0x01或
 0174           ;        if((PINC&0x02)==0)
 0174 9999              sbic 0x13,1
 0176 05C0              rjmp L47
 0178                   .dbline 173
 0178           ;           {nn<<=1;
 0178                   .dbline 173
 0178 660F              lsl R22
 017A                   .dbline 174
 017A           ;          nn=(nn&0xfe);                 
 017A 6E7F              andi R22,254
 017C                   .dbline 175
 017C           ;          SetSCL(0);}//SCL=0;}
 017C 0027              clr R16
 017E 75DF              rcall _SetSCL

⌨️ 快捷键说明

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