'-------------------------- Описание проекта --------------------------------- 'Проект : My_Project 'Автор : 'Версия : 1.0.0 от 30.09.2012 '-------------------------- Опции компилятора -------------------------------- Declare SHOW_SYSTEM_VARIABLES = OFF ' При симуляции в Proteus не показывать внутренние переменные Declare FSR_CONTEXT_SAVE = OFF ' Не заботиться о сохранении содержимого регистра FSR Declare Reminders = OFF ' Выключить напоминания компилятора Declare Warnings = OFF ' Выключить предупреждения компилятора Declare Optimiser_Level 0 ' Выключить оптимизацию программы ;-------------------------- Общие настройки------------------------------------ Device = 16F628A ' Используемый микроконтроллер Xtal = 4 ' Частота осциллятора 4 МГц '-------------------------- Конфигурация программирования -------------------- Config WDT_OFF, LVP_OFF, MCLRE_OFF, INTOSC_OSC_NOCLKOUT '-------------------------- Настройки портов --------------------------------- PortB_Pullups = OFF ' Выключить подтягивающие резисторы на PORTB Declare All_Digital = On ' Установить все порты цифровыми входами/выходами '-------------------------- Регистры специального назначения------------------ '-------------------------- Определение переменных --------------------------- Dim w As Byte Dim X As Byte Dim Hag As Word Dim Hag_in As Word Dim StepN As Byte ' номер шага Dim Polarity As Bit ' полярность вращения '-------------------------- Определение символов ----------------------------- Symbol BIT5 = PORTB.5 Symbol BIT6 = PORTB.6 Symbol BIT7 = PORTB.7 Symbol BIT4 = PORTB.4 '-------------------------- Начало ------------------------------------------- TRISB=%00000000 PORTB=%00000000 '-------------------------- Главная программа ------------------------- Clear BIT4=0:BIT5=0:BIT6=0:BIT7=0 DelayMS 1000 MainProgram: Inc w ' ======== DelayMS 500 ' If w=1 Then Hag_in=100:Polarity=0: GoTo Step_change ' ' If w=2 Then Hag_in=12:Polarity=0: GoTo Step_change ' ' для пробы задаем последовательность шагов If w=3 Then Hag_in=12:Polarity=1: GoTo Step_change ' и направление вращения ' If w=4 Then Hag_in=100:Polarity=1: GoTo Step_change ' ' If w=5 Then w=0: GoTo End_HAG ' ========= ' паузы выставлены для нагладности Step_change: If Hag=Hag_in Then GoTo End_HAG Select StepN Case 0 BIT4=1:BIT5=0:BIT6=0:BIT7=0 ' шаг 0 Case 1 BIT4=0:BIT5=1:BIT6=0:BIT7=0 ' шаг 1 Case 2 BIT4=0:BIT5=0:BIT6=1:BIT7=0 ' шаг 2 Case 3 BIT4=0:BIT5=0:BIT6=0:BIT7=1 ' шаг 3 End Select Inc Hag 'If Hag<>Hag_in Then ' запрет на изменение номера шага если значение уже уравнялись If Polarity=1 Then ' в зависимости от полярности Inc StepN ' +1 к номеру шага If StepN >=4 Then ' если 4 и больше StepN =0 ' то номер шага 0 End If Else Dec StepN ' -1 к номеру шага If StepN >=254 Then ' если больше 254 StepN =3 ' то номер шага 3 End If End If 'End If DelayMS 250 GoTo Step_change End_HAG: Hag=0 BIT4=0:BIT5=0:BIT6=0:BIT7=0 DelayMS 200 GoTo MainProgram