Прошу помощи у знающих людей. Пытался шуршать документацией, но ничего внятного не нашел.
Программа должна выполнять простую функцию - АЦП. Задание - сделать АЦП ИМЕННО на этом пике.
Вот листинг программы:
LIST p=16f873
include p16f873.inc
org 0x00
goto start
org 0x04
call settmr
bsf ADCON0,GO
WAIT btfss PIR1,ADIF
goto WAIT
movf ADRESH,0
movwf PORTC
bsf STATUS,RP0
movf ADRESL,0
bcf STATUS,RP0
movwf PORTB
bcf PIR1,ADIF
return
settmr
movlw .61
movwf TMR0
bcf INTCON,T0IF
retfie
start
clrf PORTB
clrf PORTC
movlw b'10100000'
movwf INTCON
movlw b'11000001' ;вкл АЦП
movwf ADCON0
bsf STATUS,RP0
movlw b'10000110'
movwf OPTION_REG
clrf TRISC
clrf TRISB
movlw b'10001110'
movwf ADCON1
bcf STATUS,RP0
loop goto loop
end
Прога самописная(моя). Пыталя найти ошибки - безрезультатно)) Эмуляция в MPLABе проходит на ура. Скорее всего проблемы в аппаратной части. Использую кварц на 200кГц с 15пФ конденсаторами. MCLR напрямую соединен с питанием, идущим от сабилизатора на 5В с 100мкФ электролитическим конденсатором на выходе. Тестовое напряжение на AN0 подавалось с настраиваемого резисторного делителя (между шиной питания и землей ставил последовательно постоянный и переменный резистор, межу ними подключал AN0). К портам пробовал подключать светодиоды и 1к резисторами, просто измерять напряжение тестером. Постоянный 0.
Програмирование произвожу из PonyProg2000. Какая-то заморочка с конфигурационными битами. Какие там биты с инверсией, какие нет? (защита памяти - точно с инверсией) Помогите, кто знает, пожалуста. Конфиг. слово 001111001000.
Убедительно прошу ответить на вопросы.
ЗЫ. ПИК используется потому что позднее на нем будет построен модуль статистической обработки данных от АЦП. Пока надо реализовать только АЦП.
Заранее спасибо)