dr.doc писал(а):MPLab пишет предупреждения "как хочет". Т.е. дофига и много.
0-1 и флаг С не взвелся?
- иногда встречается подобный глюк в симуляторе.
MPLab обычно предупреждает много о несоответствии банка, все остальные предупреждения желательно анализировать и искать причину.
Флаг С и не должен взводиться! Это флаг переполнения/заема, т.е. при переполнении регистра свыше 255 он устанавливается, в случае заема он сбрасывается в 0. Значит при вычитании от малого числа бОльшего числа он сбросится ( 0-1 результат отрицательный), при вычитании 2-1 он установится, т.е. работает аналогично переполнению при сложении, но с инверсией.
А где "В регистр Caunt не заносится число 10"?
если тут:
Код: Выделить всё
;----------------------------Второй опрос АЦП AN1(Ia)-------------------
clrf Temp_Ia_L
clrf Temp_Ia_H
clrf Caunt
bcf STATUS,Z
bsf STATUS,RP0
movlw .10
movwf Caunt
тогда надо сначала вернуть нулевой банк, или заносить туда число до команды ( bsf STATUS,RP0)
P.S.
Посмотрел далее, похоже всю программу надо пересматривать на соответствие банков, даже в малом кусочке есть ошибки:
Код: Выделить всё
Wait0
btfsc ADCON0,GO ;Ожидание завершения
goto Wait0 ;A/D преобразования
movf ADRESH,W
movwf Ua_H
banksel ADRESL ; (1-банк)
movf ADRESL,W
movwf Ua_L ; (а заносить надо в 0-банке)
NOP
Видел в программе разрешение прерываний, а самого обработчика по 0004 адресу нет.
Попадаются переходы к П.П. по goto а выход через return (явный глюк)
Дальше смотрите сами. Всю программу проверять долго....
Очень рекомендую почитать
статьи тут.