[SU.HARDW.CHAINIK] Вопросы про камушек PIC18F452

Может, хоть здесь мне помогут ? :)

─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─ √ Форвард произведен *Vadim Tzirulnicov* (2:5020/2584.10)

*■* _/·Area·/_ : SU.HARDW.CHAINIK (SU.HARDW.CHAINIK) *■* _/·From·/_ : Vadim Tzirulnicov, 2:5020/2584.10@fidonet _(13 Июн 04 18:44)_ *■* _/·∙To∙·/_ : All *■* _/·Subj·/_ : Вопросы про камушек PIC18F452 ─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─

----- Приветствую, _All_ ! -----

Hаписал я программку, которая при старте даёт переменной ind_val определённое значение. Значение это прописано в цикле start, прописанном по адресу 0x0. Принимаемые данные по RS232 заносятся в ind_val. Каждую миллисекунду значение ind_val выводится на индикаторы. Включён модуль USART. Так вот. При подачи питания на камень, если к нему не прицеплены буферы (использую 1488, 1489), на индикатор выводится значение 0x0 (ind_val==0x0 ???). Если же в момент старта буфера прицеплены - на индикатор выводится значение ind_val.

Вот сама программа:

#include <P18F452.inc>

list p=pic18f452 ; Цепляется к ком-порту. ; Выводит данные, посылаемые в ком-порт, ; на два 8-ми разрядных индикатора. ; RD0-RD4 - ко входу КР514ИД2, ; RA0 - к аноду единичного индикатора ; RA1 - к аноду десятичного индикатора (...) ind_num EQU 0x6; 1 - ед. инд, 0 - активен десятичный индикатор ind_val EQU 0x7; Значение, выводимое на оба индикатора (0x59) ORG 0x0 goto start ORG 0x8 goto hight_int ORG 0x18 goto low_int hight_int (...) movf RCREG,w,0; Считываем регистр и сбрасываем тем самым флаг RCIF movwf ind_val (...) retfie

low_int (...) ; Переключаем разряд индикатора incf ind_num,f bcf PORTD,0,0 bcf PORTD,1,0 bcf PORTD,2,0 bcf PORTD,3,0 btfsc ind_num,1 goto dec_ind ; Выводим значение ind_val (млад. 4 бита) в еденичный индикатор bcf PORTA,1,0 bsf PORTA,0,0 btfsc ind_val,0 bsf PORTD,0,0 btfsc ind_val,1 bsf PORTD,1,0 btfsc ind_val,2 bsf PORTD,2,0 btfsc ind_val,3 bsf PORTD,3,0 goto end_low_int dec_ind ; Выводим значение ind_val (старш. 4 бита) в десятичный индикатор clrf ind_num bcf PORTA,0,0 bsf PORTA,1,0 btfsc ind_val,4 bsf PORTD,0,0 btfsc ind_val,5 bsf PORTD,1,0 btfsc ind_val,6 bsf PORTD,2,0 btfsc ind_val,7 bsf PORTD,3,0 end_low_int (...) retfie

start clrf BSR,0; первый банк памяти (...) movlw 0x36 movwf ind_val main nop nop nop goto main end

Что интересно, так это то, что если строчки (movlw 0x36,movwf ind_val) загнать в обработку прерывания низкого уровня, либо в цикл main(), то даже при отсутствии буферов получаем на индикаторах 0x36. А если их в "start" оставить - странности... Почему так ?

-----------------

В режиме шестнадцатиричной работы TMR0 при любой записи в TMR0L в TMR0H пишется 0xFF. При записи в TMR0H в онном регистре ничего не изменяется, запись игнорируется... :( Как быть ?

-----------------

Как определяются байты конфигурации в программе у данного проца ?

list p=pic18f452

__CONFIG что ?

В смысле, как в исходнике отключить всю защиту и LVD, включив HS&PLL, BOR,PWRTE,POR, и указав BOR=2.7V, ?

... APPLE: Arrogance Produces Profit-Losing Entity

--- [Ru.Znakomstva] [Mo.Apartments] [Mo.Apartments.Talk] [tz.webclass.ru] * Origin: (2:5020/2584.10) ─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─=─ ----- Приветствую, _All_ ! -----

... Библия учит любить ближнего своего, а Камасутра объясняет, как именно

Reply to
Vadim Tzirulnicov
Loading thread data ...

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.