Если сигнал разрешен, эта подпрограмма берет на себя управление генерацией звука 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кросхемы с ней выпускаются очень многими производителями.