MicroCHIP.RU
Главная Документация Отладочные средства Справочник Поиск Ссылки Цены
 Новости   Конференция   Как нас найти? 

Представляем новую линейку продуктов, поставляемых ООО "Микро-Чип":
Источники питания

Блоки  питания


 

Помогите разобраться с таймером

 Нoвaя темa  |  Наверх  |  Перейти к теме  |  Поиск  |  Правила  |  Вход 

ВНИМАНИЕ!
Вы просматриваете архив форума.

Этот форум работает только в режиме просмотра и поиска.

Действующий форум переведен на новый движок и
находится по адресу www.microchip.su

 Помогите разобраться с таймером
Автор: Hell (---.sao.ru)
Дата:   24/08/2006 09:26

На контроллер PIC16F870 подается частота с кварца 3.6864. Мне необходимо преобразовать ее в 9.6 кГц и
выдать ее на пятую ножку, т.е через 3-й бит регистра PORTA. Не могу понять, как организовать передачу не
ножку.


 
 Re: Помогите разобраться с таймером
Автор: Example626 (---.internet2.ru)
Дата:   24/08/2006 09:30

А прерывание по переполнению таймера?


 
 Re: Помогите разобраться с таймером
Автор: Hell (---.sao.ru)
Дата:   24/08/2006 09:32

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


 
 Что-то с кодом.
Автор: Example626 (---.internet2.ru)
Дата:   24/08/2006 09:41

По переполнению таймера программа переходит по адресу 0004. Если у Вас здесь
находится основная программа, то её оттуда нужно переместить.
            org         00000h
            goto        begin

            org         00004h

interrupt   (Ваша подпрограмма обработки прерываний)
            retfie

begin       (Ваша программа)

            end



 
 Re: Что-то с кодом.
Автор: Hell (---.sao.ru)
Дата:   24/08/2006 09:48

Спасибо, сейчас попробую...


 
 Re: Помогите разобраться с таймером
Автор: Yuris (---.82.209.208.198.telecom.gomel.by)
Дата:   24/08/2006 10:06

А по адресу 0004 что записано?

Извините, что без скандала


 
 Re: Что-то с кодом.
Автор: Example626 (---.internet2.ru)
Дата:   24/08/2006 10:14

Тут поподробней, но набросал второпях, ухожу на работу. Возможны ошибки, нет
комментариев, извините. Программа ничего не делает, только выводит сигнал с
частотой 9600 Гц на RA3. Однако, если эта частота должна быть очень точной, следует
учесть, что таймер не инкрементируется следующие два цикла после записи в timer0.


            processor   16F870

            org         00000h
            goto begin

            org         00004h
interrupt   movwf       w_tmp
            movf        status,w
            movwf       stat_tmp
            banksel     0
            movlw       0d2h
            movwf       timer0
            movlw       b'00001000'
            xorwf       porta,f
            movf        stat_tmp,0
            movwf       status
            movf        w_tmp,w
            bcf         intcon,rtif
            retfie

begin       banksel     1
            movlw       b'11110111'
            movwf       trisa
            movlw       b'00001000'
            movwf       option_reg
            banksel     0
            clrf        timer0
            movlw       b'10100000'
            movwf       intcon

loop        goto        loop

            end




Отправка отредактированного (24/08/2006 10:19)


 
 Re: Помогите разобраться с таймером
Автор: Sergius (---.aaanet.ru)
Дата:   24/08/2006 10:16

А адрес 0004 - это адрес вектора прерываний. При возникновении любого разрешенного
прерывания, программа переходит на выполнение комманд, расположенных по этому
адресу. Выполнение идет до тех пор, пока не будет комманды retfie - выход из
обработки прерываний. Счетчик комманд будет указывать на адрес комманды
следующей за той, после которой контроллер ушел на обработку прерывания и после
retfie контроллер возьмется зы выполнение этой комманды.


 
 Спасибо
Автор: Hell (---.sao.ru)
Дата:   24/08/2006 10:18

-





Горячие темы на нашем форуме:
Отдел продаж: тел. (495) 223-2339 sales@microchip.ru   Skype:microchip-moscow
Rambler's Top100