реклама на сайте
подробности

 
 
> Вопросы по PIC16, Вопросы по программированию микроконтроллеров PIC16
asp
сообщение Jan 13 2006, 07:47
Сообщение #1


Частый гость
**

Группа: Validating
Сообщений: 103
Регистрация: 4-07-05
Пользователь №: 6 490



Добрый день!

Помогите разобраться:

Собрал простую схему на PIC16F84A, которая должна иметь три состояния:
ожидания WITE, START и STOP.
Светодиоды подключены к вывоводам RA0 и RA1
WITE - светятся два светодиода (HL2 и HL3)
START - гаснет светодиод HL2
STOP - гаснет светодиод HL3

и до нажатия REZET схема должна находится в таком состоянии, но увы светодиоды гаснут только на время присутсвия сигнала, после снятия сигнала они вновь загораются.

Ниже исходный текст подскажите где я торможу :-)

При компиляции программы МПлаб выдает:
(причем если установить в качестве девайса PIC16F84 а не PIC16F84A, такого сообщения не появляется)

Message[302] C:\NEW_DOC\EMB\NEW\SWITCH.ASM 97 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] C:\NEW_DOC\EMB\NEW\SWITCH.ASM 107 : Register in operand not in bank 0. Ensure that bank bits are correct.
Loaded C:\New_doc\emb\NEW\switch.COD.
BUILD SUCCEEDED: Thu Jan 12 21:44:02 2006



LIST P=PIC16F84A ; list directive to define processor
#include <p16F84A.inc> ; processor specific variable definitions

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_OFF & _HS_OSC

; '__CONFIG' directive is used to embed configuration data within .asm file.
; The lables following the directive are located in the respective .inc file.
; See respective data sheet for additional information on configuration word.

TRISA EQU H'0085'
TRISB EQU H'0086'

DELAY_VAR EQU 0Eh ; переменная для хранения значения
; задержки




;**********************************************************************
ORG 0

goto start ; go to beginning of program



;------------------------------------------------------------------------------
SCAN ; подпрограмма сканирования порта
SCAN_1 BTFSC PORTB, 7 ; проверить состояние бита 0 PORTB
; пропустить если 7
GOTO SCAN_1 ; перейти на метку SCAN
BTFSC PORTB, 7 ; проверить состояние бита 7 PORTB
; пропустить если 0
GOTO SCAN_1 ; перейти на метку SCAN
BTFSC PORTB, 7 ; проверить состояние бита 7 PORTB
; пропустить если 0
GOTO SCAN_1 ; перейти на метку SCAN
RETURN
;------------------------------------------------------------------------------
DELAY ; подпрограмма задержки
MOVLW .2 ; загрузка в рабочий регистр числа 25
MOVWF DELAY_VAR ; загрузка в переменную числа 25 из регистра
DELAY_1 DECFSZ DELAY_VAR, 1 ; вычесть 1 из переменной, пропустить если 0
GOTO DELAY_1 ; перейти на метку DELAY_1
RETURN
;-----------------------------------------------------------------------------

start
CLRF PORTA ; очистить порт А
BSF STATUS, RP0 ; включаем первый банк памяти
MOVLW b'00010000' ; загрузка в рабочий регистр слова инициализации
; регистра А
MOVWF TRISA ; разряды RA0-RA3 порта А настроены на вывод,
; RA4 на вход, остальные не задействованы
; (игнорируются)
BCF STATUS,RP0 ; переходим в нулевой банк памяти

CLRF PORTB ; очистить порт B
BSF STATUS,RP0 ; включаем первый банк памяти
NOP
MOVLW b'11111111' ; загрузка в рабочий регистр слова инициализации
; регистра В
MOVWF TRISB ; разряды RB0-RB7 порта B настроены на вход,
; RB0-RB6 не задействованы (необходимо заземлить)

BCF STATUS,RP0 ; переходим в нулевой банк памяти




MOVLW b'00000000' ; загружаем в рабочий регистр слово инициализации
; состояния порта A в состояние WITE
MOVWF PORTA ; пересылка из рабочего регистра в порт А
;------------------------------------------------------------------------------
CALL SCAN ; вызов подпрограммы SCAN
MOVLW b'00000001' ; загружаем в рабочий регистр слово инициализации
MOVWF PORTA ; пересылка из рабочего регистра в порт А
;------------------------------------------------------------------------------

CALL DELAY ; вызов подпрограммы задержки
-------------------------------------------------------------------------------
CALL SCAN ; вызов подпрограммы SCAN
MOVLW b'00000011' ; загружаем в рабочий регистр слово инициализации
MOVWF PORTA ; пересылка из рабочего регистра в порт А


END ; directive 'end of program'
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 09:18
Рейтинг@Mail.ru


Страница сгенерированна за 0.01349 секунд с 7
ELECTRONIX ©2004-2016