4.2 Описание алгоритма работы системы и программы

Разработанный алгоритм работы системы представлен на чертеже БГУИ.ХХХХХХ.002.


Рисунок 3 – Размещение программы в адресном пространстве микропроцессорной системы

При включении тахометра выполняет начальные установки режимов работы и регистров, ждет прерывания от таймера и сигнального входа. Установки портов - индикатор погашен. Обнуляет счетчик оборотов и таймер 1 секунда. Снимает показания счетчика оборотов. Увеличивается содержимое таймера на 1, следит за реальным временем и записывает результат в буфер индикации. Производит счет входных импульсов + нормировку для обеспечения показаний в оборотах/мин, счет ведется в двоично-десятичном коде, обнуление счетчика при включении и по таймеру после считывания результата.


Заключение

Входе выполнения курсовой работы был разработан цифровой тахметр с автоматическим выбором диапазона измеряемого напряжения.

В пояснительной записке проработаны вопросы соотношения аппаратных и программных средств разрабатываемой системы, разработана и описана структурная и принципиальная схема устройства. Бес внимания не остались вопросы разработки программного обеспечения. В курсовой работе разработан и описан алгоритм функционирования цифрового тахометра. По разработанному алгоритму составлена программа.

Конечным результатом проведенной работы, явилась структурная и принципиальная схема цифрового тахометра, а также алгоритм функционирования системы и листинг программы.


Литература

1.  Абрайтис В. -Б. Б., Аверьянов Н. Н., Белоус А. И. и др. Под ред. Шахнова В. А. Микропроцессоры и микропроцессорные комплекты интегральных микросхем: справочник. В 2 т. – М.: Радио и связь, 1988.

2.  Богданович М. И., Грель И. Н., Прохоренко В. А., Шалимо В. В. Цифровые интегральные микросхемы: справочник. – Мн.: Беларусь, 1991.

3.  Каган Б. М., Сташин В. В. Основы проектирования микропроцессорных устройств автоматики. – М.: Энергоатомиздат, 1987.

4.  Тарабрин Б. В., Лунин Л. Ф., Смирнов Ю. Н и др. Под ред. Тарабрина Б. В. Интегральные микросхемы: справочник. – М.: Радио и связь, 1984.

5.  Фридмен М., Ивенс Л. Проектирование систем с микрокомпьютерами: пер. с англ. – М.: Мир, 1986.


Приложение А

 

Листинг управляющей программы

;******Стандартная шапка******************

list p=16f84, f=inhx8m; *

#include p16f84.inc; *

;*****************************************

;-------буфер индикатора-----------

INR EQU H'0C' ; номер текущего разряда

IKANB EQU H'0D' ; косвен. адрес начала буфера

IR0 EQU H'0D' ; разряд 0

IR1 EQU H'0E' ; разряд 1

IR2 EQU H'0F' ; разряд 2

IR3 EQU H'10' ; разряд 3

;--------таймер---------------------------------

TIM0 EQU H'11' ; младший байт

TIM1 EQU H'12' ; старший байт

TIMF EQU H'00' ; флаг переполнения таймера

;-счетчик входных импульсов - работа по прерыванию---

OB0 EQU H'13' ;

OB1 EQU H'14' ;

DOB EQU H'15' ; приращение счетчика импусов

;---------------------------------------------

org 0

goto Begin

org 4

goto Int

;----------------подпрограммы------------------------

Table1

;-перекодировка двоично-десятичного числа

; в семисегментный код

; перед вызовом программы в W загрузить преобразуемое число

; результат после выполнения программы - в W

addwf PCL

retlw H'7F' ; 0

retlw H'0D' ; 1

retlw H'B7' ; 2

retlw H'9F' ; 3

retlw H'CD' ; 4

retlw H'DB' ; 5

retlw H'FB' ; 6

retlw H'0F' ; 7

retlw H'FF' ; 8

retlw H'DF' ; 9

retlw H'01' ; пусто

;-----------------------------------------------

Table2

;-сканирование разряда индикатора

; перед вызовом программы в W загрузить текущий номер раз-да

; результат после выполнения программы - в W

addwf PCL

retlw H'0E' ; 0

retlw H'0D' ; 1

retlw H'0B' ; 2

retlw H'07' ; 3

;----------------------------------------------------

Indic

;-обслуживание индикатора------

; коррекция TMR0

; при обращении преобразует число текущего разряда

; в семисегментный код, и производит его подсветку

; затем производит смещение указателя

; текущего разряда на 1 в пределах 0...3

movlw 0xF1

movwf TMR0 ; коррекция TMR0

bcf STATUS,RP0 ; банк 0

movlw 0xFF ; погасить индикатор

movwf PORTA ;

movlw IKANB

addwf INR,0 ; вычисление косвенного адреса разряда

movwf FSR

movf INDF,0 ; код числа разряда - в W

call Table1

movwf PORTB ; семисегментный код - на индикатор

movf INR,0

call Table2

movwf PORTA ; подсветка разряда

incf INR,1 ;

btfsc INR,H'02' ;

clrf INR ; INR=INR+1

return

;------------------------------------------------------------

Sum

;-производит счет входных импульсов + нормировку для

; обеспечения показаний в оборотах/мин.

; счет ведется в двоично-десятичном коде

; обнуление счетчика при включении и по таймеру после

; считывания результата

bcf STATUS,RP0 ; банк 0

; задание приращения счетчика импульсов

movlw 0x1 ; *!!! в десятичном виде !!!!!!

movwf DOB

; ----------

movlw 0x0F ;

andwf DOB,0 ;

addwf OB0,1 ; добавить младшую тетраду приращения

btfss STATUS,DC ;

goto Metka2 ;--------------------------

movlw 0x06 ;

addwf OB0,1 ; коррекция при переносе из 3 в 4

goto Metka3 ;--------------------

Metka2 movlw 0x06 ; проверка и коррекция

addwf OB0,0 ; недопустимой комбинации

btfss STATUS,DC ; первой тетрады

goto Metka4 ; выход в конец процедуры !!!!!!!

movwf OB0 ;--------------------------

Metka3 ;проверка и коррекция недопустимой комбинации II тетр.

movlw 0x1 ;*

addwf OB0,0 ;

btfss STATUS,C ;

goto Metka4 ; !!!!!!!!!!

movwf OB0

incf OB1,1 ;

; проверка и коррекция I тетрады II байта

movlw 0x06

addwf OB1,0

btfss STATUS,DC

goto Metka4

movwf OB1

; проверка II тетрады

movlw 0x1 ;*

addwf OB1,0

btfss STATUS,C

goto Metka4

movwf OB1

Metka4 ; Добавить старшую тетраду приращения

movlw 0xF0

andwf DOB,0

addwf OB0,1

btfss STATUS,C

goto Metka5

movlw 0x1 ;*

addwf OB0,1

goto Metka6

Metka5

movlw 0x1 ;*

addwf OB0,0

btfss STATUS,C

goto Metka7

movwf OB0

Metka6

incf OB1

movlw 0x06

addwf OB1,0

btfss STATUS,DC

goto Metka7

movwf OB1

movlw 0x1 ;*

addwf OB1,0

btfss STATUS,C

goto Metka7

movwf OB1

Metka7

bcf INTCON,INTF ; сброс флага прерывания

return

;--------------------------------------------------

Taim

; вызывает программу Indic

;-увеличивает содержимое таймера на 1

; следит за реальным временем:

; и вызывает программу Result

call Indic

bcf STATUS,RP0 ; банк 0

incfsz TIM0,1

goto Metka0

incf TIM1,1

Metka0 btfsc TIM1,TIMF

call Result

bcf INTCON,T0IF ; сброс флага прерывания

return

;---------------------------------------------------

Result

;-снимает показания счетчика оборотов,

; записывает результат в буфер индикации

bcf STATUS,RP0 ; банк 0

movlw H'0F'

andwf OB0,0

movwf IR0

swapf OB0,0

andlw 0x0F

movwf IR1

movlw H'0F'

andwf OB1,0

movwf IR2

swapf OB1,0

andlw 0x0F

movwf IR3

; гасит незначащие нули на индикаторе

movf IR3,1

btfss STATUS,Z

goto Metka1

movlw 0x0A

movwf IR3

movf IR2,1

btfss STATUS,Z

goto Metka1

movlw 0x0A

movwf IR2

movf IR1,1

btfss STATUS,Z

goto Metka1

movlw 0x0A

movwf IR1

; обнуляет счетчик оборотов и таймер 1 секунда

Metka1 clrf OB0

clrf OB1

clrf TIM0

clrf TIM1

return

;-----------------------------------------------------

Int

;-начало подпрограммы обработки прерываний-----

;-прерывания возможны от таймера и от входа INT0

;-задача - определить причину прерывания и вызвать

;-соответствующую подпрограмму - Taim или Sum

btfsc INTCON,INTF

call Sum

btfsc INTCON,T0IF

call Taim

retfie

;-------------------------------------------------

Begin

;-----начало основной программы-----------------

; выпоняет начальные установки режимов работы и регистров

; ждет прерывания от таймера и сигнального входа

bcf STATUS,RP0 ; банк 0

; установки портов - индикатор погашен

clrf PORTB

movlw 0xFF

movwf PORTA

; установки режимов работы

bsf STATUS,RP0 ; банк 1

movlw 0x10

movwf TRISA

movlw 0x01

movwf TRISB

; bcf OPTION_REG,PS0 ;

bcf OPTION_REG,PS2 ; коэффициет деления 1:16

bcf OPTION_REG,PSA ; предв. делитель перед TMRO

bcf OPTION_REG,T0CS ; внутреннее тактирование TMRO

;!!!!!!!bcf OPTION_REG,NOT_RBPU ; включить подтяг. рез-ры

bcf STATUS,RP0 ; банк 0

; сброс таймера

clrf TMR0

clrf TIM0

clrf TIM1

; сброс счетчика входных импульсов

clrf OB0

clrf OB1

; сброс буфера индикации

clrf INR

clrf IR0

clrf IR1

clrf IR2

clrf IR3

movlw 0xB0 ; сброс всех флагов прерывания

movwf INTCON ; разрешить прер-я от таймера и входа

;----------------------------------------

Wait goto Wait ; ожидание прерывания

;------------------------------------------------------------

end


Информация о работе «Цифровой тахометр»
Раздел: Коммуникации и связь
Количество знаков с пробелами: 23575
Количество таблиц: 0
Количество изображений: 4

Похожие работы

Скачать
29828
0
9

... кОм. Резистори R8 та R10 служать для узгодження вхідних опорів попереднього пристрою з послідуючим. Обираємо С2-23 - 100 кОм. 5 Розробка алгоритму роботи комп’ютеризованої вимірювальної системи вимірювання залежності кутової швидкості від часу Розробку алгоритмічного та програмного забезпечення при вирішенні подібного типу задач вже можна починати при завершенні розробки фунціональних схем ...

Скачать
83541
16
16

... , КФ1158ЕНхх с малым падением напряжения вход - выход охватывает диапазон выходных напряжений от 3 до 15В. Все стабилизаторы предназначены для широкой области применения и идеально подходят для нужд автомобильной электроники, так как имеют встроенную защиту от выбросов входного напряжения при сбросе нагрузки генератора до 60 В, защиту при подключении входного напряжения в обратной полярности и от ...

Скачать
24153
4
1

... в момент спалаху палива у циліндрі. Третій спосіб передбачає наявність датчика початку впорскування в конструкції ПНВТ та підключенні до нього спеціального електричного блоку. Рис.1. Методи та засоби первинних перевірок режимів та елементів паливної системи дизельного двигуна Максимальні та мінімальні оберти неробочого ходу дизельного двигуна встановлюють за допомогою регулювальних ...

Скачать
60724
2
0

... . Применять меры, обеспечивающие снижение колебания напряжения в электросети 4 При горячей обкатке при полном заглублении электродов реостата в раствор электромашина не развивает тормозной мощности Мала концентрация соды в растворе Увеличить количество соды в растворе до 2-З% Низкая температура Проверить исправность работы регулятора температуры Большой налет соды на электродах ...

0 комментариев


Наверх