----- Приветствую, _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, ?
... На парте:"Забей на учёбу,Она не товарищ-Да здравствует хлюпанье Женских вла&#ищ