После изменения счетчика времени происходит передача значений в 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.