?? owiswbitfunctions.s90
字號:
OR R19,R17
OUT 0x12,R19
// 128 __delay_cycles(OWI_DELAY_E_STD_MODE);
LDI R19,19
DEC R19
BRNE $-2
RJMP $+2
// 129
// 130 // Sample bus and delay.
// 131 bitsRead = OWI_PIN & pins;
IN R19,0x10
AND R19,R17
MOV R16,R19
// 132 __delay_cycles(OWI_DELAY_F_STD_MODE);
LDI R19,142
DEC R19
BRNE $-2
NOP
// 133
// 134 // Restore interrupts.
// 135 __restore_interrupt(intState);
OUT 0x3F,R18
// 136
// 137 return bitsRead;
RET
CFI EndBlock cfiBlock3
// 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 */
RSEG CODE:CODE:NOROOT(1)
// 151 unsigned char OWI_DetectPresence(unsigned char pins)
OWI_DetectPresence:
CFI Block cfiBlock4 Using cfiCommon0
CFI Function OWI_DetectPresence
// 152 {
MOV R17,R16
// 153 unsigned char intState;
// 154 unsigned char presenceDetected;
// 155
// 156 // Disable interrupts.
// 157 intState = __save_interrupt();
IN R19,0x3F
MOV R18,R19
// 158 __disable_interrupt();
CLI
// 159
// 160 // Drive bus low and delay.
// 161 OWI_PULL_BUS_LOW(pins);
IN R19,0x11
OR R19,R17
OUT 0x11,R19
MOV R19,R17
COM R19
IN R20,0x12
AND R20,R19
OUT 0x12,R20
// 162 __delay_cycles(OWI_DELAY_H_STD_MODE);
LDI R20,188
LDI R21,3
SUBI R20,1
SBCI R21,0
BRNE $-4
RJMP $+2
// 163
// 164 // Release bus and delay.
// 165 OWI_RELEASE_BUS(pins);
MOV R19,R17
COM R19
IN R20,0x11
AND R20,R19
OUT 0x11,R20
IN R19,0x12
OR R19,R17
OUT 0x12,R19
// 166 __delay_cycles(OWI_DELAY_I_STD_MODE);
LDI R19,182
DEC R19
BRNE $-2
NOP
// 167
// 168 // Sample bus to detect presence signal and delay.
// 169 presenceDetected = ((~OWI_PIN) & pins);
IN R19,0x10
COM R19
AND R19,R17
MOV R16,R19
// 170 __delay_cycles(OWI_DELAY_J_STD_MODE);
LDI R20,48
LDI R21,3
SUBI R20,1
SBCI R21,0
BRNE $-4
RJMP $+2
// 171
// 172 // Restore interrupts.
// 173 __restore_interrupt(intState);
OUT 0x3F,R18
// 174
// 175 return presenceDetected;
RET
CFI EndBlock cfiBlock4
// 176 }
ASEGN ABSOLUTE:DATA:ROOT,03eH
// union <unnamed> volatile __io _A_EEAR
_A_EEAR:
DS 2
ASEGN ABSOLUTE:DATA:ROOT,040H
// union <unnamed> volatile __io _A_UBRRH
_A_UBRRH:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,041H
// union <unnamed> volatile __io _A_WDTCR
_A_WDTCR:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,042H
// union <unnamed> volatile __io _A_ASSR
_A_ASSR:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,043H
// union <unnamed> volatile __io _A_OCR2
_A_OCR2:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,044H
// union <unnamed> volatile __io _A_TCNT2
_A_TCNT2:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,045H
// union <unnamed> volatile __io _A_TCCR2
_A_TCCR2:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,046H
// union <unnamed> volatile __io _A_ICR1
_A_ICR1:
DS 2
ASEGN ABSOLUTE:DATA:ROOT,048H
// union <unnamed> volatile __io _A_OCR1B
_A_OCR1B:
DS 2
ASEGN ABSOLUTE:DATA:ROOT,04aH
// union <unnamed> volatile __io _A_OCR1A
_A_OCR1A:
DS 2
ASEGN ABSOLUTE:DATA:ROOT,04cH
// union <unnamed> volatile __io _A_TCNT1
_A_TCNT1:
DS 2
ASEGN ABSOLUTE:DATA:ROOT,04eH
// union <unnamed> volatile __io _A_TCCR1B
_A_TCCR1B:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,04fH
// union <unnamed> volatile __io _A_TCCR1A
_A_TCCR1A:
ASEGN ABSOLUTE:DATA:ROOT,050H
// union <unnamed> volatile __io _A_SFIOR
_A_SFIOR:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,051H
// union <unnamed> volatile __io _A_OSCCAL
_A_OSCCAL:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,052H
// union <unnamed> volatile __io _A_TCNT0
_A_TCNT0:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,053H
// union <unnamed> volatile __io _A_TCCR0
_A_TCCR0:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,054H
// union <unnamed> volatile __io _A_MCUCSR
_A_MCUCSR:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,055H
// union <unnamed> volatile __io _A_MCUCR
_A_MCUCR:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,056H
// union <unnamed> volatile __io _A_TWCR
_A_TWCR:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,057H
// union <unnamed> volatile __io _A_SPMCR
_A_SPMCR:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,058H
// union <unnamed> volatile __io _A_TIFR
_A_TIFR:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,059H
// union <unnamed> volatile __io _A_TIMSK
_A_TIMSK:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,05aH
// union <unnamed> volatile __io _A_GIFR
_A_GIFR:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,05bH
// union <unnamed> volatile __io _A_GICR
_A_GICR:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,05cH
// union <unnamed> volatile __io _A_OCR0
_A_OCR0:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,05dH
// union <unnamed> volatile __io _A_SP
_A_SP:
DS 2
ASEGN ABSOLUTE:DATA:ROOT,05fH
// union <unnamed> volatile __io _A_SREG
_A_SREG:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,020H
// union <unnamed> volatile __io _A_TWBR
_A_TWBR:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,021H
// union <unnamed> volatile __io _A_TWSR
_A_TWSR:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,022H
// union <unnamed> volatile __io _A_TWAR
_A_TWAR:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,023H
// union <unnamed> volatile __io _A_TWDR
_A_TWDR:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,024H
// union <unnamed> volatile __io _A_ADC
_A_ADC:
DS 2
ASEGN ABSOLUTE:DATA:ROOT,026H
// union <unnamed> volatile __io _A_ADCSRA
_A_ADCSRA:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,027H
// union <unnamed> volatile __io _A_ADMUX
_A_ADMUX:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,028H
// union <unnamed> volatile __io _A_ACSR
_A_ACSR:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,029H
// union <unnamed> volatile __io _A_UBRRL
_A_UBRRL:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,02aH
// union <unnamed> volatile __io _A_UCSRB
_A_UCSRB:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,02bH
// union <unnamed> volatile __io _A_UCSRA
_A_UCSRA:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,02cH
// union <unnamed> volatile __io _A_UDR
_A_UDR:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,02dH
// union <unnamed> volatile __io _A_SPCR
_A_SPCR:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,02eH
// union <unnamed> volatile __io _A_SPSR
_A_SPSR:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,02fH
// union <unnamed> volatile __io _A_SPDR
_A_SPDR:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,030H
// union <unnamed> volatile __io _A_PIND
_A_PIND:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,031H
// union <unnamed> volatile __io _A_DDRD
_A_DDRD:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,032H
// union <unnamed> volatile __io _A_PORTD
_A_PORTD:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,033H
// union <unnamed> volatile __io _A_PINC
_A_PINC:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,034H
// union <unnamed> volatile __io _A_DDRC
_A_DDRC:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,035H
// union <unnamed> volatile __io _A_PORTC
_A_PORTC:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,036H
// union <unnamed> volatile __io _A_PINB
_A_PINB:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,037H
// union <unnamed> volatile __io _A_DDRB
_A_DDRB:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,038H
// union <unnamed> volatile __io _A_PORTB
_A_PORTB:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,039H
// union <unnamed> volatile __io _A_PINA
_A_PINA:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,03aH
// union <unnamed> volatile __io _A_DDRA
_A_DDRA:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,03bH
// union <unnamed> volatile __io _A_PORTA
_A_PORTA:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,03cH
// union <unnamed> volatile __io _A_EECR
_A_EECR:
DS 1
ASEGN ABSOLUTE:DATA:ROOT,03dH
// union <unnamed> volatile __io _A_EEDR
_A_EEDR:
DS 1
ASEGN ABSOLUTE:DATA:NOROOT,01cH
__?EECR:
ASEGN ABSOLUTE:DATA:NOROOT,01dH
__?EEDR:
ASEGN ABSOLUTE:DATA:NOROOT,01eH
__?EEARL:
ASEGN ABSOLUTE:DATA:NOROOT,01fH
__?EEARH:
END
// 177
// 178
// 179 #endif
//
// 64 bytes in segment ABSOLUTE
// 304 bytes in segment CODE
//
// 304 bytes of CODE memory
// 0 bytes of DATA memory (+ 64 bytes shared)
//
//Errors: none
//Warnings: none
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -