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

📄 measure.lis

📁 ATmega128单片机对SHT7x温湿度传感器的驱动程序。编译环境:ICC AVR
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0134           ;     PORTF |=0x04;//SCK=1;                          //clk for SENSI-BUS
 0134 80916200          lds R24,98
 0138 8460              ori R24,4
 013A 80936200          sts 98,R24
 013E                   .dbline 109
 013E           ;     _NOP();_NOP();_NOP();        //pulswith approx. 5 us      
 013E 0000              nop
 0140                   .dbline 109
 0140 0000              nop
 0142                   .dbline 109
 0142 0000              nop
 0144                   .dbline 110
 0144           ;     PORTF &=0xfb;//SCK=0;
 0144 80916200          lds R24,98
 0148 8B7F              andi R24,251
 014A 80936200          sts 98,R24
 014E                   .dbline 112
 014E           ;     
 014E           ;   }
 014E                   .dbline 113
 014E           ;   i=0x08;
 014E 68E0              ldi R22,8
 0150                   .dbline 114
 0150           ;   { if (i & value) 
 0150                   .dbline 114
 0150 262E              mov R2,R22
 0152 2022              and R2,R16
 0154 31F0              breq L12
 0156           X4:
 0156                   .dbline 115
 0156           ;     PORTF |=0x02;//DATA=1;          //masking value with i , write to SENSI-BUS
 0156 80916200          lds R24,98
 015A 8260              ori R24,2
 015C 80936200          sts 98,R24
 0160 05C0              xjmp L13
 0162           L12:
 0162                   .dbline 116
 0162           ;     else PORTF &=0xfd;//DATA=0;
 0162 80916200          lds R24,98
 0166 8D7F              andi R24,253
 0168 80936200          sts 98,R24
 016C           L13:
 016C                   .dbline 117
 016C           ;     _NOP();_NOP();_NOP();                        
 016C 0000              nop
 016E                   .dbline 117
 016E 0000              nop
 0170                   .dbline 117
 0170 0000              nop
 0172                   .dbline 118
 0172           ;     PORTF |=0x04;//SCK=1;                          //clk for SENSI-BUS
 0172 80916200          lds R24,98
 0176 8460              ori R24,4
 0178 80936200          sts 98,R24
 017C                   .dbline 119
 017C           ;     _NOP();_NOP();_NOP();        //pulswith approx. 5 us      
 017C 0000              nop
 017E                   .dbline 119
 017E 0000              nop
 0180                   .dbline 119
 0180 0000              nop
 0182                   .dbline 120
 0182           ;     PORTF &=0xfb;//SCK=0;
 0182 80916200          lds R24,98
 0186 8B7F              andi R24,251
 0188 80936200          sts 98,R24
 018C                   .dbline 122
 018C           ;     
 018C           ;   }
 018C                   .dbline 123
 018C           ;   i=0x04;
 018C 64E0              ldi R22,4
 018E                   .dbline 124
 018E           ;   { if (i & value) 
 018E                   .dbline 124
 018E 262E              mov R2,R22
 0190 2022              and R2,R16
 0192 31F0              breq L14
 0194           X5:
 0194                   .dbline 125
 0194           ;     PORTF |=0x02;//DATA=1;          //masking value with i , write to SENSI-BUS
 0194 80916200          lds R24,98
 0198 8260              ori R24,2
 019A 80936200          sts 98,R24
 019E 05C0              xjmp L15
 01A0           L14:
 01A0                   .dbline 126
 01A0           ;     else PORTF &=0xfd;//DATA=0;
 01A0 80916200          lds R24,98
 01A4 8D7F              andi R24,253
 01A6 80936200          sts 98,R24
 01AA           L15:
 01AA                   .dbline 127
 01AA           ;     _NOP();_NOP();_NOP();                        
 01AA 0000              nop
 01AC                   .dbline 127
 01AC 0000              nop
 01AE                   .dbline 127
 01AE 0000              nop
 01B0                   .dbline 128
 01B0           ;     PORTF |=0x04;//SCK=1;                          //clk for SENSI-BUS
 01B0 80916200          lds R24,98
 01B4 8460              ori R24,4
 01B6 80936200          sts 98,R24
 01BA                   .dbline 129
 01BA           ;     _NOP();_NOP();_NOP();        //pulswith approx. 5 us      
 01BA 0000              nop
 01BC                   .dbline 129
 01BC 0000              nop
 01BE                   .dbline 129
 01BE 0000              nop
 01C0                   .dbline 130
 01C0           ;     PORTF &=0xfb;//SCK=0;
 01C0 80916200          lds R24,98
 01C4 8B7F              andi R24,251
 01C6 80936200          sts 98,R24
 01CA                   .dbline 132
 01CA           ;     
 01CA           ;   }
 01CA                   .dbline 133
 01CA           ;   i=0x02;
 01CA 62E0              ldi R22,2
 01CC                   .dbline 134
 01CC           ;   { if (i & value) 
 01CC                   .dbline 134
 01CC 262E              mov R2,R22
 01CE 2022              and R2,R16
 01D0 31F0              breq L16
 01D2           X6:
 01D2                   .dbline 135
 01D2           ;     PORTF |=0x02;//DATA=1;          //masking value with i , write to SENSI-BUS
 01D2 80916200          lds R24,98
 01D6 8260              ori R24,2
 01D8 80936200          sts 98,R24
 01DC 05C0              xjmp L17
 01DE           L16:
 01DE                   .dbline 136
 01DE           ;     else PORTF &=0xfd;//DATA=0;
 01DE 80916200          lds R24,98
 01E2 8D7F              andi R24,253
 01E4 80936200          sts 98,R24
 01E8           L17:
 01E8                   .dbline 137
 01E8           ;     _NOP();_NOP();_NOP();                        
 01E8 0000              nop
 01EA                   .dbline 137
 01EA 0000              nop
 01EC                   .dbline 137
 01EC 0000              nop
 01EE                   .dbline 138
 01EE           ;     PORTF |=0x04;//SCK=1;                          //clk for SENSI-BUS
 01EE 80916200          lds R24,98
 01F2 8460              ori R24,4
 01F4 80936200          sts 98,R24
 01F8                   .dbline 139
 01F8           ;     _NOP();_NOP();_NOP();        //pulswith approx. 5 us      
 01F8 0000              nop
 01FA                   .dbline 139
 01FA 0000              nop
 01FC                   .dbline 139
 01FC 0000              nop
 01FE                   .dbline 140
 01FE           ;     PORTF &=0xfb;//SCK=0;
 01FE 80916200          lds R24,98
 0202 8B7F              andi R24,251
 0204 80936200          sts 98,R24
 0208                   .dbline 142
 0208           ;     
 0208           ;   }
 0208                   .dbline 143
 0208           ;   i=0x01;
 0208 61E0              ldi R22,1
 020A                   .dbline 144
 020A           ;   { if (i & value) 
 020A                   .dbline 144
 020A 262E              mov R2,R22
 020C 2022              and R2,R16
 020E 31F0              breq L18
 0210           X7:
 0210                   .dbline 145
 0210           ;     PORTF |=0x02;//DATA=1;          //masking value with i , write to SENSI-BUS
 0210 80916200          lds R24,98
 0214 8260              ori R24,2
 0216 80936200          sts 98,R24
 021A 05C0              xjmp L19
 021C           L18:
 021C                   .dbline 146
 021C           ;     else PORTF &=0xfd;//DATA=0;                        
 021C 80916200          lds R24,98
 0220 8D7F              andi R24,253
 0222 80936200          sts 98,R24
 0226           L19:
 0226                   .dbline 147
 0226           ;     PORTF |=0x04;//SCK=1;                          //clk for SENSI-BUS
 0226 80916200          lds R24,98
 022A 8460              ori R24,4
 022C 80936200          sts 98,R24
 0230                   .dbline 148
 0230           ;     _NOP();_NOP();_NOP(); 
 0230 0000              nop
 0232                   .dbline 148
 0232 0000              nop
 0234                   .dbline 148
 0234 0000              nop
 0236                   .dbline 152
 0236           ;        //pulswith approx. 5 us        
 0236           ;     
 0236           ;     
 0236           ;   }
 0236                   .dbline 154
 0236           ;   
 0236           ;   PORTF |=0x02;//DATA=1;
 0236 80916200          lds R24,98
 023A 8260              ori R24,2
 023C 80936200          sts 98,R24
 0240                   .dbline 155
 0240           ;   DDRF &=0xfd;
 0240 80916100          lds R24,97
 0244 8D7F              andi R24,253
 0246 80936100          sts 97,R24
 024A                   .dbline 156
 024A           ;   _NOP();_NOP();_NOP();
 024A 0000              nop
 024C                   .dbline 156
 024C 0000              nop
 024E                   .dbline 156
 024E 0000              nop
 0250                   .dbline 157
 0250           ;   PORTF &=0xfb;//SCK=0;                           //release DATA-line
 0250 80916200          lds R24,98
 0254 8B7F              andi R24,251
 0256 80936200          sts 98,R24
 025A                   .dbline 159
 025A           ;    
 025A           ;   _NOP();_NOP();_NOP();                           //clk #9 for ack 
 025A 0000              nop
 025C                   .dbline 159
 025C 0000              nop
 025E                   .dbline 159
 025E 0000              nop
 0260                   .dbline 160
 0260           ;   merror=PINF&0x02;//error=DATA;
 0260 40B1              in R20,0x0
 0262 4270              andi R20,2
 0264                   .dbline 161
 0264           ;   error=merror;
 0264 A42E              mov R10,R20
 0266                   .dbline 162
 0266           ;   PORTF |=0x04;//SCK=1;  
 0266 80916200          lds R24,98
 026A 8460              ori R24,4
 026C 80936200          sts 98,R24
 0270                   .dbline 163
 0270           ;   _NOP();_NOP();_NOP();                     //check ack (DATA will be pulled down by SHT11)
 0270 0000              nop
 0272                   .dbline 163
 0272 0000              nop
 0274                   .dbline 163
 0274 0000              nop
 0276                   .dbline 164
 0276           ;   PORTF &=0xfb;//SCK=0; 
 0276 80916200          lds R24,98
 027A 8B7F              andi R24,251
 027C 80936200          sts 98,R24
 0280                   .dbline 165
 0280           ;   DATA_TO_1(); 
 0280 80916200          lds R24,98
 0284 8260              ori R24,2
 0286 80936200          sts 98,R24
 028A                   .dbline 166
 028A           ;   if(error >0)
 028A 80E0              ldi R24,0
 028C 8417              cp R24,R20
 028E 08F4              brsh L20
 0290           X8:
 0290                   .dbline 167
 0290           ;   PORTA |=0x04;     
 0290 DA9A              sbi 0x1b,2
 0292           L20:
 0292                   .dbline 168
 0292           ;   return error;                   //error=1 in case of no acknowledge
 0292 0A2D              mov R16,R10
 0294                   .dbline -2
 0294           L3:
 0294 0E940000          xcall pop_xgset5
 0298                   .dbline 0 ; func end
 0298 0895              ret
 029A                   .dbsym r merror 20 c
 029A                   .dbsym r error 10 c
 029A                   .dbsym r i 22 c
 029A                   .dbsym r value 16 c
 029A                   .dbend
 029A                   .dbfunc e s_read_byte _s_read_byte fc
 029A           ;            val -> R10
 029A           ;              i -> R20
 029A           ;            ack -> R16
                        .even
 029A           _s_read_byte::
 029A 0E940000          xcall push_xgsetx
 029E                   .dbline -1
 029E                   .dbline 173
 029E           ; }
 029E           ; char s_read_byte(unsigned char ack)
 029E           ; //----------------------------------------------------------------------------------
 029E           ; // reads a byte form the Sensibus and gives an acknowledge in case of "ack=1" 
 029E           ; { 
 029E                   .dbline 174
 029E           ;   unsigned char i,val=0;
 029E AA24              clr R10
 02A0                   .dbline 177
 02A0           ;   //DDRF |=0x04;
 02A0           ;   //DDRF &=0xfd;
 02A0           ;   PORTF |=0x02;//DATA=1;
 02A0 80916200          lds R24,98
 02A4 8260              ori R24,2
 02A6 80936200          sts 98,R24
 02AA                   .dbline 178
 02AA           ;   _NOP();_NOP();_NOP();
 02AA 0000              nop
 02AC                   .dbline 178
 02AC 0000              nop
 02AE                   .dbline 178
 02AE 0000              nop
 02B0                   .dbline 181
 02B0           ;                                //release DATA-line
 02B0           ;   //for (i=0x80;i>0;i/=2) 
 02B0           ;    i=0x80;            //shift bit for masking
 02B0 40E8              ldi R20,128
 02B2                   .dbline 182
 02B2           ;   { PORTF |=0x04;//SCK=1;
 02B2                   .dbline 182
 02B2 80916200          lds R24,98

⌨️ 快捷键说明

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