AFON // радиотехник affonya@mail.ru
← Проекты на PIC

Проект 08. Генератор меандра 1 кГц

Программный генератор прямоугольного сигнала. Проект учит считать время в машинных циклах — навык, без которого невозможны точные задержки и протоколы обмена.

Задача

Сформировать на выводе прямоугольный сигнал частотой около 1 кГц.

Микроконтроллер: PIC16F84A, кварц 4 МГц. Среда: MPLAB X + MPASM (или любой совместимый ассемблер). Как настроить среду и прошить контроллер — в статье программирование PIC.

Что понадобится

  • PIC16F84A
  • кварц 4 МГц + 2×22 пФ
  • резистор 10 кОм
  • осциллограф или пьезоизлучатель для проверки

Схема подключения

ВыводПодключение
RB0выход сигнала (на осциллограф или пьезоизлучатель)
MCLRчерез 10 кОм на +5 В

Алгоритм

  1. Установить высокий уровень на RB0.
  2. Выдержать паузу в половину периода — 500 мкс.
  3. Установить низкий уровень и выдержать такую же паузу.
  4. Повторять бесконечно.

Листинг на ассемблере

Код проверен ассемблером и собирается без ошибок. Скачать: p08.asm · p08.hex (готовая прошивка).

;=======================================================
; Проект 08. Генератор меандра ~1 кГц на RB0
; PIC16F84A, 4 МГц (1 команда = 1 мкс). Полупериод 500 мкс
;=======================================================
        LIST    p=16F84A
        #include <p16f84a.inc>
        __CONFIG _XT_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF

        cblock  0x0C
        cnt
        endc

        ORG     0x000
        goto    Start

Start
        bsf     STATUS,RP0
        clrf    TRISB
        bcf     STATUS,RP0

Main
        bsf     PORTB,0
        call    Half            ; пауза 500 мкс
        bcf     PORTB,0
        call    Half
        goto    Main

;--- ~500 мкс: 165 витков по 3 такта ---
Half
        movlw   .165
        movwf   cnt
HL      nop
        decfsz  cnt,f
        goto    HL
        return

        END

Пояснения

  • При кварце 4 МГц машинный цикл равен 1 мкс: частота делится на 4, а большинство команд выполняется за один цикл.
  • Тело цикла задержки занимает 3 цикла (nop + decfsz + goto), поэтому 165 витков дают примерно 500 мкс.
  • Точную частоту удобно проверить осциллографом, а пересчитать период и частоту — в калькуляторе.

Что дальше

Разобравшись с этим проектом, переходите к следующему в разделе проекты на PIC. Справочник по архитектуре и периферии контроллеров — на странице микроконтроллеры PIC.