Программы и схемы. Защитная задержка. Выходные данные: принятый байт в переменной RXBUF. Предполагаемый код ошибки 1

Страницы работы

Содержание работы

Часть 3. Программы и схемы


Надпись: .а************************************************************;
Передача бита данных из PIC в устройство I2C ; ********#****************************************************-
ВГГ1 BTFSC PORTA.SDA BSF I2CDEV.DI NOP NOP

BCF PORTA.SCL RETLW 0 ; Читать данные с SDA ; DI= 1 (если считана 1) ; Защитная задержка

; SCL=0


NOP

; возврат SCL в О

BCF PORTA,SCL RETLW О

•*************************************************************.

; Получение 8-битных данных из устройства I2C в PIC ;

; Входных данных нет ;

; Выходные данные: принятый байт в переменной RXBUF -************* *****+**************************************„**,„,


Надпись: RX   MOVLW .8
MOVWF COUNT CLRF RXBUF
Надпись: RXLP RLF   RXBUF, F SKPC
BCF RXBUF.O SKPNC
BSF RXBUF.O

BITOUT

MOVLW В'ОООООООО' MOVWF PORTA BTFSS I2CDEVJJO GOTO ВЕТО BSF PORTA.SDA MOVLW 2 BTFSC PORTA.SDA GOTO CLKI BTFSS FLAG,ERR1 MOVWF ERCODE BSF FLAG.ERR1 GOTO CLKI

PORTA.SDA

ВГТ0 BCF NOP NOP NOP NOP NOP

CLKI BSF PORTA.SCL MOVLW 1 BTFSC PORTA.SCL GOTO ВГГ2 BTFSS FLAG.ERR1 MOVWF ERCODE BSF FLAG.ERR1

BIT2 NOP NOP ; SDA, SCL на вывод

; В СООТВЕТСТВИИ СО СХЕМОЙ

;DO=0?

; если да, перейти на BIT0 ;SDA=1

; предполагаемый код ошибки 2 ; проверка на наличие ошибки 2 ; если ошибки нет, уйти на CLK1 ; первая ли ошибка обнаружена? ; сохраняем код ошибки ; устанавливаем флаг наличия ошибки

;SDA=0

; защитная задержка

;SCL=1

; предполагаемый код ошибки 1 ; SCL удерживается в О? ; если нет, перейти на ВГТ2

; если да,

; сохранить код ошибки

; установить флаг наличия ошибки

; защитная задержка


; количество принимаемых битов ; очистка буфера приема

BSF   RXBUF ,0 DECFSZ COUNT, F GOTO RXLP BSF I2CDEV,DO CALL BITOUT

; сдвиг данных в буфере из бита переноса ; пропустить, если CARRY=1 ; очистка нулевого бита RXBUF ; пропустить, если CARRY=0 ; установить в 1 нулевой бит RXBUF CALL  BITIN ; прочитать бит из устройства BTFSC I2CDEV.DI     ; если входной бит =1, установить ; в 1 нулевой бит RXBUF ; все биты получены? ; нет, продолжить ; установить бит протокола ASK=1 ; для прекращения дальнейшего обмена ; данными

RETLW 0

^* ********************* *******************+******,,,, у*»,,,,», »„,,,,,,,,,,.

; Получение 8-битных данных, в случае, если ASK=0

; количество принимаемых битов ; очистка буфера приема

; Полученный байт данных помещается в переменную RXBUF .*************************************************************.

RXO MOVLW .8

MOVWF COUNT CLRF RXBUF

RXLPO

RLF   RXBUF, F SKPC

BCF RXBUF.O SKPNC


Похожие материалы

Информация о работе

Тип:
Написанные программы на языках программирования
Размер файла:
24 Kb
Скачали:
0