'-------------------------- Описание проекта --------------------------------- 'Проект : Программная обработка освещения зеркал в Авто 'Автор : Бросалин Ф А 'Версия : 1.0.0 от 13.05.2013 '-------------------------- Опции компилятора -------------------------------- Declare SHOW_SYSTEM_VARIABLES = OFF ' При симуляции в Proteus не показывать внутренние переменные Declare FSR_CONTEXT_SAVE = OFF ' Не заботиться о сохранении содержимого регистра FSR Declare Reminders = OFF ' Выключить напоминания компилятора Declare Warnings = OFF ' Выключить предупреждения компилятора Declare Optimiser_Level 1 ' Включить оптимизацию программы Declare CCP1_Pin GPIO.2 ; Включаем выход на ШИМ ;-------------------------- Общие настройки------------------------------------ Device = 12F683 ' Используемый микроконтроллер Xtal = 4 ' Частота осциллятора 4 МГц Config WDT_OFF, PWRTE_ON, MCLRE_OFF, INTRC_OSC_NOCLKOUT, CP_OFF, CPD_OFF ; Конфигурация программирования '-------------------------- Настройки портов --------------------------------- PortB_Pullups = OFF ' Выключить подтягивающие резисторы на PORTB Declare All_Digital = On ' Установить все порты цифровыми входами/выходами TRISIO = %111000 ; сделать нужные порты входами и выходами GPIO.0 = 0 ; переводим Порт в 0 Symbol Svet = GPIO.2 ; Обозначаем каждый нужный порт своим именем ( для удобства ) Symbol Sign = GPIO.3 ;--------------------------------------------------- Symbol Dvr = GPIO.4 ;--------------------------------------------------- Symbol ZZ = GPIO.5 ;--------------------------------------------------- Dim S As Byte ; создаём переменную ( Байтовую ) Dim H As Word ; переменная байтовая '-------------------------- Главная программа ------------------------- Main: ; начало программы If Sign = 0 Then GoTo Obr_Sv ; условие,если поступил сигнал от сигнализации DelayMS 1 ; задержка 1 мс GoTo Main ; безусловный переход на начало программы Obr_Sv: ; Метка обработки света For S = 1 To 254 Step 1 ; начало цикла HPWM GPIO.2,S,400 ; включение ШИМ ( плавное ) DelayMS 8 ; задержка 20 мс Next H ; продолжение цикла For H = 1 To 100 Step 1 ;начало цикла HPWM GPIO.2,254,400 ; включение ШИМ на полное заполнение (мощность) If Dvr = 0 Then GoTo Obr_Dvr ; условие и переход на метку Обработки двери If ZZ = 0 Then GoTo Zt_osv ; условие и переход на метку плавного затухания света ; если зажигание включено DelayMS 100 ; задержка 100мс Next H ; продолжение цикла GoTo Zt_osv ; безусловный переход на метку плавного затухания света Zt_osv: ; метка плавного затухания света For S = 254 To 1 Step - 1 ; начало цикла HPWM GPIO.2,S,400 ; в зависимости от переменной S ( заполнение ШИМ ) DelayMS 8 ; задержка 8 мс Next S ; продолжение цикла HPWM GPIO.2,0,0 ; выключить ШИМ GoTo Main ; безусловный переход на начало программы Obr_Dvr: ; метка обработки двери For H = 1 To 40 Step 1 ; начало цикла HPWM GPIO.2,254,400 ; полное заполнение ШИМ ( включён 100% ) DelayMS 500 ; задержка 0,5секунды If Dvr = 1 Then DelayMS 5000:GoTo Zt_osv ; условие и переход на метку плавного затухания света If ZZ = 0 Then GoTo Zt_osv ; условие и переход на метку плавного затухания света Next H ; продолжение цикла GoTo Zt_osv ; безусловный переход на метку плавного затухания света