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

📄 fm_i2cdrv2.msa

📁 5807收音机模块用于炬力平台
💻 MSA
📖 第 1 页 / 共 2 页
字号:
//==================================================//A入口为准备响应,返回为接受到的数值I2Crecebyte:               PUSH    BC               LD      B,A               PUSH    BC               IN      A,(SCL_outport)               RES     SCL_outport_num,A               OUT     (SCL_outport),A               IN      A,(SCL_inport)               SET     SCL_inport_num,A               OUT     (SCL_inport),Awaitsclrelease:               IN      A,(SCL_dinport)               BIT     SCL_dinport_num,A               JR      Z,waitsclrelease               IN      A,(SCL_inport)               RES     SCL_inport_num,A               OUT     (SCL_inport),A               IN      A,(SCL_doport)               SET     SCL_doport_num,A               OUT     (SCL_doport),A               IN      A,(SCL_outport)               SET     SCL_outport_num,A               OUT     (SCL_outport),A               LD      B,08HSDAInextbit:               IN      A,(SCL_doport)               SET     SCL_doport_num,A               OUT     (SCL_doport),A               CALL    LWRD I2C_wait3us               IN      A,(SDA_dinport)               BIT     SDA_dinport_num,A               JR      Z,SDAI0SDAI1:               SCF               RL      C               JR      SDAI_OKSDAI0:               SLA     CSDAI_OK:               LD      A,B               CP      01H               JR      Z,I2CRlastbit               PUSH    BC               POP     BC               IN      A,(SCL_doport)               RES     SCL_doport_num,A               OUT     (SCL_doport),A               CALL    LWRD I2C_wait5us               DJNZ    SDAInextbitI2CRlastbit:               IN      A,(SDA_inport)               RES     SDA_inport_num,A               OUT     (SDA_inport),A               BIT     0,C               JR      NZ,I2CRlastbit1               IN      A,(SDA_doport)               RES     SDA_doport_num,A               OUT     (SDA_doport),A               JR      I2CRlastbitOKI2CRlastbit1:               IN      A,(SDA_doport)               SET     SDA_doport_num,A               OUT     (SDA_doport),AI2CRlastbitOK:               IN      A,(SDA_outport)               SET     SDA_outport_num,A               OUT     (SDA_outport),A               IN      A,(SCL_doport)               RES     SCL_doport_num,A               OUT     (SCL_doport),A               LD      A,C               POP     BC               LD      C,A               LD      A,B               CP      00H               JR      NZ,GenNACK               IN      A,(SDA_doport)               RES     SDA_doport_num,A               OUT     (SDA_doport),A               CALL    LWRD I2C_wait5us               IN      A,(SCL_doport)               SET     SCL_doport_num,A               OUT     (SCL_doport),A               CALL    LWRD I2C_wait5us               IN      A,(SCL_doport)               RES     SCL_doport_num,A               OUT     (SCL_doport),A               IN      A,(SDA_outport)               RES     SDA_outport_num,A               OUT     (SDA_outport),A               IN      A,(SDA_inport)               SET     SDA_inport_num,A               OUT     (SDA_inport),A               JR      ACKgenokGenNACK:               IN      A,(SDA_doport)               SET     SDA_doport_num,A               OUT     (SDA_doport),A               CALL    LWRD I2C_wait5us               IN      A,(SCL_doport)               SET     SCL_doport_num,A               OUT     (SCL_doport),A               CALL    LWRD I2C_wait5us               IN      A,(SCL_doport)               RES     SCL_doport_num,A               OUT     (SCL_doport),A               IN      A,(SDA_doport)               RES     SDA_doport_num,A               OUT     (SDA_doport),AACKgenok:               LD      A,C               POP     BC               RET//=============================================//=============================================I2CSendbyte:                PUSH    BC                LD      B,8SDAOnextbit:                SLA     C                JR      C,SDAO1SDAO0:                IN      A,(SDA_doport)                RES     SDA_doport_num,A                OUT     (SDA_doport),A                JR      SDAO_OKSDAO1:                IN      A,(SDA_doport)                SET     SDA_doport_num,A                OUT     (SDA_doport),ASDAO_OK:                CALL    LWRD I2C_wait5us                IN      A,(SCL_doport)                SET     SCL_doport_num,A                OUT     (SCL_doport),A                CALL    LWRD I2C_wait5us                IN      A,(SCL_doport)                RES     SCL_doport_num,A                OUT     (SCL_doport),A                DJNZ    SDAOnextbit                POP     BC                RET//===========================================//=================================================//=================================================I2C_wait5us:           PUSH    AF           PUSH    BC           NOP           NOP           POP     BC           POP     AF           RET//---------------------I2C_wait3us:           PUSH    AF           PUSH    BC           NOP           NOP           POP     BC           POP     AF           RET//====================================================//========================================================FMwait50ms:        PUSH    AF        PUSH    BC        LD      B,70	//25ms: 50 , 50ms: 100,FMwait50msloop1:        PUSH    BC//500US        LD      B,230FMwait50msloop2:        PUSH    DE        POP     DE        PUSH    DE        POP     DE        DJNZ    FMwait50msloop2        POP     BC        DJNZ    FMwait50msloop1        POP     BC        POP     AF        RET//========================================================//===========================================================READ_STATUS:        PUSH    BC        PUSH    HL        LD      B,05H        CALL    LWRD FMwait50msFMwaitreadyloop1:        DEC     B        JR      Z,READ_STATUS_err        CALL    LWRD READ_ONEFRAME        CP      00H        JR      Z,FMwaitreadyloop1        LD      HL,LWRD READ_BUFFER+2                      //判断RF=1?        BIT     0,(HL)        JR      Z,FMwaitreadyloop1READ_STATUS_err:        LD      A,(LWRD FM_result)        POP     HL        POP     BC        RET//=============================================================//========================================================//         FM wait 50ms//========================================================FMwait50ms_LOSC:           PUSH    AF           PUSH    BC           IN           A,(4eh)           OR          08h           OUT         (4eh),A           LD      B,1FMwait50msloop1_LOSC:           PUSH    BC//500us           LD      B,25FMwait50msloop2_LOSC:           PUSH    DE           POP     DE           PUSH    DE           POP     DE           DJNZ    FMwait50msloop2_LOSC           POP     BC           DJNZ    FMwait50msloop1_LOSC           POP     BC           POP     AF           RETWait1024Cycles:    push    bc    ld      b,0x80Wait1024Cycles1:    djnz    Wait1024Cycles1    pop     bc    retEND

⌨️ 快捷键说明

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