Главная страница  Комбинированное использование портов 

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

btfss

STATUS,CARRY

с равен 1?

TempC, 3

Если нет, обнуляем бит 3 (Lsd).

btfsc

TempC,0

Проверяем бит, соответствующий старшей цифре

goto

UpdateMsd

Если бит равен 1, обнавляем старшую цифру.

btfsc

TempC,1

Тоже самое для третьей цифры.

goto

UpdatesrdLsd

Обновляем.

btfsc

TempC,2

Тоже для второй цифры.

goto

Update2ndLsd

Обновляем.

UpdateLsd

movf

LsdTime w

Пересылаем Lsd в регистр w.

andlw

OxOf

goto

DisplayOut

Update2ndLsd

swapf

LsdTime,w

Пересылаем вторую цифру в регистр w.

andlw

OxOf

Маскируем старшую тетраду.

goto

DisplayOut

Включить экран.

Update3rdLsd

movf

MsdTime,w

Пересылаем 3 цифру в регистр w.

andlw

OxOf

Маскируем старшую тетраду.

goto

DisplayOut

Включаем экран.

UpdateMsd

swapf

MsdTime,w

Переслать старшую цифру (Msd) в регистр w.

andlw

OxOf

Маскируем старшую тетраду.

DisplayOut

call

LedTable

Получаем семисегментный код.

movwf

PORTJ

Подаем код на светодиоды.

movf

TempC.w

Включаем цифру.

movwf

PORT A

return

LedTable

addwf

Модифицируем программный счетчик

retlw

BOOIIIIir

Семисегментный код цифры 0.

retlw

В00000110

Семисегментный код цифры 1.

retlw

BOIOIIOir

Семисегментный код цифры 2.

retlw

в01001111

Семисегментный код цифры 3.

retlw

B01100110

Семисегментный код цифры 4.

retlw

BOllOIIOr

Семисегментный код цифры 5.

retlw

B01111101

Семисегментный код цифры 6.

retlw

B00000111

Семисегментный код цифры 7.

retlw

BOlllllir

Семисегментный код цифры 8.

retlw

B01100111

Семисегментный код цифры 9.

retlw

B01110111

Семисегментный код цифры А.

retlw

B01111100

Семисегментный код цифры В.

retlw

Boomoor

Семисегментный код цифры С.

retlw

B01011110

Семисегментный код цифры D.

retlw

B01111001

Семисегментный код цифры Е.

retlw

в01110001

Семисегментный код цифры F.

movlw movwf return

SampleAd call call

AdOone

btfsc

goto

call

return

BllOOOOOO ADCONO

SavePorts DoAd

ADCONO, (Ю

AdDone

ADOver

RestorePorts

clrf PORTJ bsf STATUS.RPO movlw OxOf

Next

movwf

movlw

call

return

movwf

decfsz

goto

return

TRISA STATUS, RPO ADCONO,ADON .125 Wait

ADCONO,GO

TempC TempC

Next

count

InitAd

equ 26 tentp equ 27 H byte equ 20 Lbyte equ 21 Ю equ 22 Й equ 23 fl2 equ 24 B2 BCD bcf STATUS, 0 movlw. 16 movwf count clrf Ю clrf Rl clrf R2 loopl6 rlf LJyte rlf HJyte rlf R2 rlf Rl

Тактирование АЦП от внутреннего RC-генератора.

Выполняем цикл преобразования.

Преобразование закончено? Если нет, ожидаем.

Устанавливаем флаг завершения преобразования. Восстанавливаем порты.

Выключаем светодиоды. Банк 1.

Переводим выходы порта В (высокоимпедансное). /

Банк 0. Включаем АЦП.

Начинаем преобразование.

Пересылаем в регистр temp.

в третье состояние

Назначаем ячейки ОЗУ (RAM).

Обнуляем бит переноса.



adjDEC

adjBCD

rlfRO

decfsz

count

goto

adjDEC

RETLW

movlw

movwf

call

adjBCD

movlw

movwf

call

adjBCD

movlw

movwf

call

adjBCD

goto

loopie

movlw

addwf

movwf

temp

btfsc

temp,3

movwf

movlw

addwf

movwf

temp

btfsc

temp, 7

movwf

retlw

Проверяем, будет ли результат больше семи.

Проверяем, будет ли результат.больше семи. Сохраняем как HSD.

МИКРОКОМПЬЮТЕР, ПРОГРАММИРУЕМЫЙ НА BASIC

Последний из рассматриваемых примеров является не чем иным, как реализацией с помощью PIC-микроконтроллера 16С5Х настоящего микрокомпьютера, программируемого на Basic. Конечно, речь идет ни о QBasic, ни о Visual Basic, но используемый в микрокомпьютере Stamp язык имеет хорошую производительность и позволяет достичь высокой скорости работы различньгх устройств. Учитывая широкие возможности микрокомпьютера Stamp и все возрастающий интерес к нему, мы решили посвятить этому устройству отдельнто главу.



ПРИЛОЖЕНИЕ

ФАЙЛ ИДЕНТИФИКАТОРОВ

1и[ногочисленные листинги, представленные в этой книге, посредством директивы include используют файлы типовых идентификаторов PICREG.EQU и MPREG.H. Эти файлы идентичны, их содержимое приведено ниже.

В диалоговом окне ассемблера есть опция, запрещающая различение строчных и прописных букв в идентификаторах, и соответствующая ей директива (/I) для программ. Рекомендуем ее использовать, чтобы избежать проблем при ассемблировании, поскольку из-за различного происхождения файлов-источников, представленных в книге, обозначения некоторых стандартных идентификаторов иногда различаются (РОВТ Аили Port A, например).

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

********

k*********** PIC15C5X **************************************

PIC54 equ

1FFH

Векторы сброса.

PIC55 equ

1FFH

PIC56 equ

3FFH

PIC57 equ

7FFH

PIC71 equ

RTCC equ

PC equ

STATUS equ

F3 - регистр состояния.

FSR equ

PORT A equ

PORT B equ

Порты ввода/вывода.

PORT C equ

ADRES egu

Специальные регистры 16С71

ADCONO equ

ADC0N1 equ

PCLATH equ

INTCON equ

TRISA equ

TRISB equ

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

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

Биты регистра состояния CARRY equ Ch ; Перенос - бит О регистра 3 (F3).



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

© 2000 - 2024 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования.