Разработка часов на микроконтроллере PIC16F84
Категория реферата: Рефераты по радиоэлектронике
Теги реферата: реферат факторы, конспект изложения
Добавил(а) на сайт: Plemjannikov.
Предыдущая страница реферата | 1 2 3 4 5 | Следующая страница реферата
LIST p=16F84A ; указатель процессора
include org 0x00 ; Вектор сброса
Goto Start
;*************************************************************** org 004 ;Начало процедуры обработки прерывания movwf temp ; Сохранение рабочего регистра W в регистре temp clrwdt ;Очистка сторожевого таймера для
предотврашения call Int1 ; сброса процессора каждый 18мс movlw b'10100000' ; Разрешаем прерывания от таймера movwf INTCON ; movf temp,w ;Востанавливаем значение рабочего регистра clrwdt ;Очистка сторожевого таймера return ;Выход из процедуры обработки прерывания
;**************************************************************** org 0x10 segment ; Таблица преобразования DEC -> семисегментный код.
CLRF PCLATH
ADDWF PCL, F dt 07E, b'00001100', 0B6, 09E, 0CC, 0DA, 0FA, 00E, 0FE, 0DE
Data1 ;*************десятки
CLRF PCLATH
ADDWF PCL, F
;0 1 2 3 4 5 6 7 8 9 dt 0,0,0,0,0,0,0,0,0,0 dt 1,1,1,1,1,1,1,1,1,1 dt 2,2,2,2,2,2,2,2,2,2 dt 3,3,3,3,3,3,3,3,3,3 dt 4,4,4,4,4,4,4,4,4,4 dt 5,5,5,5,5,5,5,5,5,5
Data2 ;***********единицы
CLRF PCLATH
ADDWF PCL, F
;0 1 2 3 4 5 6 7 8 9 dt 0,1,2,3,4,5,6,7,8,9 ;0 dt 0,1,2,3,4,5,6,7,8,9 ;10 dt 0,1,2,3,4,5,6,7,8,9 ;20 dt 0,1,2,3,4,5,6,7,8,9 ;30 dt 0,1,2,3,4,5,6,7,8,9 ;40 dt 0,1,2,3,4,5,6,7,8,9 ;50
; Программные регистры:
skan1 equ 20 ;рег хранения RB1,2 clok1 equ 21 ; хранение часов sek equ 22 ;регистр хранения секунд min equ 23 ;регистр хранения минут cl_k equ 24
Dig_x equ 25 ; Значение X0:00 для индикации.
Dig_y equ 26 ; Значение 0X:00 для индикации.
Dig_z equ 27 ; Значение 00:X0 для индикации.
Dig_exp equ 28 ; Значение 00:0X для индикации.
cnt1 equ 29 ;переменная исп для задержки времени
cnt2 equ 2A ;переменная исп для задержки времени
cnt_r equ 2B ;переменная исп для задержки времени
temp equ 2C
clok2 equ 2D
temp1 equ 2E
n1 equ 2f
n2 equ 30
Start ; Начальная инициализация. clrw bsf STATUS,RP0 ; Обращение к банку 1. clrf PORTA ; Обнулить порт А. clrf PORTB ; Обнулить порт В. movlw b'00010000' movwf TRISA ; RA0 - RA3 выходы, RA4 вход. movlw b'00000001' movwf TRISB ; RB1 - RB7 выходы.RB0 вход movlw b'00000101' ;коэффициен предделителя 64 movwf OPTION_REG bcf STATUS,RP0 ; Обращение к банку 0. movlw b'10100000' movwf INTCON clrf min clrf sek clrf cl_k movlw 0 movwf TMR0 movlw 01 ; Для контроля дисплея movwf Dig_x movlw 02 ; загрузить во все регистры индикации 8. movwf Dig_y movlw 03 movwf Dig_z movlw 04 movwf Dig_exp movlw .131 movwf clok1 movwf TMR0 movlw .1 movwf temp1
Start1 ; Основной цикл программы. movlw 19 ; Установить счетчик циклов индикации. movwf cnt_r
loop1 clrwdt call refresh ;индикаторы. decfsz cnt_r, f goto loop1
;***присвоение значения регистрам индикации в зависимости от режима
;индикации****** clrwdt btfss temp1,0 call Temp_min btfsc temp1,0 call Temp_clk
;******присвоение значения регистрам индикации movf n1,0 call Data1 movwf Dig_x movf n1,0 call Data2 movwf Dig_y movf n2,0 call Data1 movwf Dig_z clrwdt movf n2,0 call Data2 movwf Dig_exp
;********клавишы установки режима индикации и времени******* call Delay btfss PORTA,4 ;сканируем клавишу установки режима RA4 вывод 3 incf temp1,1 ;прибавляем к темпу 1 btfss PORTB,0 ;клавиша установки времени RB0 вывод 6 call Min_clk goto Start1
;************************************************************
Temp_min movf min,0 movwf n1 movf sek,0 movwf n2
return
;************************************************************
Temp_clk movf cl_k,0 movwf n1 movf min,0 movwf n2
return
;****************выбор прибавить минуты(0) или часы(1)***********
Min_clk clrwdt btfss temp1,0 incf min,1 btfsc temp1,0 incf cl_k
;*******проверка 60 мин 24 часа***************** movf min,0 sublw .60 btfsc STATUS,Z clrf min movf cl_k,0 sublw .24 btfsc STATUS,Z clrf cl_k clrwdt
return
Sek ;*****************деление на125 movlw .131 ;записываем 131 т.к 256-125=131 movwf clok1 incfsz sek movf sek,0 sublw .60 btfsc STATUS,Z call Min return
Min clrf sek incfsz min movf min,0 sublw .60 btfsc STATUS,Z call Clok retfie
Clok clrf min incfsz cl_k movf cl_k,0 sublw .24 btfsc STATUS,Z clrf cl_k retfie
Int1 ;процедура обработки прерывания movlw .131 ;записываем 131 т.к 256-125=131 addwf TMR0,1 ;256(максимальное значение таймера) incfsz clok1 ;125(нужный коэффициен деления) return call Sek return
;***********************Вывод на индикатор*************
refresh ; Процедура сканирования индикации. movf Dig_x, W ; Значение деситых.часов для индикации. call segment ; Преобразование DEC -> семисегментный код. movwf PORTB ; Вывод цифры на индикатор. bcf PORTA, 0 ; Активизировать индикатор. call Delay ; Задержка времени для сканирования. bsf PORTA, 0 ; Отключить индикатор.
movf Dig_y, W ; Значение ед.часов для индикации. 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
; ************************************************************
Delay ; Подпрограмма задержки времени clrwdt movlw .5 ; для сканирования индикации. movwf cnt1
nop
beta movlw .150 movwf cnt2
Alfa nop nop
decfsz cnt2, f goto Alfa nop nop decfsz cnt1, f goto beta
nop
return
; *******************************************************
end
5.Программирование микроконтроллера
| Конструкция представляет из себя очень простое и дешевое |
|устройство для программирования и последующего чтения внутренней памяти |
|PIC контроллеров типа PIC16C84 /83, PIC16F84 /83, PIC16CE625 /624/623. В|
|отличие от многих аналогичных конструкций, программатор допускает |
|внутрисхемное программирование. При разработке за основу была взята |
|схема , рекомендуемая фирмой "Microchip" . |
|Программатор питается от источника напряжением 12…13v с током до 100ma и|
|подключается к порту LPT1 персонального компьютера. Управляющая |
|программа разрабатывалась для MS DOS, поэтому при работе в среде |
|«Windows» для соблюдения необходимых временных соотношений при |
|программировании ее необходимо запускать в режиме эмуляции MS DOS. Хотя |
|сама программа прекрасно работает и в оконном режиме, попытка |
|программирования в этом случае ни к чему хорошему не приведет. Алгоритм |
|программирования большинства PIC контроллеров одинаков, поэтому не |
|составит труда расширить их номенклатуру. Интерфейс программы прост и |
|интуитивно понятен. |
Схема электрическая принципиальная приведена на чертеже.Протокол
работы микросхемы при программировании рассмотрен в диаграммых на рисунке
9, вывод данных из микроконтроллера и рисунке 10 ввод данных в
микроконтроллер.
[pic] PIC16F84 может быть запрограммирован в готовом изделии по
последовательному каналу. Это реализовано с помощью двух линий тактового
сигнала и данных, ка также трех других линий: питание , земля, напряжение
программирование . Это позволяет производить платы с незапрограммированными
устройствами и программировать микроконтроллер непосредственно перед
поставкой продукции. Это также позволяет снабжеть устройство самым свежим
программным обеспечением или настраивать программное обеспечение для
кристалла.
Устройство входит в режим программирования Удержанием низкого уровня на выводах RB6, RB7 во время перехода сигнала на выводе MCLR/Vpp из нижнего уровня в высокий. После этого RB6 становится тактовым сигналом, а RB7- данными программирования.
Рекомендуем скачать другие рефераты по теме: доклад по физике, фонды реферат, вулканы доклад.
Предыдущая страница реферата | 1 2 3 4 5 | Следующая страница реферата