'-------------------------- Описание проекта --------------------------------- 'Проект : Dov_4 'Автор : Бросалин Фёдор ' 'Версия : 1.0.0 от 20.05.2011 ' '-------------------------- Опции компилятора -------------------------------- Declare SHOW_SYSTEM_VARIABLES = OFF ' При симуляции в Proteus не показывать внутренние переменные Declare FSR_CONTEXT_SAVE = OFF ' Не заботиться о сохранении содержимого регистра FSR Declare Reminders = OFF ' Выключить напоминания компилятора Declare Warnings = OFF ' Выключить предупреждения компилятора Declare Optimiser_Level 1 ' Включить оптимизацию программы ;-------------------------- Общие настройки------------------------------------ Device = 16F628A ' Используемый микроконтроллер Xtal = 4 ' Частота осциллятора 4 МГц '-------------------------- Конфигурация программирования -------------------- Config BODEN_OFF, BOREN_OFF, PWRTE_ON, WDT_OFF, LVP_OFF, MCLRE_ON, INTRC_OSC_CLKOUT '-------------------------- Настройки портов --------------------------------- PortB_Pullups = On ' Включить подтягивающие резисторы на PORTB Declare All_Digital = On ' Установить все порты цифровыми входами/выходами TRISA = %11100000 TRISB = %00001111 PORTB.7 = 0 OPTION_REG.6 = 0 '-------------------------- INTCON -------------------------------------------- Symbol RBIF = INTCON.0 ' Флаг внешнего прерывания по PORTB.4-PORTB.7 Symbol INTF = INTCON.1 ' Флаг внешнего прерывания по PORTB.0(INT) Symbol T0IF = INTCON.2 ' Флаг переполнения TMR0 Symbol RBIE = INTCON.3 ' Бит разрешения прерывания по PORTB.4-PORTB.7 Symbol INTE = INTCON.4 ' Бит разрешения прерывания по PORTB.0(INT) Symbol T0IE = INTCON.5 ' Бит разрешения прерывания по переполнению TMR0 Symbol PEIE = INTCON.6 ' Бит разрешения прерывания от периферийных устройств Symbol GIE = INTCON.7 ' Бит глобального разрешения прерываний GIE = 1 ' Разрешение глобального прерывания INTE = 1 '-------------------------- Определение переменных --------------------------- Dim J As Word Dim H As Byte '-------------------------- Определение символов ----------------------------- Symbol V_1 = PORTA.0 выхода моторов Symbol V_2 = PORTA.1 Symbol V_3 = PORTA.2 Symbol V_4 = PORTA.3 Symbol T_OFF = PORTB.1 защита по току Symbol Sign = PORTB.2 Сигнализация Symbol Dvr = PORTB.0 Двери Symbol Svet = PORTB.7 Выход освещение салона! '-------------------------- Прерывания-------------------------- On_Interrupt GoTo Pr1 GoTo Main Disable Pr1: Context Save ' If Dvr = 0 Then Svet = 1:GoTo Timer8 If Dvr = 1 Then Svet = 1 DelayMS 3000 Svet = 0 INTF = 0 Enable Context Restore ' Возврат из обработчика прерывания '-------------------------- Главная программа ------------------------- Main: If Sign = 0 Then GoTo Zakr1 GoTo Main ' Возврат на начало основной программы Zakr1: For J = 0 To 100 Step 1 V_1 = 1 DelayMS 100 If T_OFF = 1 Then V_1 = 0 :GoTo Zakr2 Next J V_1 = 0 GoTo Zakr2 Zakr2: DelayMS 500 For J = 0 To 100 Step 1 V_2 = 1 DelayMS 100 If T_OFF = 1 Then V_2 = 0 :GoTo Zakr3 Next J V_2 = 0 GoTo Zakr3 Zakr3: DelayMS 500 For J = 0 To 100 Step 1 V_3 = 1 DelayMS 100 If T_OFF = 1 Then V_3 = 0 :GoTo Zakr4 Next J V_3 = 0 GoTo Zakr4 Zakr4: DelayMS 500 For J = 0 To 100 Step 1 V_4 = 1 DelayMS 100 If T_OFF = 1 Then V_4 = 0 :GoTo Main Next J V_4 = 0 GoTo Main Timer8: For H = 0 To 200 Step 1 If Dvr = 1 Then DelayMS 3000:Svet = 0:INTF = 0:Context Restore DelayMS 2000 Next H INTF = 0 Enable Context Restore