ALCON 0 3 июня, 2008 Опубликовано 3 июня, 2008 · Жалоба Программа с самого начала: INTOSCIO list p=16F636 ; list directive to define processor (список директив для определения процессора) #include <p16F636.inc> ; processor specific variable definitions (определение установок характерных тольком для данного процессора) __CONFIG _WUREN_OFF & _WDT_OFF & _BOD_OFF & _FCMEN_OFF & _IESO_OFF & _CPD_OFF & _MCLRE_ON & _PWRTE_OFF & _WDT_OFF & _INTRC_OSC_CLKOUT ;_WUREN_ON бит, разрешающий пробуждение из спящего режима повходу reset ;_WDT_OFF выключение "собачьего" таймера ;_BOD_OFF функция контроля питания (при хреновом питании сбрасывает) ;_FCMEN_OFF отключение функции слежения за внешним тактовым генератором ;_IESO_OFF выключение быстрого старта (работает при использовании кварцевых генераторов) ;_CPD_OFF cod protection off ;_MCLRE_ON активация возможности сброса ;_PWRTE_ON разрешение включения питания таймера ;_WDT_ON включение Watchdog Timer ;_INTRC_OSC_NOCLKOUT внутренний генератор без вывода данных наружу ;_INTRC_OSC_CLKOUT - внутр. ген. с выводом на RA4. ;_EXTRC_OSC_CLKOUT - CLKOUT function on RA4/T1G/OSC2/CLKOUT, RC on RA5/T1CKI/OSC1/CLKIN ;******************* VARIABLE DEFINITIONS ***************************** BANK0 equ 0x20 ;опрделение начала банка памяти 0 BANK0_END equ 0x7F ;опрделение конца банка памяти 0 BANK1 equ 0xA0 ;опрделение начала банка памяти 1 BANK1_END equ 0xBF ;опрделение конца банка памяти 1 CBLOCK BANK0 ; Моя прога ; Ввод переменных status_temp hall ;переменная для определения состояния датчика холла. состояние считывается с датчика холла с RC5 w_temp ;переменная для сохранения аккумулятора counter ;счетчик количества промежутков по 0,25сек state ;регистр определяющий состояние процессора в данный момент. endc ;****************** МАКРОСЫ ******************************************* bank_0 macro ; макрос для перехода в Bank0 bcf STATUS,RP0 endm bank_1 macro ; макрос для перехода в Bank1 bsf STATUS,RP0 endm ORG 0x000 bsf STATUS,RP0 movlw b'00000011' movwf OSCCON goto init ;______________________________________________________________ ;--------------------Вектор прерываний------------------------- INT_VECTOR ; exit_int: swapf status_temp,w ; retrieve copy of STATUS register movwf STATUS ; restore pre-isr STATUS register contents swapf w_temp,f swapf w_temp,w ; restore pre-isr W register contents retfie ; return from interrupt, enable interrupts ;______________________________________________________________ ;-----------------------Настройка------------------------------ init BCF STATUS,RP0 clrf CMCON1 clrf PIR1 clrf STATUS; bsf STATUS,RP0 movlw b'00010010' movwf OPTION_REG movlw b'11100000' movwf INTCON movlw b'00011000' movwf PIE1 movlw b'00110000' movwf WPUDA movlw b'00000000' movwf TRISA movlw b'00001011' movwf TRISC movlw b'00000011' movwf OSCCON movlw b'00100000' movwf WDA bcf STATUS,RP0 movlw b'00000100' movwf CMCON0 ;+ clrf status_temp clrf hall ;переменная для определения состояния датчика холла. состояние считывается с датчика холла с RC5 clrf w_temp ;переменная для сохранения аккумулятора movlw 0x28 ;10 сек в аккум MOVWF counter ;ЗАПоминание нужного значения счетчика(на паузу). clrf state sost bsf PORTA,5 bcf PORTA,5 GOTO sost Лишнее удалил и почистил (почти все коментарии и вектор прерываний) Если кто ошибку заметит - подскажите - буду признателен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dac 0 3 июня, 2008 Опубликовано 3 июня, 2008 · Жалоба что значит не запускается? если вообще не генерит, смотрите железо, ресет, так как от программы это не зависит, прописано в конфигурации. Посмотрите осциллогрфом что на выходе OSCO - должна быть частота деленная на 4. А если не на той частоте работает, типа 31кгц, то последовательность конфигурации осциллятора, ее надо соблюдать. для пик16 не знаю, давно с ними не работал, да и то были 628. для пик18ф4520 на 32мгц было так: main() { GIE = 0; CLRWDT(); // сконфигурирован от внутреннего RC-генератора на частоту 32МГц OSCCON = 0b01110000; OSCTUNE = 0b11000000; ... ЗЫ pwrtimer все таки рекомендуется включать, если это не режим отладки Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ALCON 0 4 июня, 2008 Опубликовано 4 июня, 2008 · Жалоба Прошу прощения за беспокойство. проблема была не в софте, а в харде(RESET об землю) Спасибо, что откликнулись. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться