Смекни!
smekni.com

Счетчик времени исходящих телефонных разговоров (стр. 3 из 3)

После изменения счетчика времени происходит передача значений в RB0-RB7. Перед этим необходимо установить сигнал высокого уровня на RA3, что говорило бы жидкокристаллическому экрану о включении отображения символов (Enable).Передача данных происходит порциями по 8 бит, с небольшой временной задержкой. Поскольку выбранный мною индикатор позволяет выводить не только цифры, но и графику, то для более привычного представления будем выдавать на индикатор время в формате ЧЧ:ММ:СС, причем сперва выдаются часы, затем минуты, и уж наконец – секунды. После передачи идет возврат к главному циклу.

2.5. Текст программы

; Программа для микроконтроллера PIC16C55.

STATUS equ 03h

onemin equ 08h

decmin equ 09h

onehour equ 0Ah

dechour equ 0Bh

curtime equ 0Ch

onesecond equ 0Dh

decsecond equ 0Eh

org 00h

mainprog:

; Начальная инициализация

movf STATUS

btfss STATUS, 4

goto resume ; Если возвращаемся от сброса

bsf status

bsf fsr ; Установка нулевой страницы памяти

movlf 0h ; Обнуление всех данных программы

movwf TMR0

movwf onemin

movwf decmin

movwf onehour

movwf dechour

movwf curtime

movwf second

resume:

; Установим делитель WDT на 1 секунду

movlw 010000b

option

clrf TMR0

movlw ‘xxxxx1xxx’b

option

clrwdt

movlw 1110b

option

; Проверяем таймер

maincycle:

movf TMR0, 0

xorwf curtime, 0

btfss STATUS, 2

goto getnewtime ; Если появился необработанный сигнал -

; пойдем на getnewtime

btfss PORTA, 2 ; Есть запрос на сброс счета?

goto maincycle ; Если нет - на maincycle

; Обнуление всех счетчиков

movlf 0h

movwf onemin

movwf decmin

movwf onehour

movwf dechour

movwf second

goto dataout ; Выведем на индикатор нули

getnewtime:

; Обработка сигнала

; Установим делитель WDT на 1 секунду

movlw 010000b

option

clrf TMR0

movlw ‘xxxxx1xxx’b

option

clrwdt

movlw 1110b

option

movf TMR0, 0

movwf curtime ; Установим новое значение счетчика

incf onesecond, 1

movlf 10d

xorwf onesecond, 0

btfss STATUS, 2

goto dataout ; Если не натикало 10 секунд, к dataout

movlf 0h

movwf onesecond ; Обнулим счетчик секунд

incf decsecond, 1

movlf 06d

xorwf decsecond, 0

btfss STATUS, 2

goto dataout ; Если не натикало минуты, к dataout

; Считаем единицы минут

incf onemin, 1

movlf 10d

xorwf onemin, 0

btfss STATUS, 2

goto dataout ; Если десятка минут еще нет

movlf 0h

movwf onemin

; Десятки минут

incf decmin, 1

movlf 06d

xorwf decmin, 0

btfss STATUS, 2 ; Есть ли потребность изменить час?

goto dataout ; Нет - к dataout

movlf 0h

movwf decmin

; Единицы часов

incf onehour, 1

movlf 10d

xorwf onehour, 0

btfss STATUS, 2 ; Есть десять часов или нет?

goto dataout ; Нет - к dataout

movlf 0h

movwf onehour

; Десятки часов

incf dechour, 1

movlf 10d

xorwf dechour, 0

btfss STATUS, 2 ; Исчерпан лимит времени?

goto dataout ; Нет - к dataout

movlf 0h

movwf dechour

dataout:

; Выдача данных на индикатор

movlf 00h ; Настроим PORTB как выход

tris PORTB

movf dechour, 0

rlf W, 0

rlf W, 0

rlf W, 0

rlf W, 0

addwf onehour, 0

movwf PORTB ; Запишем информацию о часах

; Временная задержка перед отправлением следующего пакета данных

movwf 20d

new1: nop

decfsz w, 1

goto new1

; Запишем код разделителя на индикатор

movlf 2Eh

movwf PORTB

movf decmin, 0

rlf W, 0

rlf W, 0

rlf W, 0

rlf W, 0

addwf onemin, 0

movwf PORTB ; И о часах телефонного разговора

movlf 2Eh

movwf PORTB

movwf 20d

new2: nop

decfsz w, 1

goto new2

movf decsecond, 0

rlf W, 0

rlf W, 0

rlf W, 0

rlf W, 0

addwf onesecond, 0

movwf PORTB ; И о часах телефонного разговора

goto maincycle ; Вернемся к главному циклу

end ; Конец.

3. Заключение

В ходе работы было разработано устройство, служащее в качестве счетчика времени исходящих телефонных разговоров. Основным его преимуществом является низкое энергопотребление в сочетании с высокой точностью определения времени исходящих телефонных разговоров. Такая точность стала возможной из-за того, что устройство тесно связано с телефонной линией и анализирует сигналы в ней для определения момента начала исходящего соединения. Характеристики устройства в общем соответствуют тем задачам, которые ставились передо мной при формулировке темы курсового проекта.

4. Список литературы

1. КудряшовБ.П. и др. Электроника, Методические указания к выполнению курсового проекта.– Курган: КГУ, 1999.

2. Якубовский С.В., Барканов Н.А., Кудряшов Б.П. Аналоговые и цифровые интегральные схемы.– М.: Сов. радио, 1979.

3. Однокристалльные микроконтроллеры Microchip: PIC16C5X. /Пер. с англ.//Под ред. Владимирова А.Н.– Рига.: ORMIX, 1996.

4. Титце У., Шенк К. Полупроводниковая схемотехника, Справочное руководство.

5. Хоровиц П., Хилл У. Искусство схемотехники, в 3-х томах.– М.: Мир, 1992.