Умный дом

Три подпрограммы выполнения команд

; Подпрограмма включение реле по номеру. ; Запишем в регистр 30h (установить соответствующий номеру реле бит).

Cmdset: CLRW

ADDWF 0x23, 0

BCF STATUS, Z

XORLW 0x0 ; Реле 0.

BTFSC STATUS, Z

BSF 0x30, 0

CLRW

ADDWF 0x23, 0

BCF STATUS, Z

XORLW 0x1 ; Реле 1.

BTFSC STATUS, Z

BSF 0x30, 1

CLRW

ADDWF 0x23, 0

BCF STATUS, Z

XORLW 0x2 ; Реле 2.

BTFSC STATUS, Z

BSF 0x30, 2

CLRW

ADDWF 0x23, 0 BCF STATUS, Z XORLW 0x3 ; Реле 3. BTFSC STATUS, Z

BSF 0x30, 3 CLRW

ADDWF 0x23, 0

BCF STATUS, Z

XORLW 0x4 ; Реле 4.

BTFSC STATUS, Z

BSF 0x30, 4

CLRW

ADDWF 0x23, 0

BCF STATUS, Z

XORLW 0x5 ; Реле 5.

BTFSC STATUS, Z

BSF 0x30, 5

CLRW

ADDWF 0x23, 0

BCF STATUS, Z

XORLW 0x6 ; Реле 6.

BTFSC STATUS, Z

BSF 0x30, 6

CLRW

ADDWF 0x23, 0

BCF STATUS, Z

XORLW 0x7 ; Реле 7.

BTFSC STATUS, Z

BSF 0x30, 7

RETURN

; Подпрограмма выключения реле по номеру.

; Запишем в регистр 30h (сбросить соответствующий номеру реле бит).

Cmdreset: CLRW

ADDWF 0x23,0

BCF STATUS, Z

XORLW 0x0 ; Реле 0.

BTFSC STATUS, Z

BCF 0x30, 0

CLRW

ADDWF 0x23,0 BCF STATUS, Z XORLW 0x1 ; Реле 1. BTFSC STATUS, Z BCF 0x30, 1

CLRW

ADDWF 0x23,О

BCF STATUS, Z

XORLW 0x2 ; Реле 2.

BTFSC STATUS, Z

BCF 0x30, 2

CLRW

ADDWF 0x23,0

BCF STATUS, Z

XORLW 0x3 ; Реле 3 .

BTFSC STATUS, Z

BCF 0x30, 3

CLRW

ADDWF 0x23,0

BCF STATUS, Z

XORLW 0x4 ; Реле 4.

BTFSC STATUS, Z

BCF 0x30, 4

CLRW

ADDWF 0x23,0

BCF STATUS, Z

XORLW 0x5 ; Реле 5.

BTFSC STATUS, Z

BCF 0x30, 5

CLRW

ADDWF 0x23,0

BCF STATUS, Z

XORLW 0x6 ; Реле 6.

BTFSC STATUS, Z

BCF 0x30, 6

CLRW

ADDWF 0x23,0

BCF STATUS, Z

XORLW 0x7 ; Реле 7.

BTFSC STATUS, Z

BCF 0x30, 7

RETURN

; Подпрограмма передачи статуса реле

Stat: BCF STATUS, RPl ; Выбор банка 0. BCF STATUS, RPO

CLRW ; Проверим реле 0.

ADDWF 0x23, 0 BCF STATUS, Z XORLW 0x0 BTFSC STATUS, Z CALL relO CLRW

ADDWF 0x23, 0 BCF STATUS, Z XORLW 0x1 BTFSC STATUS, Z CALL rell CLRW

ADDWF 0x23, 0 BCF STATUS, Z XORLW 0x2 BTFSC STATUS, Z CALL ГЄІ2 CLRW

ADDWF 0x23, 0 BCF STATUS, Z XORLW 0x3 BTFSC STATUS, Z CALL rel3 CLRW

ADDWF 0x23, 0 BCF STATUS, Z XORLW 0x4 BTFSC STATUS, Z CALL ГЄІ4 CLRW

ADDWF 0x23, 0 BCF STATUS, Z XORLW 0x5 BTFSC STATUS, Z CALL ГЄІ5 CLRW

ADDWF 0x23, 0 BCF STATUS, Z XORLW 0x6 BTFSC STATUS, Z CALL ГЄІ6 CLRW

Реле 0.

Проверим реле 1.

Реле 1.

Проверим реле 2.

Реле 2.

Проверим реле 3.

Реле 3.

Проверим реле 4.

Реле 4.

Проверим реле 5.

Реле 5.

Проверим реле 6.

Реле 6.

Проверим реле 7.

ADDWF 0x23, 0

BCF STATUS, Z

XORLW 0x7 ; Реле 7.

BTFSC STATUS, Z

CALL rel7

; теперь это все отправим в передатчик

BSF PORTB, 0 BCF STATUS, RPl BSF STATUS, RPO BSF TXSTA, TXEN BCF STATUS, RPl BCF STATUS, RPO MOVLW 0x52 MOVWF TXREG ; BCF STATUS, RPl BSF STATUS, RPO

Переключим драйвер RS485 на передачу. ; Выбор банка 1.

; Разрешаем передачу. ; Выбор банка 0.

Отправим символ модуля. ; Выбор банка 1.

OutdatO: BTFSS TXSTA, TXIF ; Ждем отправки символа. GOTO outdatO

BCF STATUS, RPl ; Выбор банка 0.

BCF STATUS, RPO

CLRW

ADDWF 0x21,0

MOVWF TXREG ; Отправим первый символ адреса. BCF STATUS, RPl ; Выбор банка 1. BSF STATUS, RPO

Outdatl: BTFSS TXSTA, TXIF ; Ждем отправки символа. GOTO outdatl

BCF STATUS, RPl ; Выбор банка 0.

BCF STATUS, RPO

CLRW

ADDWF 0x22,0

MOVWF TXREG ; Отправим второй символ адреса.

BCF STATUS, RPl ; Выбор банка 1. BSF STATUS, RPO

Outdat2: BTFSS TXSTA, TXIF ; Ждем отправки символа. GOTO outdat2

BCF STATUS, RPl ; Выбор банка 0. BCF STATUS, RPO MOVLW 0x23

MOVWF TXREG ; Отправим символ статуса. BCF STATUS, RPl ; Выбор банка 1. BSF STATUS, RPO

Outdat3: BTFSS TXSTA, TXIF ; Ждем отправки символа. GOTO ou t da t З

BCF STATUS, RPl ; Выбор банка 0.

BCF STATUS, RPO

CLRW

ADDWF 0x23,0 ADDLW 0x30

MOVWF TXREG ; Отправим символ номера реле. BCF STATUS, RPl ; Выбор банка 1. BSF STATUS, RPO

Outdat4: BTFSS TXSTA, TXIF ; Ждем отправки символа. GOTO outdat4

BCF STATUS, RPl ; Выбор банка 0.

BCF STATUS, RPO

CLRW

ADDWF 0x25,0

MOVWF TXREG ; Отправим символ статуса реле. BCF STATUS, RPl ; Выбор банка 1. BSF STATUS, RPO

Outdat5: BTFSS TXSTA, RCIF ; Ждем отправки символа. GOTO outdat5

BCF TXSTA, TXEN ; Запрещаем передачу. BCF STATUS, RPl ; Выбор банка 0. BCF STATUS, RPO

BCF PORTB, 0 ; Переключим драйвер RS485 на прием. RETURN

; Подпрограмма обработки статуса реле.

RelO: BTFSC 0x30, 0 CALL sostn BTFSS 0x30, 0 CALL sostf RETURN rells BTFSC 0x30, 1 CALL sostn BTFSS 0x30, 1 CALL sostf

RETURN rel2: BTFSC 0x30, CALL sostn BTFSS 0x30, CALL sostf RETURN ГЄІЗ: BTFSC 0x30, CALL sostn BTFSS 0x30, CALL sostf RETURN rel4: BTFSC 0x30, CALL sostn BTFSS 0x30, ■ CALL sostf RETURN rel5: BTFSC 0x30, ! CALL sostn BTFSS 0x30, і CALL sostf RETURN rel6: BTFSC 0x30, і CALL sostn BTFSS 0x30, ( CALL sostf RETURN ГЄІ7: BTFSC 0x30, ; CALL sostn BTFSS 0x30, 1 CALL sostf RETURN

; Подпрограммы образования символов состояний.

Sostn: MOVLW 0x4E ; Состояние - включено. MOVWF 0x25 RETURN

Sostf: MOVLW 0x46 ; Состояние - выключено. MOVWF 0x25 RETURN

Если теперь соединить все представленные части граммы, программирование контроллера завершится.

Вставки и примечания, которые я привел выше, появи­лись позже, при наладке модуля, но я решил привести их «досрочно». Очень часто у меня не хватает терпения дочи­тать что-то до конца, мне не терпится начать работу. Я пред­ставил, что подобной чертой характера могу отличаться не только я, и привел все примечания на случай, если и вы уже начали работу за компьютером. Мне очень не хотелось, что­бы вы полностью разочаровались во всем преждевременно.

Мы написали программу для контроллера. Постараемся ее проверить и отладить в программе MPLAB.

Умный дом

Вторая версия основной программы на языке С++

/****************^ * TOC o "1-3" h z Copyright (С) 2006 by Vladimir Gololobov * * vgololobov@yandex. ru * * * * This program is free software; you can redistribute it …

Циклы

Циклы выполняют выражения или блоки выражений до тех пор, пока выражение условия не становится истинным. Наша программа требует двух циклов (один вложен в дру­гой). Пока пользователь желает угадывать последовательно­сти: { …

Две полезные схемы

Первая схема относится к настенному выключателю, работа­ющему по протоколу XI0. Что полезного можно почерпнуть из этой схемы? Например, организацию сканирования сети и управления триаком. Схему я привожу, как она сохранилась …

Как с нами связаться:

Украина:
г.Александрия
тел./факс +38 05235  77193 Бухгалтерия
+38 050 512 11 94 — гл. инженер-менеджер (продажи всего оборудования)

+38 050 457 13 30 — Рашид - продажи новинок
e-mail: msd@msd.com.ua
Схема проезда к производственному офису:
Схема проезда к МСД

Оперативная связь

Укажите свой телефон или адрес эл. почты — наш менеджер перезвонит Вам в удобное для Вас время.