Здравствуйте! Решил научиться пользоваться таймерами. Пользуясь даташитом на процессор и примерами с форума написал программу. Программа генерирует импульсы на выводе процессора, и при каждом переполнении таймера должно происходить увеличение частоты импульсов. Нчальное значение около 600 Гц, при достижении частоты 2 кГц прерывания останавливаются и процессор продолжает генерировать сигнал 2 кГц. Программа работает, но у меня почему то не получается перед окончанием программы, выполняемой после прерывания, задать начальное значение таймера, перед возвращением к основной программе.
То есть при одой и той же конфигурации настроек таймера нарастание звука от 600 Гц до 2 кГц происходит примерно за 1 секунду (определяю по звуку). При попытке установить начальное значение таймера ожидаемого ускорения нарастания частоты не наблюдается, впечатление такое, что процессор вобще не реагирует на эти значения. Пробовал задавать от нулевых до максимальных, эффекта нет.
Подскажите, в чем может скрываться ошибка?
программа Picbasic Pro.
спасибо
Цитата:
|
@ device pic16F873A, HS_osc, wdt_off
define OSC 20
OPTION_REG = %10100
INTCON = %11100100
PIE1 = %00000001
PIR1 = %00000001
T1CON = %001111
x var word
z var word
clear
On Interrupt Goto TickInterrupt
x = 800
Main:
high portb.0
pauseus x
low portb.0
pauseus x
gosub main
disable
TickInterrupt:
x = x-1
if x = 200 then gosub mains
INTCON.2 = 0
PIR1.0 = 0
tmr1h = 32768
tmr1l = 32768
Resume
enable
disable
mains:
high portb.0
pauseus x
low portb.0
pauseus x
goto mains
|