Помогите Написать Код На Асм.

5-01-2013, 14:13 От: admin Посмотрели: 1033
Доброе время суток жители форума.)

Мне нужна помощь, в универе задали лабараторку заключающаяся в том что бы написать код для мигания диодов на мк pic16f877. Я плохо шарю в написании кода и нужна помощь высших умов.)

Загвоздка в том что надо сделать так что бы 8 диодов было подключено к разным портам 3 к A, 3 к B и 2 к C, и плюс к этому еще и мигал последовательно по 2 диода.

Я попытался что-то как то прогуглить но увы.

Вот код который я склепал:




list p=16F877
#include <p16F77.inc>
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON &_HS_OSC
CBLOCK 0x0C
w_temp,status_temp,tik , scan ; Определяем регистры
scantemp ,CAT_1 , CAT_2 ,CAT_3 ,CAT_4 ; и переменные
ENDC ;
OPTION_SETUP EQU B'00000110' ; Резисторы подтяжки
; включены ,предделитель
; к TMR0 1:16 , приращение
; от внутреннего источника

ORG 0x000 ; Вектор сброса
goto init
ORG 0x004 ; Вектор прерывания
movwf w_temp ; Сохраняем временно
movf STATUS,w ; STATUS регистр и
movwf status_temp ; аккумулятор
INCF tik,f ; Увеличим счетчик
; (пока он считает только
; прерывания)

BCF STATUS, RP0
RLF scan,W ; Движок мультиплексора
BTFSS scan,0 ; индикатора
MOVF CAT_1,W ;
BTFSS scan,1 ;
MOVF CAT_2,W ;
BTFSS scan,2 ;
MOVF CAT_3,W ;
BTFSS scan,3 ;
MOVF CAT_4,W ;
MOVWF scantemp ;
CLRF PORTB ;
RLF scan ;
MOVF scan,W

ANDLW 0FH ; Маскируем 4
MOVWF PORTA ; разряд PORTA для
MOVF scantemp,W ; будущего
MOVWF PORTB ;
MOVWF PORTC
movlw 0XAA ; В TMR0 костанту
movwf TMR0 ; отсчета
bcf INTCON,T0IF ; Сбросим флаг чтобы
; при выходе из прерывания
; сразу же не попасть в него
movf status_temp,w ; Востановим сохраненые нами
movwf STATUS ; регистры и вернемся из
swapf w_temp,f ; прерывания
swapf w_temp,w ;
retfie ;

init

clrf PORTB
clrf PORTA
clrf PORTC ; Очищаем спецрегистры
clrf TMR0 ;
bsf STATUS, RP0 ;
MOVLW OPTION_SETUP ;
movwf OPTION_REG ;
movlw B'00011111' ; и делаем все биты PORTB
movwf TRISB ; выходами

movlw B'00111111' ; биты 0-4 PORTC выходы
movwf TRISC ;
movlw B'11111000' ; биты 0-4 PORTC выходы
movwf TRISA
bcf STATUS, RP0 ;
clrf INTCON ;
movlw 0x0C ;
movwf FSR ;
clear_mem
; Чистим регистры
clrf INDF ; пользователя
incf FSR, F ;
btfss FSR, 6 ;
goto clear_mem ;
clrf FSR ;
movlw 0EEh ; Грузим в scan
MOVWF scan ; первоначальное состояние
movwf PORTA ; катодов индикатора
movlw 0XAA ; В TMR0 точку отсчета
movwf TMR0 ;
movlw b'10100000' ; Разрешаем прерывания
movwf INTCON ; от TMR0 и общее
GOTO MAIN ; и переходим на основной цикл
MAIN
movlw b'11000000';0x03 ; грузим значения для индикаторов
movwf CAT_1 ; и зацикливаемся навсегда
movlw b'00110000';0X0C
movwf CAT_2
movlw b'00001100';0X30
movwf CAT_3
movlw b'00000011';0xC0
movwf CAT_4

LOOP NOP
NOP
GOTO LOOP
END

вот еще файлы в мплаб и схема в протеусе: Прикрепленный файл
 3.rar   49 Кб
  31 раз скачано





Буду очень благодарен если кто-то откликнется и объяснит мне что надо исправить и что дописать в коде.
Раздел: МК для начинающих

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться, либо войти на сайт под своим именем.

Обсудить на форуме


На момент добавления Помогите Написать Код На Асм. все ссылки были рабочие.
Все публикации статей, книг и журналов, представлены на этом сайте, исключительно для ознакомления,
авторские права на эти публикации принадлежат авторам статей, книг и издательствам журналов!
Подробно тут | Жалоба

Добавление комментария

Ваше имя:*
E-Mail:*
Текст:
Вопрос:
Решите уравнения x+2x=789
Ответ:*
Введите два слова, показанных на изображении:



Опрос

Ваши предпочтения в TRX


Одинарное преобразование
Двойное преобразование
Прямое преобразование
SDR
Другое
Мне всё равно

Календарь новостей
«    Апрель 2024    »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930