tmr0 в 16F84A

D

daniel2004

Guest
Привет я немой вопрос, я думаю, что я что-то очень отсутствуют основные здесь.

Я наклоняю кажется, что получить TMR0 к приросту MPLAB, и я не думаю, что она работает в ПОС либо.Сначала я настройка Option_Reg и установить T0CS, с тем чтобы включить таймер Off.Когда я хочу таймер для подсчета я четко T0CS поэтому таймера будет прирост от внутренних часов.Это dosnt произойдет.По моим чтением Data Sheet Таймер должна прирост в этом режиме, ни на что.Я проверил в MPLAB, что все биты определены и очищены, как они должны быть, по-прежнему не везет.Я надеюсь, кто-то здесь могли бы пролить некоторый свет на это.

Спасибо
Даниэль

# определить процессор 16F84A

LIST P = 16F84A;, F = INHX8M
# включить <P16F84A.inc>

__CONFIG _CP_OFF & _PWRTE_OFF & _WDT_OFF & _HS_OSC;************************************************* ***********
, Память приравнивает
;************************************************* ***********

W_Temp EQU 0x20
STATUS_Temp EQU 0x21
Задержки EQU 0x22

;************************************************* ***********
; Сброс и векторы прерываний

ORG 0x0000; Сбросить Векторная
GOTO Начало

ORG 0x0004; вектор прерывания
GOTO IntVector

;************************************************* ***********
, Программа начинается здесь

ORG 0x005
Начало
BSF STATUS, RP0
MOVLW h'FF '
MOVWF TRISA
CLRF TRISB
BSF TRISB, 7
BSF TRISB, 6

BSF OPTION_REG, T0CS; Timer0 не работает
BSF OPTION_REG, T0SE; Rising край
КБК OPTION_REG, СРП; использовать для tmr0 предделитель
BSF OPTION_REG, PS2 Максимально предделитель
BSF OPTION_REG, PS1
BSF OPTION_REG, PS0
CLRF INTCON; Начало свежие
КБК INTCON, T0IE; Включите прерывания TMR0
КБК INTCON, T0IF; Открытый TMR0 флаг
BCF STATUS, RP0; Bank0
CLRF TMR0
BSF INTCON, GIE
Главное GOTO

Главный
; BTFSS PORTA, 1
; GOTO Главные
CLRF PORTB
BSF PORTB, 0
BSF STATUS, RP0
КБК OPTION_REG, T0CS; Начало TMR0
BCF STATUS, RP0
MOVF Delay, W
SUBLW d'76 '
BTFSS STATUS, Z
GOTO
BSF STATUS, RP0
BSF OPTION_REG, T0CS; Остановка TMR0
BCF STATUS, RP0
CLRF TMR0
BSF PORTB, 1
; GOTO Главные

Main_a
GOTO Main_a

IntVector
BSF PORTB, 3
MOVWF W_Temp; Копия З TEMP зарегистрироваться
SWAPF STATUS, W; Swap статус сохраняется в W
CLRF СТАТУС; Банк 0, независимо от текущего банка, очищает ПИВТ RP1, RP0
MOVWF STATUS_Temp, сохранять статус банка нуля STATUS_TEMP зарегистрироваться

Задержки INCF
CLRF TMR0
КБК INTCON, T0IF

SWAPF STATUS_Temp, W; Swap STATUS_TEMP регистра в W
; (устанавливает банк исходное состояние)
MOVWF СТАТУС; Переместить W в регистр состояния
SWAPF W_Temp, F; Swap W_TEMP
SWAPF W_Temp, W; Swap W_TEMP в W
RETFIE

конец

 
Привет,

Я не прошли через ваш код, как это почти 4 утра, где я,
Но есть сведения в таблицу 16F84A в которой говорится:

"Ввод в TMR0 когда это предделитель
Assigned To Timer0 будет снимать предделитель
кол-во, но не будет менять делитель
задание. "(стр. 19)

Может быть, вы сбрасываете ваше кол-во все это время?

Спокойной ночи ...
/ Rambo

 
Хай
Также проверьте, погода Timer0 рассчитывает внутренних часов или внешнего импульса от его ввод PIN-кода.это probabile вещь.
Picstudent

 

Welcome to EDABoard.com

Sponsor

Back
Top