ВУЗ:
Составители:
  248
;------------------------------------------------------------------------------- 
Pod_IN_BYTE: 
          CLR         MDE                 ;SDA - вход 
          MOV         R3,#8               ;нач уст ст циклов 
In_0:     SETB        MCO                 ;----------------------------------- 
          CALL        Pod_MON_SCL         ;дожидаемся перехода SCL в выс уров 
          MOV         C,MDI               ;прием бита 
          CLR         MCO                 ;----------------------------------- 
          RLC         A                   ;сдвиг А влево через С, С идет в бит 0 
          DJNZ        R3,In_0             ; 
          RET 
;------------------------------------------------------------------------------- 
;Подпрограмма фиктивной записи (обращение с признаком записи по 
;некоторому адресу ячейки без собственно записи) по шине I2C. 
;------------------------------------------------------------------------------- 
Pod_PWRITE_I2C: 
          LCALL       Pod_START           ;START 
          MOV         A,SLUG_I2C_R        ;  передача адр устройства 
          LCALL       Pod_OUT_BYTE        ;  и признака записи 
          LCALL       Pod_ZACK            ;запрос подтверждения 
          MOV         A,ADRH_I2C_R        ;  передача ст байта адреса ячейки 
          LCALL       Pod_OUT_BYTE        ;  в устройстве 
          LCALL       Pod_ZACK            ;запрос подтверждения 
          MOV         A,ADRL_I2C_R        ;  передача мл байта адреса ячейки 
          LCALL       Pod_OUT_BYTE        ;  в устройстве 
          LCALL       Pod_ZACK            ;запрос подтверждения 
          RET 
;------------------------------------------------------------------------------- 
;Подпрограмма записи байта в ведомое устройство EEPROM по шине I2C. 
;Предварительно следует поместить в РОНы ADRH_I2C_R, ADRL_I2C_R адрес ячейки, 
;в РОН DATA_I2C_R - данные записи, в РОН SLUG_I2C_R - адрес устройства и признак 
;операции (запись). 
;------------------------------------------------------------------------------- 
Pod_WRITE_I2C: 
          LCALL       Pod_PWRITE_I2C      ;фиктивная запись - указание на ячейку 
          MOV         A,DATA_I2C_R        ;  передача данных записи 
          LCALL       Pod_OUT_BYTE        ; 
          LCALL       Pod_ZACK            ;запрос подтверждения 
          LCALL       Pod_STOP            ;STOP 
          RET 
;------------------------------------------------------------------------------- 
;Подпрограмма чтения байта из ведомого устройства EEPROM по шине I2C. 
;Предварит следует поместить в РОНы ADRH_I2C_R, ADRL_I2C_R адрес ячейки, а в 
;РОН SLUG_I2C_R - адрес устройства и признак операции (запись). 
;Прочитанный байт данных возвращается в РОНе DATA_I2C_R. 
;------------------------------------------------------------------------------- 
Pod_READ_I2C: 
          LCALL       Pod_PWRITE_I2C      ;фиктивная запись - указание на ячейку 
          LCALL       Pod_START           ;повторный START 
          MOV         A,SLUG_I2C_R        ; 
          SETB        ACC_0               ;уст признак чтения данных 
          LCALL       Pod_OUT_BYTE       ;передача адреса устр и признака чтения 
          LCALL       Pod_ZACK            ;запрос подтверждения 
          LCALL       Pod_IN_BYTE         ;чтение байта данных из устройства 
          LCALL       Pod_NACK            ;не даем подтверждения 
          LCALL       Pod_STOP            ;STOP 
          MOV         DATA_I2C_R,A        ; 
          RET 
;----------------------------------------------------------------------------- 
;Подпрограмма инициализации РСН. 
;----------------------------------------------------------------------------- 
Pod_INIT_RSN: 
          MOV        PORT_KNOP,#11111111b ;сделать вх все линии порта кн 
          MOV        PORT_IND,#00000000b  ;сделать вых все линии порта индик 
Страницы
- « первая
 - ‹ предыдущая
 - …
 - 246
 - 247
 - 248
 - 249
 - 250
 - …
 - следующая ›
 - последняя »
 
