Ребята, кто подскажет в чем ошибка в коде программы. Мк 16f873a.
Короче прога меряет (точнее должна мерять) сколько машинных циклов пройдет за время когда на входе portb.4 сменится логическое значение и пускает результат по rs232 на комп. Для замера количества тактов используется таймер TMR1. Вот текст самой проги:
Include "modedefs.bas" ' Описание режимов последовательного порта
INTCON = 0
OPTION_REG = %10000000 'подтягивающие резисторы выключены
t1con = %00000001 'включение модуля tmr1
'----------------Настройки порта B,C -----------------------------
TrisB = %00010000 ' 1 = вход, 0 = выход
portb = %00000000
trisc = %10000000 'на портс.7 вход данных на рс232 (портс.6 - выход)
portc = %00000000
c1 var byte
c2 var byte
t1 var bit 'значение предыдущего состояния входа
c1=0:c2=0
pir1.0 = 0 'обнулен флаг по переполнению таймера TMR1
Begin:
if (portb.4 = 1 and t1 = 0) or (portb.4 = 0 and t1 = 1) then
c1 = tmr1h: c2 = tmr1l 'таймер TMR1 16-рязрядный, поэтому у него 2 регистра tmr1h и tmr1l
tmr1h = 0: tmr1l = 0
serout portc.6, T2400, [c1,c2]
t1 = portb.4
endif
goto Begin
end
Но прога почему-то выдает на комп только нули, но зато только в моменты смены логического уровня на входе portb.4