📄 owiswbitfunctions.lst
字号:
\ 00000014 2343 AND R20,R19
\ 00000016 BB42 OUT 0x12,R20
124 __delay_cycles(OWI_DELAY_A_STD_MODE);
\ 00000018 E03B LDI R19,11
\ 0000001A 953A DEC R19
\ 0000001C F7F1 BRNE $-2
\ 0000001E C000 RJMP $+2
125
126 // Release bus and delay.
127 OWI_RELEASE_BUS(pins);
\ 00000020 2F31 MOV R19,R17
\ 00000022 9530 COM R19
\ 00000024 B341 IN R20,0x11
\ 00000026 2343 AND R20,R19
\ 00000028 BB41 OUT 0x11,R20
\ 0000002A B332 IN R19,0x12
\ 0000002C 2B31 OR R19,R17
\ 0000002E BB32 OUT 0x12,R19
128 __delay_cycles(OWI_DELAY_E_STD_MODE);
\ 00000030 E133 LDI R19,19
\ 00000032 953A DEC R19
\ 00000034 F7F1 BRNE $-2
\ 00000036 C000 RJMP $+2
129
130 // Sample bus and delay.
131 bitsRead = OWI_PIN & pins;
\ 00000038 B330 IN R19,0x10
\ 0000003A 2331 AND R19,R17
\ 0000003C 2F03 MOV R16,R19
132 __delay_cycles(OWI_DELAY_F_STD_MODE);
\ 0000003E E83E LDI R19,142
\ 00000040 953A DEC R19
\ 00000042 F7F1 BRNE $-2
\ 00000044 0000 NOP
133
134 // Restore interrupts.
135 __restore_interrupt(intState);
\ 00000046 BF2F OUT 0x3F,R18
136
137 return bitsRead;
\ 00000048 9508 RET
138 }
139
140
141 /*! \brief Send a Reset signal and listen for Presence signal. (software
142 * only driver)
143 *
144 * Generates the waveform for transmission of a Reset pulse on the
145 * 1-Wire(R) bus and listens for presence signals.
146 *
147 * \param pins A bitmask of the buses to send the Reset signal to.
148 *
149 * \return A bitmask of the buses where a presence signal was detected.
150 */
\ In segment CODE, align 2, keep-with-next
151 unsigned char OWI_DetectPresence(unsigned char pins)
\ OWI_DetectPresence:
152 {
\ 00000000 2F10 MOV R17,R16
153 unsigned char intState;
154 unsigned char presenceDetected;
155
156 // Disable interrupts.
157 intState = __save_interrupt();
\ 00000002 B73F IN R19,0x3F
\ 00000004 2F23 MOV R18,R19
158 __disable_interrupt();
\ 00000006 94F8 CLI
159
160 // Drive bus low and delay.
161 OWI_PULL_BUS_LOW(pins);
\ 00000008 B331 IN R19,0x11
\ 0000000A 2B31 OR R19,R17
\ 0000000C BB31 OUT 0x11,R19
\ 0000000E 2F31 MOV R19,R17
\ 00000010 9530 COM R19
\ 00000012 B342 IN R20,0x12
\ 00000014 2343 AND R20,R19
\ 00000016 BB42 OUT 0x12,R20
162 __delay_cycles(OWI_DELAY_H_STD_MODE);
\ 00000018 EB4C LDI R20,188
\ 0000001A E053 LDI R21,3
\ 0000001C 5041 SUBI R20,1
\ 0000001E 4050 SBCI R21,0
\ 00000020 F7E9 BRNE $-4
\ 00000022 C000 RJMP $+2
163
164 // Release bus and delay.
165 OWI_RELEASE_BUS(pins);
\ 00000024 2F31 MOV R19,R17
\ 00000026 9530 COM R19
\ 00000028 B341 IN R20,0x11
\ 0000002A 2343 AND R20,R19
\ 0000002C BB41 OUT 0x11,R20
\ 0000002E B332 IN R19,0x12
\ 00000030 2B31 OR R19,R17
\ 00000032 BB32 OUT 0x12,R19
166 __delay_cycles(OWI_DELAY_I_STD_MODE);
\ 00000034 EB36 LDI R19,182
\ 00000036 953A DEC R19
\ 00000038 F7F1 BRNE $-2
\ 0000003A 0000 NOP
167
168 // Sample bus to detect presence signal and delay.
169 presenceDetected = ((~OWI_PIN) & pins);
\ 0000003C B330 IN R19,0x10
\ 0000003E 9530 COM R19
\ 00000040 2331 AND R19,R17
\ 00000042 2F03 MOV R16,R19
170 __delay_cycles(OWI_DELAY_J_STD_MODE);
\ 00000044 E340 LDI R20,48
\ 00000046 E053 LDI R21,3
\ 00000048 5041 SUBI R20,1
\ 0000004A 4050 SBCI R21,0
\ 0000004C F7E9 BRNE $-4
\ 0000004E C000 RJMP $+2
171
172 // Restore interrupts.
173 __restore_interrupt(intState);
\ 00000050 BF2F OUT 0x3F,R18
174
175 return presenceDetected;
\ 00000052 9508 RET
176 }
\ In segment ABSOLUTE, at 0x3e, root
\ union <unnamed> volatile __io _A_EEAR
\ _A_EEAR:
\ 00000000 DS 2
\ In segment ABSOLUTE, at 0x40, root
\ union <unnamed> volatile __io _A_UBRRH
\ _A_UBRRH:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x41, root
\ union <unnamed> volatile __io _A_WDTCR
\ _A_WDTCR:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x42, root
\ union <unnamed> volatile __io _A_ASSR
\ _A_ASSR:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x43, root
\ union <unnamed> volatile __io _A_OCR2
\ _A_OCR2:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x44, root
\ union <unnamed> volatile __io _A_TCNT2
\ _A_TCNT2:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x45, root
\ union <unnamed> volatile __io _A_TCCR2
\ _A_TCCR2:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x46, root
\ union <unnamed> volatile __io _A_ICR1
\ _A_ICR1:
\ 00000000 DS 2
\ In segment ABSOLUTE, at 0x48, root
\ union <unnamed> volatile __io _A_OCR1B
\ _A_OCR1B:
\ 00000000 DS 2
\ In segment ABSOLUTE, at 0x4a, root
\ union <unnamed> volatile __io _A_OCR1A
\ _A_OCR1A:
\ 00000000 DS 2
\ In segment ABSOLUTE, at 0x4c, root
\ union <unnamed> volatile __io _A_TCNT1
\ _A_TCNT1:
\ 00000000 DS 2
\ In segment ABSOLUTE, at 0x4e, root
\ union <unnamed> volatile __io _A_TCCR1B
\ _A_TCCR1B:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x4f, root
\ union <unnamed> volatile __io _A_TCCR1A
\ _A_TCCR1A:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x50, root
\ union <unnamed> volatile __io _A_SFIOR
\ _A_SFIOR:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x51, root
\ union <unnamed> volatile __io _A_OSCCAL
\ _A_OSCCAL:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x52, root
\ union <unnamed> volatile __io _A_TCNT0
\ _A_TCNT0:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x53, root
\ union <unnamed> volatile __io _A_TCCR0
\ _A_TCCR0:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x54, root
\ union <unnamed> volatile __io _A_MCUCSR
\ _A_MCUCSR:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x55, root
\ union <unnamed> volatile __io _A_MCUCR
\ _A_MCUCR:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x56, root
\ union <unnamed> volatile __io _A_TWCR
\ _A_TWCR:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x57, root
\ union <unnamed> volatile __io _A_SPMCR
\ _A_SPMCR:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x58, root
\ union <unnamed> volatile __io _A_TIFR
\ _A_TIFR:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x59, root
\ union <unnamed> volatile __io _A_TIMSK
\ _A_TIMSK:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x5a, root
\ union <unnamed> volatile __io _A_GIFR
\ _A_GIFR:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x5b, root
\ union <unnamed> volatile __io _A_GICR
\ _A_GICR:
\ 00000000 DS 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -