сколько будет стоить перевести код и бейсика в с++? - вопрос №3087855

  • сколько будет стоить перевести код и бейсика в с++?
  • $regfile = Attiny2313.dat
    $crystal = 4000000 'частота 4 МГЦ

    Dim I As Byte 'проверяем эту переменную на число срабатываний,
    'если равно 2 тогда нагрузку включаем/выключаем

    Dim R As Byte 'инкрементируем переменную в прерывании от компаратора

    Dim A As Word 'переменная которую приравниваем со значением таймера 1

    Dim Fail As Bit 'переменная ошибки, если не равно 0, тогда в сессии
    'произлошла ошибка. Нагрузка переключена не будет

    'конфигурация перефирии

    'настройка таймера1, переполнение будет происходить ~ каждую 1 сек
    Config Timer1 = Timer, Prescale = 64, Capture Edge = Falling

    'настраиваем компаратор на прерывание по нисхдящему фронту
    Config Aci = On, Trigger = Falling

    'настраиваем выход для исполнительного устройство включения/выключения
    Config Portb.2 = Output

    'настраиваем выход для подключения светодиода
    Config Portd.4 = Output

    'настраиваем прерывание INT0, подключается кнопка
    Config Int0 = Falling

    'ссылки на обработчики прерываний
    On Timer1 Res:
    On Aci Comp:
    On Int0 Button:

    'разрешаем все что включили
    Enable Interrupts
    Enable Aci
    Enable Capture1
    Enable Timer1
    Enable Int0

    'останавливаем и сбрасываем таймер
    Stop Timer1
    Timer1 = 0

    Portd.4 = 0 'выставляем на ноге светодиода 0


    Do 'основной цикл программы

    If I = 2 Then

    Disable Interrupts

    Toggle Portb.2

    I = 0

    Reset Portd.4

    Wait 1

    Enable Interrupts

    End If

    Loop

    Comp: 'обработчик прерываний от компаратора

    Acsr.3 = 0 'вырубаем прерывания от компаратора

    If R = 0 Then 'проверяется значение переменной, если значение переменной равно 0,
    'значит это первое срабатывание компаратора

    Incr R 'инкрементируем переменную
    Start Timer1 'запускаем таймер1
    Set Portd.4 'зажигаем светодиод
    Waitms 110 'ждем некоторое время, чтобы не ловить эхо


    Else 'в противном случае (если переменная не равна 0) считаем, что
    'это не первый импульс

    A = Timer1 'присваиваем переменной текущее значение таймера1 (для Т1 от 0 до 65535)

    If A <= 26000 Then 'если значение переменной меньше заданной величины (примерно 400 мс),
    'тогда считаем что пришедший сигнал является шумом

    R = 0 'сбрасываем переменную

    Stop Timer1 'останавливаем таймер
    Timer1 = 0 'сбрасываем таймер в 0
    Reset Portd.4 'гасим светодиод

    Else 'в противном случае, сравниваем переменную с другим значением

    If A > 40000 Then 'если переменная больше заданного значения (примерно 600 мс),
    'считаем что сигнал пришел слишком поздно и он тоже является шумом

    Fail = 1 'ставится флаг ошибки

    Else 'в противном случае (второй сигнал пришел тогда когда нужно)

    Incr R 'увеличиваем значение переменной
    Waitms 110 'ждем чтобы исключить эхо

    End If
    End If
    End If

    Acsr.3 = 1 'снова включаем прерывания от компаратора
    Acsr.4 = 1 'сбрасываем флаг прерывания от компаратора, так как импульс пришедший
    'вслед за предыдущим записывается сюда и как только закончится обработка
    'первого события тут же произойдет обработка второго события, что вызовет ошибку.

    Return 'возращаемся в основной цикл и ждем прерывания от Т1

    Res: 'прерывание от таймера1

    Stop Timer1 'останавливаем таймер
    Timer1 = 0 'сбрасываем значение таймера1 в 0
    Reset Portd.4 'гасим светодиод

    If Fail = 0 Then 'проверка флага ошибки, если ошибки нет тогда
    I = R 'присваиваем переменной значение другой переменной)
    R = 0 'сбрасываем первую переменную в 0

    Else 'иначе, если флаг ошибки > 0

    Fail = 0 'сбрасываем флаг ошибки в 0
    R = 0 'сбрасываем переменную в 0

    End If

    Return


    Button: 'прерывание от кнопки, можем включать/выключать нагрузку кнопкой

    Toggle Portb.2
    Wait 1
    Gifr = 64 'сбрасываем регистр хранения внешнего прерывания INT0
    Return

    End
10.12.18
1 ответ

Ответы

1000р
10.12.18
Посмотреть всех экспертов из раздела Технологии > C/C++
Пользуйтесь нашим приложением Доступно на Google Play Загрузите в App Store