НПО Системы Безопасности
(499)340-94-73 График работы:
ПН-ПТ: 10:00-19:00
СБ-ВС: выходной

Главная » Периодика » Безопасность

0 ... 78798081828384 ... 159


goto endif endif

DataPort, DataPin Dlay, DlayieOBitl

if (Dlay160Bit2 1= -1)

bsf endif decfsz goto movlw call movlw call movlw call movlw call movlw call return

endm

Dlay, Dlay160Bit2

Dlay

$ - 1

0x028

LCDIns

0x010

LCDIns

0x001

LCDIns

0x006

LCDIns

OxOOE

LCDIns

Задержка 160 мкс

, Задание формата , Выключение дисплея Стирание памяти

Определение перемещения курсора Включение дисплея/курсора

ИНТЕРФЕЙС \К В РЕЖИМЕ MASTER

Ниже приведена макрокоманда управления обменом по интерфейсу IC в режиме MASTER. Для нормальной работы интерфейса требуется подключить линии SDA и SCL через внешние резисторы сопротивлением от I до 10 кОм к напряжению питания.

I2CSetup Macro ClockPort Frequency

Variable Dlay Fraction

ClockPin, DataPort, DataPin, Rate

Величина временной задержки в командных циклах Dlay ((Frequency . 110)/(800 • Rate))/1000 Fraction = ((Frequency * 110)/(800 * Rate))/1000 - (Dlay •

If Fraction > 499) Dlay = Dlay + 1 endif

, Подготовка шины VC для работы STATUS, RPO ClockPort, ClockPin DataPort, DataPin STATUS, RPO ClockPort, ClockPin

1000)

I2CbitSetup bsf bcf bcf bcf bsf

Инициирование выходов

На всех выходах высокие уровни



DlayMacro Dlay

Уровни сигналов

на линиях должны быть

высокими достаточное время

return l2Cstart

bsf bsf

DlayMacro Bcf

DlayMacro bcf

DlayMacro

retu rn I2Cstop

DlayMacro bsf

DlayMacro bsf

return I2Cread

btfsc

bsf bcf movlw I2CR100P bsf

DlayMacro bcf btfsc

, Формирование стартовой

, последовательности (старт-условие) ClockPort, ClockPin DataPort, DataPin

Dlay - 2 DataPort, DataPin

Dlay

ClockPort, ClockPin

Dlay - 2

Dlay

ClockPort, ClockPin

Dlay

DataPort, DataPin

I2CTemp, 0 STATUS, С I2CTemp, 0

STATUS, RPO

, Низкий уровень , на линии данных (SDA)

, Низкий уровень на , линии

, синхронизации (SCL) , Специфицированная , задержка

Выход с SDA = SCL = О

Формирование стоповой

последовательности

(стоп-условие)

, Высокий уровень , на линии

, синхронизации (SCL)

Выход с SDA = SCL = 1

Прием 8 бит по шине

и повтор приема

с выдачей подтверждения АСК

Если перенос, посылается подтверждение АСК Предоставление устройству возможности выдать данные на линию

DataPort, DataPin STATUS, RPO 0x010 - 8

ClockPort, ClockPin

(Dlay/2) - 1 STATUS, С DataPort, DataPin

Цикл приема SCL = 1

Прием бита данных



STATUS, С

DlayMacro

(Dlay/2) - 2

ClockPort, ClockPin

I2Temp, f ;

Сдвиг I2Temp влево.

andlw

0x07F

btfsc

STATUS, С

lorlw

0x080

addlw

0x001

DlayMacro

Dlay - 9

btfss

STATUS, DC

goto

I2CLoop

DataPort, DataPin

STATUS, RPO ;

Выдача бита подтверждения.

DataPort, DataPin

STATUS, RPO

andlw

0x080 ;

Высокий или низкий уровень?

btfss

STATUS, Z

DataPort, DataPin ;

Низкий, выдается

подтверждение.

DlayMacro

Dlay/18

ClockPort, ClockPin

DlayMacro

Dlay

ClockPort, ClockPin

DataPort, DataPin

movf

I2CTemp, w ;

Байт принят, сохранен.

return

Выход с SDA = SCL = 0,

I2Csend

mov-wf I2CTemp movlw 0x010 - 8 I2CSloop rlf

I2CTemp, f

Посылка 8 бит данных из регистра w, нужно получить подтверждение АСК.

Цикл передачи. Сдвиг буфера и выдача данных в линию через бит переноса.

btfsc

goto

goto

goto

DlayMacro bcf

STATUS, С $ + 4

DataPort, DataPin $ + 3

DataPort, DataPin $ + 1

ClockPort, ClockPin Dlay

ClockPort, ClockPin

; SDA = 0,

; SDA = 1.

; Выдача синхроимпульса

; (SCL = 1).



0 ... 78798081828384 ... 159