рефераты рефераты
Главная страница > Дипломная работа: Разработка PIC-контроллера устройства измерения временных величин сигналов  
Дипломная работа: Разработка PIC-контроллера устройства измерения временных величин сигналов
Главная страница
Банковское дело
Безопасность жизнедеятельности
Биология
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
География экономическая география
Геодезия
Геология
Госслужба
Гражданский процесс
Гражданское право
Иностранные языки лингвистика
Искусство
Историческая личность
История
История государства и права
История отечественного государства и права
История политичиских учений
История техники
История экономических учений
Биографии
Биология и химия
Издательское дело и полиграфия
Исторические личности
Краткое содержание произведений
Новейшая история политология
Остальные рефераты
Промышленность производство
психология педагогика
Коммуникации связь цифровые приборы и радиоэлектроника
Краеведение и этнография
Кулинария и продукты питания
Культура и искусство
Литература
Маркетинг реклама и торговля
Математика
Медицина
Реклама
Физика
Финансы
Химия
Экономическая теория
Юриспруденция
Юридическая наука
Компьютерные науки
Финансовые науки
Управленческие науки
Информатика программирование
Экономика
Архитектура
Банковское дело
Биржевое дело
Бухгалтерский учет и аудит
Валютные отношения
География
Кредитование
Инвестиции
Информатика
Кибернетика
Косметология
Наука и техника
Маркетинг
Культура и искусство
Менеджмент
Металлургия
Налогообложение
Предпринимательство
Радиоэлектроника
Страхование
Строительство
Схемотехника
Таможенная система
Сочинения по литературе и русскому языку
Теория организация
Теплотехника
Туризм
Управление
Форма поиска
Авторизация




 
Статистика
рефераты
Последние новости

Дипломная работа: Разработка PIC-контроллера устройства измерения временных величин сигналов

Мнемокод Название команды
CALL k Вызов подпрограммы
CLRWDT Сброс Watchdog таймера
GOTO k Переход по адресу
RETLW k Возврат из подпрограммы с загрузкой константы в W
RETFIE Возврат из прерывания
RETURN Возврат из подпрограммы
SLEEP Переход в режим SLEEP

1.4.2 Программа PIC-контроллерного устройства измерения временных велечин сигналов

Начальная инициализация

START

clrf port а            ; Обнулить порт А.

clrf portb                       ; Обнулить порт В.

bsf status,5          ; Обращение к банку 1.

movlw 27            ; Синхронизация таймера 0 по заднему фронту

                            внешних тактов, включение таймера.

movwf option_reg

movlw 10

movwf trisa                   ; RAO - RA3 выходы, RA4 вход.

clrf trisb               ; RBO - RB7 выходы.

bcf status, 5                  ; Обращение к банку 0.

movlw 08            ; Для контроля дисплея

movwf Dig_x       ; Загрузить во все регистры индикации 8.

MovwfDig_y

movwfDig_z

movwfDig_exp

Основной цикл программы

movlw 0A            ; Установить счетчик циклов индикации.

movwf cnt_r

loop1          call refresh           ; Вывод на индиторы.

                   decfsz cnt_r, f

                   goto loop1

loop5          clrf tmr0                        ; Сброс таймера.

bsf status, 5                  ; Обращение к банку 1.

movlw 0001                  ; Разрешить прохождение внешних тактов на

                                               вход таймера, RBO вход.

movwf trisb

bcf status,5          ; Обращение к банку 0.

movlw .199                   ; 1 мс ожидания для измерения

                                               высокочастотных сигналов.

movwf cnt1

in_ms         nор

                   clrwdt

                   decfsz cntl, f

goto in_ms

bsf status, 5                  ; Обращение к банку 1.

clrf trisb                                  ; Заблокировать прохождение внешних тактов

                                      на вход таймера, RBO выход.

bcf status, 5                  ; Обращение к банку 0.

call prescaler        ; Считать накопленное значение таймера.

movf H_byte, f

btfss status,2                 ; Старший байт значения таймера = 0?

goto call_ms                  ; Нет, переход на обработку.

btfsc L_byte,7               ; Старший разряд младшего байта значения=0?

goto call_ms                  ; Нет, переход на обработку.

clrf tmr0                                           ; Сброс таймера.

bsf status,5          ; Обращение к банку 1.

movlw 01                      ; Разрешить прохождение внешних тактов на

                                                        вход.

movwf trisb                  ; таймера, RBO вход.

bcf status,5          ; Обращение к банку 0.

nор                                         ; 0.5 с ожидания для измерения низкочастотных сигналов.

nор

movlw 0A                     ; Установить счетчик циклов индикации.

movwf cnt_r

loopr          call refresh                   ; Вывод на индикацию.

decfsz cnt_r, f

goto loopr

nор

nор

nор

bsf status,5          ; Обращение к банку 1.

clrf trisb                                           ; Заблокировать прохождение внешних тактов

                                      на вход таймера, RBO выход.

bcf status,5          ; Обращение к банку 0.

call prescaler                 ; Считать накопленное значение таймера.

movf H_byte, f

btfss status,2                 ; Старший байт значения таймера = 0?

goto cal05                     ; Нет, переход на обработку.

btfsc L_byte,7               ; Старший разряд младшего байта значения=0?

goto cal05                     ; Нет, переход на обработку.

clrf Dig x                       ; Да, обнулить текущее значение индикации.

clrf Dig_y

clrf Dig_z

clrf Dig_exp

goto loop5                    ; Переход на начало основного цикла.

Обработка измерения высокочастотных сигналов.

                   call_msclrf U                 ; Очистка десятичных регистров.

clrf D clrf H

clrf M

clrf DM

clrf CM

movlw 03                      ; Коррекция порядка результата для

                                      высокочастотных сигналов.

movwf Dig_exp

call segment                  ; Преобразование DEC в семисегментный код.

movwf portb       ; Вывод цифры на индикатор.

bcf porta,1           ; Активизировать индикатор.

call Delay                      ; Задержка времени для сканирования.

bsf porta, 1          ; Отключить индикатор.

movf Dig_z, W              ; Значение сотых для индикации.

call segment                  ; Преобразование DEC в семисегментный код.

movwf portb       ; Вывод цифры на индикатор.

bcf porta,2           ; Активизировать индикатор.

call Delay                               ; Задержка времени для сканирования.

bsf porta,2           ; Отключить индикатор.

movf Dig_exp, W         ; Значение порядка результата для индикации.

call segment                  ; Преобразование DEC в семисегментный код.

movwf portb       ; Вывод цифры на индикатор.

bcf porta,3           ; Активизировать индикатор.

call Delay                               ; Задержка времени для сканирования.

bsf porta, 3          ; Отключить индикатор.

return

prescaler                                 ; Считать накопленное значение таймера.

movf tmr0, W              

movwf H_byte              ; Сохранить значение таймера 0.

Извлечение значения предделителя TMR00.

clrf N                                      ; Обнулить счетчик.

cicl              bcf portb,0                    ; Сформировать тактовый импульс на входе

синхронизации таймера.

bsf portb,0

bcf portb,0

incf N, f                                  ; Инкремент счетчика.

movf H_byte, W

xonvf tmrO, W             ; Значение таймера 0 изменилось? btfsc status,2

goto cicl                                  ; Нет, повторить цикл.

movlw 00FF

movwf L_byte

movf N, W

subwf L_byte, f   ; Получить и сохранить значение

предделителя.

incf L_byte, f

return

calc                                         ; Преобразование формата: HEX в DEC.

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

movwf N

coder

rlf L_byte, f                   ; Сдвиг старшего разряда значения таймера в

бит С.

rlf H_byte, f

btfsc status,0                 ; Бит С = 1?

call sessn                                ; Да, прибавить десятичное значение разряда к десятичным регистрам.

decfsz N, f                     ; Декремент счетчика разрядов.

goto coder                              ; Продолжить преобразование.

call report                     ; Коррекция значений десятичных регистров.

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18

рефераты
Новости