📄 measure.lis
字号:
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 + -