Прошу помощи у знающих людей. Пытался шуршать документацией, но ничего внятного не нашел. Программа должна выполнять простую функцию - АЦП. Задание - сделать АЦП ИМЕННО на этом пике. Вот листинг программы:
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. Убедительно прошу ответить на вопросы. ЗЫ. ПИК используется потому что позднее на нем будет построен модуль статистической обработки данных от АЦП. Пока надо реализовать только АЦП. Заранее спасибо)
|