Всем доброго времени суток. Похожая программа у меня написана на асм. Для освоения протона решил написать ее на бейсике. Это привод двигателя постоянного тока. Используются прерывания по входу В0 (привязка к сети) и таймер_1 (задержка включения тиристоров). Для отладки в протеусе использую выходы В1, В2, В7. В протеусе видно, что прерывания по В0 отрабатывают нормально (переключение выхода В1). При обработке этого прерывания в таймер_1 прописывается новое значение и разрешается его работа. При переполнении таймера_1, должно отработать прерывание по таймер_1 и установиться (bits_job.0 = 1). Это разрешит программе двигаться дальше. Для отладки должны установиться в единицу В2, В7, но этого не происходит. Подскажите в чем моя ошибка. Заранее благодарен.
ivan_fd, я с Вами согласен но, в одной книге (очень давно) прочитал о том, что регистр OPTION_REG неустойчив к помехам. Эта программа должна работать в сильных импульсных электромагнитных помехах (сотни А. и выше). Из этих соображений при каждом прерывании проводится проверка и при необходимости правка регистра OPTION_REG. '______________________________________ПРЕРЫВАНИЯ ПО ПОРТУ В.0_________________________________________ ' If INTCON.1 = 1 Then If PORTB.0 = 1 Then OPTION_REG = %10001010: INTCON.1 = 0 Else PORTB.1 = 0 'ДЛЯ ОТЛАДКИ В ПРОТЕУСЕ INTCON.6 = 0: T1CON.0 = 0: PIR1.0 = 0: DelayUS 1 TMR1LH = TIME_XH: TMR1L = TIME_X: INTCON.6 = 1: T1CON.0 = 1: INTCON.1 = 0 'РАЗРЕШИТЬ РАБОТУ ТАЙМЕРУ_1 EndIf EndIf
Сообщение отредактировал
dimitriy-bc - Пт, 15.06.2012, 20:55