Звоните! 
 (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

PIC16C7X

Глава!?

SET AM

FLAG REG, AM

; Установить AM.

GOTO

DISPLAY

СК 13

MOVLW

OxOD

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

SUBWF

HRS, W

BTFSS

STATUS, Z

GOTO

DISPLAY

CLRF

INCF

HRS, F

GOTO

DISPLAY

INITDISPLAY

MOVLW

DISP ON

; Включить индикатор и курсор.

CALL

SEND CMD

; Передача данных в индикатор.

MOVLW

CLR DISP

; Очистить индикатор.

CALL

SEND CMD

; Передача данных в индикатор.

MOVLW

ENTRY INC

; Установить режим ввода с приращением

; без сдвига.

CALL SEND CMD

; Передача данных в индикатор.

RETURN

DISPLAY

MOVLW DD

RAM ADDR;

CALL SEND CMD;

BTFSC

FLAG REG, KEY INPUT

; Установка значений ?

GOTO

FLASH UNITS

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

CALL

LOAD HRS

; НЕТ, нормальная индикация.

CALL

LOAD COLON

CALL

LOAD MIN

GOTO

LOAD AM

FLASH UNITS

CLRF MOVF ANDLW

UNITTBL

ADDWF GOTO GOTO GOTO UNIT TBL END

MOVLW

ANDWF GOTO

PCLATH FLAG REG, W 0x03

PCL, F NO UNITS HR UNITS MIN UNITS

OxFC

FLAG REG, F NO UNITS

Очистить PCLATH для работы с таблицей в первых 256 байтах памяти программ. Маска на разряды HR UNIT и MIN UNIT.

HR UNIT : MIN UNIT 0~ О - Отображать все.

0 1 - Мигать значением часов.

1 О - Мигать значением минут.

1 1 ~ Очистить

FLAG REG<HR UNIT:MIN UNIT>.

О О - Отобразить все.

if ((UNITTBL и OxOFF) > ( UNIT TBL END и OxOFF)) MESSG Предупреждение: Таблица UNIT TBL пересекает, границу страницы в вычисленном переходе

endif

HR UNITS

BTFSS

GOTO MOVLW CALL MOVLW CALL SKIP BLKHRS

BTFSS

CALL

MOVLW

CALL CALL GOTO

WAIT CNTR, 0 SKIP BLK HRS SEND CHAR SEND CHAR WAIT CNTR, 0 LOAD HRS

SEND CHAR LOAD MIN LOAD AM

Если WAIT CNTR нечетен,

TO цифры часа отображаются как пробел.

Если WAIT CNTR четный,

то отображаются цифры часа.

: светится всегда

со всеми другими символами.

MIN UNITS

CALL MOVLW CALL BTFSS

LOAD HRS

SEND CHAR WAIT CNTR, 0

Отобразить цифры часа. : всегда светится.

Если WAIT CNTR нечетен, то



NO UNITS

LOAD COLON

LOAD MIN

цифры минут отображаются как пробел.

GOTO

SKIP BLK MIN

MOVLW

CALL

SEND CHAR

MOVLW

CALL

SEND CHAR

BTFSS

WAIT CNTR, 0

Если WAIT CNTR четный, то

отображаются цифры минут.

CALL

LOAD MIN

GOTO

LOAD AM

CALL

LOAD HRS

Отобразить все символы.

MOVLW

CALL

SEND CHAR

CALL

LOAD MIN

GOTO

LOAD AM

MOVF

HRS, W

Загрузить значение в регистр W.

CALL

BIN 2 BCD

преобразовать в ДВОИЧНО-ДЕСЯТИЧНЫЙ КОД.

MOVF

MSD, W

Загрузить значение единиц в W.

CALL

NUM TABLE

Получить код ASCII.

CALL

SEND CHAR

Отправить символ на индикатор.

MOVF

LSD, W

Загрузите значение десятков в W.

CALL

NUM TABLE

Получите код ASCII.

CALL

SEND CHAR

Отправить символ на индикатор.

RETURN

MOVLW

Значение ASCII для пробела.

BTFSC

SECS, 0

Проверить четность секунд.

ADDLW

: -

Если секунды нечетны, то включить :

добавлением дельты к символу ASCII.

CALL

SEND CHAR

Отправить символ на индикатор.

RETURN

MOVF .

MIN, W

Загрузить значение в регистр W.

CALL

BIN 2 BCD

Преобразовать в ДЮИЧНО-ДЕСЯТИЧНЫЙ КОД.

MOVF

MSD, W

Загрузить значение единиц в W.

CALL

NUM TABLE

Получить код ASCII.

CALL

SEND CHAR

Отправить символ на индикатор.

MOVF

LSD, W

Загрузите значение десятков в W.

CALL

NUM TABLE

Получите код ASCII.

CALL

SEND CHAR

Отправить символ на индикатор.

RETURN

MOVLW

Значение ASCII для пробела.

CALL

SEND CHAR

Отправить символ на индикатор.

MOVLW

Значение ASCII для символа А.

BTFSS

FLAG REG, AM

Время AM или РМ ?

ADDLW

.p. -

Если РМ, прибавить дельту к символу.

CALL

SEND CHAR

Отправить символ на индикатор.

MOVLW

CALL

SEND CHAR

Отправить символ на индикатор.

STATUS, RPO

Банк 1.

0PTION REG, NOT RBPU

Подключить контакты PORTB

к высокому уровню.

STATUS, RPO

Банк 0.

GOTO

CLRRB

После вывода времени сбросить RBIF.

***********

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

Подпрограмма BIN 2 BCD преобразует двоичные числа в регистре W в двоично-десятичный код. Результат сохраняется в двух байтах MSDiLSD. Эта подпрограмма используется подпрограммой DISPLAY для преобразования значений времени.

i5IN 2 BCD

CLRF MOVWF TENS SUB MOVLW

MSD LSD .10

Значение цифры десятков. Значение цифры единиц. Десятичное число 10.



SUBWF

BTFSS

RETLW

MOVWF

INCF

GOTO

LSD, W STATUS, С 0

MSD, F TENS SUB

Результат вычитания отрицательный ДА, выход из подпрограммы. Нет, переслать результат в LSD. Увеличьте значение десятков.

; Эта подпрограмма никогда не должна выполнятся.

ERRORl BCF STATUS, RPO ; Банк 0.

if ( Debug )

BSF PORTD, 1 BCF PORTD, 1

else

BSF PORTC, 0 BCF PORTC, 0

endif

GOTO ERRORl

SendChar - посыпает символ в индикатор Эта подпрограмма разбивает символ на старший и младший полубайты и посылает их в индикатор, начиная со старшего. Передача данных управляется контактами порта А <3:0>

SENDCHAR

; Посылаемый символ находится в W. ; Ожидание готовности индикатора.

; Выделить старший полубайт. ; Передать данные в индикатор. ; Установить индикатор для чтения. ; Установить индикатору командный режим. ; Переключить Е.

; Выделить младший полубайт. ; Передать данные в индикатор. ; Переключите Е.

MOVWF

CHAR

CALL

BUSY CHECK

SWAPF

CHAR, W

ANDLW

OxOF

MOVWF

LCD DATA

LCD CNTL,

LCD CNTL,

LCD CNTL,

LCD CNTL,

MOVF

CHAR, W

ANDLW

OxOF

MOVWF

LCD DATA

LCD CNTL,

LCD CNTL,

RETURN

***********

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

t*********************

Send Cmd - команда передачи данных в индикатор.

Эта подпрограмма разбивает данные на старший и младший полубайты и посылают их э индикатор, начиная со старшего. * Передача данных управляется контактами порта А <3:0>

MOVWF

CHAR

; Посы-чаемьтй символ находится в W.

CALL

BUSY CHECK

; Ожидание готовности индикатора.

SWAPF

CHAR, W

ANDLW

OxOF

; Выделить старший полубайт.

MOVWF

LCD DATA

; Передать данные в индикатор.

LCD CNTL,

; Установить индикатор для чтения.

LCD CNTL,

; Установить индикатору командный

LCD CNTL,

; Переключить Е.

LCD CNTL,

MOVF

CHAR, W

ANDLW

OxOF

; Выделить младший полубайт.

MOVWF

LCD DATA

; Передать данные в индикатор.

LCD CNTL,

; Переключите Е.

LCD CNTL,

RETURN

*********

**********

******

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

Подпрограмма проверяет флажок состояния индикатора. Используется: TEMP - Возвращает - признак занят / адрес.

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

BUSY CHECK

if ( Debug ) BSF PORTD, 3 BCF PORTD, 3

endif CLRF LCD DATA

BSF STATUS, RPO

BSF OPTION REG, NOT RBPU

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

Имеем на PORTB <3:0> низкий уровень. Банк 1.

Отключить контакты PORTB от высокого уровня.



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 
Продажа и изготовление мебели.


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