Алгоритм работы микроконтроллера, управляющего воспроизведением сообщений, страница 6

Так же были получены навыки синтеза управляющих автоматов и сопряжения различных устройств с микропроцессором, изучен язык программирования низкого уровня – ассемблер для микроконтроллера PIC16C84.

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

1.  Брускин В.Я. Схемотехника автоответчиков. – М.: Наука и техника, 1999. – 176с.

2.  Дубровский Е.П. Справочник молодого телефониста. – М.: Высшая школа, 1992. – 224с.

3.  Изделия электронной техники. Цифровые микросхемы. Микросхемы памяти. Микросхемы ЦАП и АЦП: Справочник/ О.Н. Лебедев, А.И. Мирошниченко, В.А. Телец. – М.: Радио и связь, 1994. -  248c.

4.  Микроконтроллеры PIC16C8X. Архитектура, программирование и применение: Учеб. пособие/ С.И. Малафеев, А.А. Малафеева, В.С. Мамай и др.; Владим. гос. ун-т; Владимир, 1999. 180с.

5.  Справочник по интегральным микросхемам/ Б.В. Тарабрин, С.В. Якубовский, Н.А. Барканов и др.; Под ред. Б.В. Тарабрина. – 2-е изд., перераб. и доп. – М.: Энергия, 1981. – 816с.

Приложение 3

Программа для работы микроконтроллера, управляющего записью сообщений

;****************************************

; описание используемых обозначений

;****************************************

porta       equ H'05'

portb       equ H'06'

status      equ H'03'

TMRO        equ H'01'

TRISA       equ H'85'

TRISB       equ H'86'

pr0         equ 5

ra0         equ 0

ra1         equ 1

ra2         equ 2

ra3         equ 3

ra4         equ 4

rb0         equ 0

rb1         equ 1

rb2         equ 2

rb3         equ 3

rb4         equ 4

rb5         equ 5

rb6         equ 6

rb7         equ 7

;****************************************

; инициализация портов и таймера

;****************************************

clrf porta              ; инициализация порта А

bsf status, pr0

movlw B'00111'

tris porta

clrf portb              ; инициализация потра В

movlw B'00100101'

tris portb

bcf status, pr0

PORTS bsf porta, ra3          ; установка сигнала очистки памяти

bcf portb, rb6          ; установка сигнала управления счетчиком

bsf portb, rb7          ; установка сигнала сброса счетчиков

bsf portb, rb1          ; установка сигнала запуска АЦП

ZERO  bcf portb, rb3          ; установка сигнала инициализации памяти

bcf portb, rb4          ; установка соединения АЦП с линией и микрофоном

bcf porta, ra3

bcf portb, rb7

bcf status, pr0

clrf TMRO               ; таймер отключен

bsf status, pr0

clrwdt

movlw B'11111000'

movwf H'81'

bcf status, pr0

;****************************************

; главная программа

;****************************************

BEGIN btfsc porta, ra1        ; определение режима работы

goto PORTS

btfsc porta, ra0

goto MIC

btfsc porta, ra2

goto ZV

goto BEGIN

MIC   bsf portb, rb4          ;подпрограмма записи приветствия

bsf porta, ra3

bsf portb, rb7

call TIME

bcf porta, ra3

bcf porta, rb7

WAIT  btfss porta, ra0        ; проверка возможности окончания подпрограммы:

goto ZERO               ; - окончание записи

btfsc portb, rb2

goto LAMP               ; - переполнение памяти

clrf TMRO

SUM   btfsc TMRO, 6           ; установка частоты дискретизации АЦП

goto AD

goto SUM

AD    nop

call REC                ; вызов подпрограммы управления записью

goto WAIT

ZV    call TIME               ; подпрограмма записи поступающего сообщения

WAIT_Z      btfss porta, ra2  ; проверка прекращения записи (сигнал от другого контроллера)

goto ZERO

clrf TMRO

SUM_Z btfsc TMRO, 6           ; установка частоты дискретизации АЦП

goto AD_Z

goto SUM_Z

AD_Z  nop

call REC                ; вызов подпрограммы управления записью

goto WAIT_Z

LAMP  bsf porta, ra4          ; подпрограмма индикации переполнения памяти приветствия

goto BEGIN

;****************************************

; подпрограммы

;****************************************

TIME  bcf status, pr0         ; подпрограмма инициализации таймера

clrf TMRO

bsf status, pr0

clrwdt

movlw B'11011000'

movwf H'81'

bcf status, pr0

return

REC   bsf portb, rb1          ; подпрограмма управления записью (инициализация АЦП)

nop

bsf portb, rb6          ; установка следующего адреса памяти

BUSY  btfss portb, rb0        ; проверка сигнала готовности АЦП (через 7.5 мкс после запуска)

goto BUSY

bcf portb, rb1          ; установка данных на выходе АЦП

nop

bsf portb, rb3          ; инициализация памяти

bcf portb, rb6          ; снятие сигнала со счетчика

bcf portb, rb3          ; окончание записи

return

;

end