Главная страница  Комбинированное использование портов 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 [ 34 ] 35 36 37 38 39 40

GOTO

SERV COM RET

; Переходим к следующему.

SUBWF

NEW KEY.W

; Проверяем выход за зти пределы.

LD HENTRY 0

BTFSC

STATUS.С

; Если не вышли, пропускаем.

HENTRY, 4

; Обнулить.

GOTO

IGNORE KEY

; Иначе игнорируем нажатие.

ENTFLG,HR10

ENTFLG.MIN

; Устанавливаем флаг.

GOTO

SERV COM RET

GOTO

ENT LO C0M

ENTJRS

MOVLW

HENTRY

; Используем косвенную адресацию.

EnT AM PM

MOVWF

MOVLW

AM PM KE

; Нажата клавиша АМ/РМ?

BTFSC

HENTRY,4

; Проверяем бит на 0.

XORWF

NEW KE,W

GOTO

ALL0W0 2

; Если 1, то устанавливаем десятки часов.

BTFSS

STATUS,Z

; Если да, пропускаем.

HOVLW

; Проверяем от 0-9.

GOTO

IGNORE.KE

SUBWF

NEW KEY,W

BTFSS

HENTRY, AM PM

; Проверяем флаг АМ РМ.

BTFSC

STATUS. С

; Если переноса нет, пропускаем.

GOTO

SETAMPM

; Если не установлен, установить.

GOTO

IGNORE KEY

; Игнорируем нажатие келавиши.

HENTRY,AM PM

; Сбросить флаг.

ENT-LO C0M1

GOTO

SERV C0M RET

; Завершить.

ENTFLG.HR

; Устанавливаем флаг HR.

SETAMPM

ENT LO COH

HENTRY,AN PM

; Установить флаг.

MOVF

FO.W

; Загружаем HRS.

GOTO

SERV COM RET

ANDLW

B11110000

; Маскируем младшую тетраду.

IORWF

NEW KEY.W

; Сравниваем с NEW KEY.

SERV SET RTM

MOVWF

; Сохраняем.

MOVF

MTMR,W

; Пересылаем значения.

GOTO

SERV C0M RET

; Переходим к следующему.

MOVWF

MENTRY

ALLOWO 2

MOVF

HTMR,W

MOVLW

; Разрешаем значения в интервале 0-2.

MOVWF

HENTRY

SUBWF

NEW KEY,W

SERV.COM

BTFSC

STATUS,С

; Если меньше, чем 3, пропускаем.

MOVF

FLAG,W

; Сохраняем в регистре W.

GOTO

IGNORE.KEY

ANDLW

В000000001

; Режим будильника или часов?

GOTO

ENT L0 C0M1

MOVWF

ENTFLG

; Сохраняем в EMTFLG.

MOVLW

B11110010

; Задаем 1 с.

ENT MIN 10

IORWF

FLAG

MOVLW

MENTRY

; Косвенная адресация.

FLAG,0

MOVWF

RETLW

MOVLW

; Разрешаем значения 0-5.

SUBWF

NEW KEY,W

SERV SET ATM

BTFSC

STATUS,С

; Если перенос, пропускаем.

HOVF

MALARM,W

; Пересылаем значения.

GOTO

IGNORE.KEY

; Игнорируем нажатие клавиши.

HOVWF

MENTRY

SWAPF

FO,W

; Меняем местами тетрады.

MOVF

HALARM, W

ANDLW

B11110000

; Маскируем младшую тетраду.

HENTRY

IORWF

NEW KEY,W

; Проверяем нажатие.

ALFLAG,ALONOF

; Устанавливаем флаг.

MOVWF

; Сохраняем.

GOTO

SERV COM

; Переходим к SERV COM.

SWAPF

; Меняем тетрады.

SERV ALARH ATH

ENTFLG,MIN10

BTFSS

ALfLAG, ALONOF

; Проверяем флаг вкл./выкл.

GOTO

SERV C0M REr

; Продолжаем.

GOTO

SET ALONOF

; Устанавливаем флаг вкл./выкл.

ALFLAG,ALONOF

; Сбрасываем флаг.

ENT.MIN

GOTO

SERV ATM COM

; Переходим к SERV ATM COH.

MOVLW

MENTRY

; Косвенная адресация.

SETj\LONOF

MOVWF

ALFLAG.ALONOF

; Устанавливаем флаг.

MOVLW

; Разрешаем значения 0-9.

*flV,ATM COM



FWG,KEY BEEP

Звуковой сигнал.

MOVLW

BllllOOOO-

Сбрасываем счетчик секунд.

ANDWF

MIN.SEC

RETLW

Возвращаемся.

SERV ALARM RTM

FLAG.KE BEEP

Устанавливаем флаг звукового сигнала.

FLAG.O

FLAG.I

MOVLW

D05-

Записываем 5 в регистр HIN SEC.

MOVWF

MIM SEC

RETLW

SERV.SNOOZE

MOVLW

Устанавливаем значение 10.

MOVWF

MIN SEC

ALFUG, SILNC

Устанавливаем флаг.

CLR AL COM

FLAG,KPr BEEP ;

Устанавливаем флаг звукового сигнала.

CLRF

AATMR ;

Обнуляем таймер AATMR.

CLRF

AAFLAG ;

Сбрасываем флаг.

ALFLAG,INAA ;

Сбрасываем флаг INAA.

PORT A,BEP ;

Отключаем звуковой сигнал.

RETLW

0 ;

Возвращаемся.

CHK AL KEYS

- BTFSS

ALFLAG,ALONOF ;

Будильник включен?

RETLW

1 ;

Если нет, то возвращаемся.

BTFSS

ALFLAG,INAL

Проверяем флаг INAL.

RETLW

1 ;

Если нет, пропускаем.

MOVLW

CLR ALARM KEY ;

Сбрасываем время будильника?

XORWF

NEW KE.W ;

BTFSC

STATUS,Z ;

Если нет, пропускаем.

GOTO

CLR ALARM ;

Сбрасываем время будильника.

MOVLW

SNOOZE KEY ;

Проверяем SNOOZE KEY,

XORWF

NEW KE,W ;

BTFSS

STATUS,Z :

Если 0, пропускаем.

RETLW

GOTO

SERV SNO0ZE

CLR ALARM

ALFLAG, INAL ;

Сбросить INAL.

ALFUG, SILNC ;

Сбросить SILNC.

MOVLW

воооотг ;

Обнулить минуты.

ANDWF

MIN SEC ;

GOTO

CLR AL COM

Если сигнал разрешен, эта подпрограмма берет на себя управление генерацией звука SOUNDAA

ALFLAG, INAL О

ALFLAG,SILNC О

BTFSS RETLW BTFSC RETLW BTFSC GOTO

SNDAAO

Пропускаем, если включен сигнал тревоги. Возвращаемся. Проверяем SILNC. Возвращаемся. ENTFLG,INKEYBEP; Проверяем INKEYBEP. CHK COLSN ; Если установлен, переходим к CHK COLSN.

Пропускаем, если INAA = 1.

BTFSS ALFLAG,INAA

SND AA 1

CALL

INIT AA :

Инициализируем все.

BTFSS

AAFLAG, 0 ;

Пропускаем, если выполнено.

GOTO

DO CYCL0 ;

Иначе выполняем цикл 1.

BTFSS

AAFLAG. 1

Пропускаем, если выполнено.

GOTO

DO CYCL1

Иначе выполняем цикл 2.*

BTFSS

AAFLAG,2

Пропускаем, если выполнено.

GOTO

DO CYCL2

Иначе выполняем цикл 3.

BTFSS

AAFUG,3

Пропускаем, если выполнено.

GOTO

D0 CYCL3

Иначе выполняем цикл 4.

BTFSS

AAFLAG,4

Пропускаем, если выполнено.

GOTO

D0 CYCL4

Иначе выполняем цикл 5.

BTFSS

AAFLAG. 5

Пропускаем, если выполнено.

GOTO

D0 CYCL5

Иначе выполняем цикл 6.

BTFSS

AAFUG.e

Пропускаем, если выполнено.

GOTO

D0 CYCL6

Иначе выполняем цикл 6.

BTFSS

AAFLAG,7

Пропускаем, если выполнено.

GOTO

DO CYCL7

, Иначе выполняем цикл 7.

GOTO

SND AA 1

; Возвращаемся.

INIT AA

CLRF

AAFLAG

; Сбросываем все флаги.

ALFLAG,INAA

; Устанавливаем флаг INAA.

GOTO

PUT ON 100

: Задаем 100 мс.

DEC AA TMR

DECF

AATMR

; Декрементируем таймер.

MOVF

AATMR,W

; Пересылаем в регистр W.

BTFSS

STATUS, Z

; Проверяем на 0.

RETLW

; Если не 0, возвращаем 1,

RETLW

; иначе возвращаем 0.

DOJYCLO

CALL

DEC AA TMR

; Уменьшаем значение таймера.

BTFSS

STATUS,Z

; Если не 0, то возвращаемся.

RETLW

AAFLAG,0

; Устанавливаем флаг ГОТОВО



PUT 0FF 100 BSF MOVLW MOVWF

PORT A.BEP

D20-

AATMR

RETLW

DO.CYCLI

CALL

DEC AA TMR

BTFSS

STATUS,Z

RETLW

AAFLAG,1

PUT ON 100

PORT A, ВЕР

MOVLW

D*20-

MOVWF

AATWR

RETLW

DO CYCL2

CALL

DEC AA TMR

BTFSS

STATUS.Z

RETLW

AAFLAG, 2

P0RT A,BEP

MOVLW

DlOO

MOVWF

AATMR

RETLW

D0 CYCL3

CALL

DEC AA TMR

BTFSS

STATUS.Z

RETLW

AAPLAG.S

GOTO

PUT ON 100

DO CYCLil

CALL

DEC.AA TMR

BTFSS

STATUS. S

RETLW

AAFLAG, 4

GOTO

PUT 0FF 100

D0 CYCL5

CALL

DEC AA TMR

BTFSS

STATUS, Z

AAFLAG.5

GOTO

PUT ON 100

Выключаем звуковой сигнал

на 100 мс.

Уменьшить значение таймера. Проверяем на 0.

Устанавливаем флаг ГОТОВО

Отключаем звуковой сигнал

на 100 мс.

Декрементируем таймер. Если не О, то возвращаемся. /

Устанавливаем флаг ГОТОВО Отключаем звуковой сигнал на 500 мс. /

; Декрементируем таймер.

; Если не О, то возвращаемся.

; Устанавливаем флаг ГОТОВО

; Выполняем следующий цикл.

Декрементируем таймер. Если не О, возвращаемся.

Устанавливаем флаг ГОТОВО Выполняем следующий цикл.

Декрементируем таймер. Если не О, то возвращаемся. /

Устанавливаем флаг ГОТОВО Выполняем следующий цикл.

CALL

DEC AA TMR

; Декрементируем таймер.

BTFSS

STATUS,Z

; Если не 0, то возвращаемся.

RETLW

AAFUG, 6

; Устанавливаем флаг ГОТОВО .

PORT A, ВЕР

; Отключаем звуковой сигнал

MOVLW

D200

; на 1000 мс.

MOVWF

AATMR

RETLW

fx) CYCL7

CALL

DEC AA TMR

; Декрементируем таймер.

BTFSS

STATUS,Z

; Возвращаемся, если не 0.

RETLW

AAFLAG, 7

; Устанавливаем флаг ГОТОВО .

GOTO

PUT 0N,100

; Выполняем следующий цикл.

CHK COLSN

BTFSC

P0RT A,BEP

; Если включен, то пропускаем.

GOTO

SND AA 0

; иначе возвращаемся.

MOVF

AATMR,W

; Пересылаем значение AATMR в регистр W.

BTFSC

STATU&,Z

; Проверяем на 0.

GOTO

LD AAT 1

; Загружаем в таймер.

DECF

AATMR

; Декрементируем таймер.

RETLW

; Возвращаемся.

LD AAT 1

INCF

AATMR

; Инкрементируем таймер.

RETLW

; Возвращаемся.

PIC57

SYSJESET

GOTO

START

DO CYCL6

РЕАЛИЗАЦИЯ ШИНЫ 14;

Этот пример был выбран по двум причинам. Во-первых, популярность шины PC постоянно возрастает. Во-вторых, в данном случае рассматриваемый интерфейс реализуется микроконтроллерами 16С5Х, лишенными встроенного последовательного интерфейса, И Используются линии стандартного параллельного порта.

Название шины FC представляет собой аббревиатуру от сочетания Inter Integrated Circuit (ПС, или PC), Эта стандартная последова-ьная шина была изначально предложена фирмой Philips, но сейчас *01кросхемы с ней выпускаются очень многими производителями.



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 [ 34 ] 35 36 37 38 39 40

© 2000 - 2024 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования.