Пятница, 04.10.2024, 14:15 Приветствую Вас Гость

Автозапуск за 1500р. на ЛЮБОЙ сигнализации?! -> at13.ru

Главная | Регистрация | Вход | RSS

Каталог статей


Простой светофор-мигалка на PIC16F84A
.

Схема пояснений никаких не требует, думаю разберетесь:




Чтобы посмотреть анимацию работы схемы (cимуляцию схемы в программе Proteus) нажмите на ссылку (~1мб.)

Если вам не нравится время задержки свечения светодиодов, вы можете попробовать отредактировать программу:

           LIST    p=16F84 ; PIC16F844 is the target processor

           #include "P16F84.INC" ; Include header file

           CBLOCK 0x10   ; Temporary storage
              state
              l1,l2
           ENDC

           org     0               ; Start up vector.
           goto    setports        ; Go to start up code.

       org     4               ; Interrupt vector.
halt       goto    halt            ; Sit in endless loop and do nothing.

setports   clrw                    ; Zero in to W.
           movwf   PORTA           ; Ensure PORTA is zero before we enable it.
           movwf   PORTB           ; Ensure PORTB is zero before we enable it.
           bsf     STATUS,RP0      ; Select Bank 1
           clrw                    ; Mask for all bits as outputs.
           movwf   TRISB           ; Set TRISB register.
           bcf     STATUS,RP0      ; Reselect Bank 0.

initialise clrw                    ; Initial state.
           movwf   state           ; Set it.

loop       call    getmask         ; Convert state to bitmask.
           movwf   PORTB           ; Write it to port.
           incf    state,W         ; Increment state in to W.
           andlw   0x03            ; Wrap it around.
           movwf   state           ; Put it back in to memory.
           call    wait            ; Wait :-)
           goto    loop            ; And loop :-)

           ; Function to return bitmask for output port for current state.
           ; The top nibble contains the bits for one set of lights and the
           ; lower nibble the bits for the other set. Bit 1 is red, 2 is amber
           ; and bit three is green. Bit four is not used.
getmask    movf    state,W         ; Get state in to W.
           addwf   PCL,F           ; Add offset in W to PCL to calc. goto.
           retlw   0x41            ; state==0 is Green and Red.
           retlw   0x23            ; state==1 is Amber and Red/Amber
           retlw   0x14            ; state==3 is Red   and Green
           retlw   0x32            ; state==4 is Red/Amber and Amber.

           ; Function using two loops to achieve a delay.
wait       movlw   5
           movwf   l1

w1         call    wait2
           decfsz  l1
           goto    w1

           return


wait2      clrf    l2
w2         decfsz  l2
           goto    w2
           return


В архиве ниже имеются файлы проекта, а так же прошивка.

Скачать файлы.
Категория: Световые эффекты | Добавил: Advanced (08.05.2012)
Просмотров: 9251 | Комментарии: 1 | Теги: светофор, мигалка, PIC16F84A | Рейтинг: 5.0/1
Всего комментариев: 1
1 master  
Как то слишком быстро переключаются светодиоды))

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Категории раздела
Источники питания и приборы
Охрана и контроль доступа
Измерительные устройства
Часы, таймеры, счетчики
Световые эффекты
Защита и контроль
Для начинающих
Разное
BASCOM AVR
Информация по МК, FAQ
Поиск
Вход на сайт
Наш опрос
При последовательном соединении резисторов их сопротивление
Всего ответов: 142
Статистика

Онлайн всего: 2
Гостей: 2
Пользователей: 0
Друзья сайта