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

📄 owiswbitfunctions.lst

📁 达拉斯 1-Wire 主机通信 这份资料展示了如何把 1-Wire 主机通信在应用到一个AVR系统中
💻 LST
📖 第 1 页 / 共 3 页
字号:
   \   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 + -