Звоните! 
 (926)274-88-54 
 Бесплатная доставка. 
 Бесплатная сборка. 
Ассортимент тканей

График работы:
Ежедневно. С 8-00 до 20-00.
Почта: soft_hous@mail.ru
Читальный зал -->  Устройства ультрафиолетового стирания 

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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 [ 66 ] 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84

Ресурсы

Слова/байты

Циклы

Память программы

Инициализация

Операции часов

Обработка времени

35 + вывод на индикатор

Ввод от кнопок

35 + вывод на индикатор

Память данных

Индикатор

526

Переменные

N.A.

Затраты RAM

N.A.

1. Зависит от модуля ЖКИ (подпрограмма BUSYCHECK).

2. Принят случай наихудшего времени ожидания и наилучшего ответа модуля ЖКИ.

17.2.3 исходный ТЕКСТ ПРОГРАММЫ (CLOCK.ASM)

LIST Р - 16С74, n - 66 ERRORLEVEL -302

********************************************************************* Программа часов реального времени для семейства микроконтроллеров PIC16CXXX, использующая модуль TMR1. Для отображения времени используется ЖКИ индикатор. Установка времени осуществляется тремя кнопками

Программа = CLOCK.ASM Дата изменения: 5-15-94

1-15-97 совместимость с MPASMWIN 1.40 *********************************************************************

Распределение контактов;

Управление ЖКИ

RAO = Е (Разрешение) RA1 = RW (Чтение / запись) RA2 - RS (Выбор регистра)/ Данные на ЖКИ

RB <3:0> Входы кнопок

RB7 = Установка часов / минут / отключена RB6 = Приращение часов / минут RB5 = Сброс минут в 00

*************************** INCLUDE < р16с74. inc >

****************

LIST

FALSE TRUE

equ equ

Модуль таймера 1 позволяет реализовать часы реального времени для многих устройств с минимальной стоимостью системы. Эта функция может быть использована, как в устройствах для индивидуального потребителя (индикаторы времени), так и в индустриальных устройствах (формирование меток времени). Точность времени строго зависит от точности кварцевого резонатора. В таблице 2 представлены ресурсы требуемые программой.

Таблица 2. Ресурсы требуемые программой



INCLUDE < CLOCK.Н LIST

LCDDATA EQU LCD DATA TRIS LCDCNTL EQU

PICMaSter EQU Debug

Debug PU EQU

PORTB

EQU TRISB PORTA

FALSE

EQU FALSE TRUE

RESET

BTFSC

GOTO

GOTO

RESET V

BSF STATUS, RPO PCON, NOT POR START

OTHER RESET

Данные ЖКИ, 4 младших разряда TRIS регистр для данных ЖКИ Три линии управления

Флажок отладки Флажок отладки Флажок отладки

Адрес сброса, определяется типом сброса.

Адрес вектора сброса. Банк 1.

Сброс при включения питания? ДА.

НЕТ, WDT или сброс MCLR

Подпрограмма обработки прерываний периферийных устройств.. Определятся источник прерывания. Разрешены следующие прерывания:

1. Изменение состояния PORTB (RBIF).

2. Прерывание по переполнению TMR1.

PER INT V

org ISR V

if ( Debug ) bsf endif

PORTD, 0

Адрес вектора прерываний.

Используется для измерения времени ; программы обработки при отладке.

PORTB FLAG

DEBOUNCE

STATUS, RPO

; Банк 0.

BTFSC

PIRI, TMRIIF

; Переполнение таймера 1?

GOTO

Tl OVRFL

; ДА, обслуживание прерывания таймер!.

BTFSS

INTCON, RBIF

; НЕТ, изменение состояния PORTB?

GOTO

ERRORl

; НЕТ, ошибка - неизвестное прерывание.

; Контроль состояния кнопок.

MOVF

PORTB, W

ANDLW

OxEO

; Сохранить только значения 3 кнопок.

MOVWF

TEMP

MOVLW

DB HI BYTE

; Задержка устранения дребезга.

MOVF

MSD, F

CLRF

DECFSZ

LSD, F

GOTO

KB D LPl

DECFSZ

MSD, F

GOTO

KB D LPl

MOVF

PORTB, W

ANDLW

OxEO

; Сохранить только 3 значения кнопок.

SUBWF

TEMP, F

BTFSS

STATUS, Z

; Признак нуля установлен (состояние

; кнопок не изменилось при 2 чтении)?

GOTO

DEBOUNCE

; НЕТ, повторить чтение.

MOVWF

TEMP

; ДА, определить какая кнопка нажата.

MOVLW

0x80

; Поскольку кнопка нажата, очистить TIRl

MOVWF

TMRIH; для 1

отсчета

секунды.

CLRF

TMRIL;

PIRI, TMRIIF

; Сбросить Флажок прерывания таймера 1.

BTFSS

TEMP, HR MIN

; Нажата кнопка ЧАСЫ/МИНУТЫ/ОТКЛ ?

GOTO

SELECT UNITS

; ДА, определить выбранное значение.

BTFSS

TEMP, INC SW

; Нажата кнопка ПРИРАЩЕНИЕ ?

GOTO

INC UNIT

; ДА, приращение выбранного значения.

BTFSS

TEMP, CLR MIN

; Нажата кнопка СБРОС МИНУТ ?

GOTO

CLR MIN

; ДА, очистить минуты.

Никакая кнопка не нажата, завершение прерываний от порта В и очистка флажка прерывания.

CLR RB ; Никакая кнопка на RB <7:5> не нажата.

MOVF PORTB, F ; Сбросить условие несоответствия PORTS. BCF INTCON, RBIF ; Сброс Флажка прерывания PORTB.

if ( Debug )

bcf PORTD, 0 ; Используется для измерения времени



endif RETFIE

SELECT UNITS

INC UNIT

CLR MIN

MOVLW

OxFF

MOVWF

WAIT CNTR

INCF

FLAG REG,

FLAG REG,

KEY INPUT;

GOTO

DISPLAK

CLRF

WAIT CNTR

;WAIT С

BTFSC

FLAG REG,

HR UNIT

GOTO

INC HRS

BTFSS

FLAG REG,

MIN UNIT

GOTO

CLRRB

INCF

MIN, F

MOVLW

ОхЗС

SUBWF

MIN, W

BTFSS

STATUS, Z

GOTO

DISPLAY

CLRF MIN

MOVLW

0x04

MOVWF

SECS

MOVLW

0x80

MOVWF

TMRIH

CLRF

TMRIL

PIRl, TMRIIF

CLRF

WAIT CNTR

BTFSC

TEMP, CLR MIN SW

GOTO

DISPLAY

FLAG REG,

MIN UNIT

FLAG REG,

HR UNIT

FLAG REG,

KEY INPUT

GOTO

DISPLAY

; программы обработки при отладке.

; Возврат / разрешение прерываний.

; Определить выбранное значение.

; LSB WAIT CNTR загружается после каждого

; нажатия кнопки SELECT UNIT.

; Увеличить указатель MIN UNIT:HR UNIT

; Мигание выбранного значения.

; Приращение выбранного значения. JTR обнуляется после каждого нажатия

; Выбрано значение часов?

; ДА, приращение значение часов.

; Выбрано значение минут?

; НЕТ, недопустимая кнопка

; очистить флажки.

; ДА, приращение значения минут.

; Десятичное 60.

; MIN - 60 =?

; MIN - 60?

; НЕТ, время на индикатор.

; ДА, MIN О (используется CLR MIN).

; Очистить минуты. ,

; Очистить секунды.

; Начальное значение счетчика секунд 4.

; Загрузить таймер 1 для отсчета секунды

Сбросить флажок превышения TMR1. :t CNTR обнуляется после каждого нажатия Нажата кнопка сброс минут? НЕТ, одновременно нажата и кнопка INC. ДА, очистить все соответствующие флажки.

Т1 OVRFL

INC TIME

PIRl, TMRIIF

Очистить Флажок прегллваний таймера 1

BTFSS

FLAG REG, KEY

INPUT 1

Выполняется ввод от кнопок?

GOTO I

NC TIME

НЕТ, увеличить время.

INCF

WAIT CNTR, F

MOVLW

OxOA

10 отчетов по 1 секунде.

SUBWF

WAIT CNTR, W

10 секунд ожидания нажатия истекло?

BTFSS

STATUS, Z

Результат = 0?

GOTO

DISPLAY

НЕТ, значение на индикатор.

CLRF

WAIT CNTR

ДА, очистить WAIT CNTR.

FLAG REG, KEY

INPUT ;

FLAG REG, HR

UNIT

FLAG REG, MIN UNIT ;

MOVLW

0x80

MOVWF

TMRIH ; Загрузить таймер

1, для отсчета секунды.

INCF

SECS, F

BTFSS

SECS, 6

GOTO

DISPLAY

MOVLW

0x04

MOVWF

SECS

INCF

MIN, F

MOVLW

ОхЗС

W = 60d.

SUBWF

MIN, W;

BTFSS

STATUS, Z

GOTO

DISPLAY

CLRF

MIN ,-

INCF

HRS, F

MOVLW

OxOC

12:00, переключить AM / РМ.

SUBWF

HRS, W

BTFSS

STATUS, Z

GOTO

CK 13

Проверить, если ЧАСЫ = 13.

BTFSS

FLAG REG, AM

Установлено AM или РМ?

GOTO

SET AM

FLAG REG, PM

Если AM, установить РМ.

GOTO

DISPLAY;



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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 [ 66 ] 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84



ООО «Мягкий Дом» - это Отечественный производитель мебели. Наша профильная продукция - это диваны еврокнижка. Каждый диван можем изготовить в соответствии с Вашими пожеланияи (размер, ткань и материал). Осуществляем бесплатную доставку и сборку.



Звоните! Ежедневно!
 (926)274-88-54 
Продажа и изготовление мебели.


Копирование контента сайта запрещено.
Авторские права защищаются адвокатской коллегией г. Москвы
.