Бывалый

Профиль
Группа: Участник
Сообщений: 219
Регистрация: 20.12.2007
Репутация: нет Всего: 1
|
Всем доброе время суток! Наконец-то удалось написать код для микроконтроллера PIC12F675 на ассемблере. В среде протеус светодиодики зажигались когда поступала нужная команда. Собрал реальную схему, проверил все контакты,подавал на площадку, где должен сидеть микроконтроллер, землю или напряжение, все горело как надо. Делаю вывод,что схема собрана правильно. Возникли проблемы с микроконтроллером. Попытался загрузить программу, которую отлаживал в протеусе, вроде бы записалась. Единственное что, на экране поразила одна из надписей: Генератор:IN I OSC, I/O function on CLKOUTВставил микроконтроллер в схему, подал питание, землю, нулевая реакция, как-будто его и нет. Ниже рабочий код на протеусе. Почему на реальном чипе он не сработал? Код | list p=pic12f675 #include <P12F675.INC> ; настройка слова конфигурации микроконтроллера ; _CP_OFF защита программного кода выключена ; _DEBUG_OFF режим отладки выключен ; _WRT_OFF защита записи FLASH выключена ; _CPD_OFF защита памяти EEPROM выключена ; _LVP_OFF режим низковольтового программирования выключен ; _BODEN_ON сброс по снижению питания включен ; _PWRTE_ON таймер задержки по квлючению питания включен ; _XT_OSC использование кварцевого резонатора на 4МГц __CONFIG _CPD_OFF&_CP_OFF & _BODEN_ON & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
ERRORLEVEL 2 ;Вывод только ошибок
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ANSEL equ 9Fh ; ADRESH equ 1Eh ; Регистры для АЦП ADRESL equ 9Eh ;
ADCL equ 21h ; Результат оцифровки ADCH equ 22h ;
SIGNAL equ 23h ;Подсчет сигнала (Младшие разряды) SIGNALH equ 24h ;Подсчет сигнала (Старшие разряды)
METK equ 25h ;Для метки CONTROLS equ 26h ;Для настройки
org 0x00
;------------------------------------------------------ ; Начальные настройки ;------------------------------------------------------ bcf STATUS,RP0 ;Выбираем банк 0 movlw b'00000001' movwf ADCON0 movlw b'01011110' ;Режимы работы компаратора movwf CMCON
bsf STATUS,RP0 ;Выбираем банк 1
movlw b'00011001' movwf TRISIO movlw b'00000001' movwf ANSEL movlw b'10001000' ;Настраиваем компаратор / 4 1х бита, это выбор выходного напряжения Vref / Настроено на минимум movwf VRCON bcf STATUS,RP0
;Обнуляем регистры movlw b'00000000' movwf SIGNAL movlw b'00000000' movwf SIGNALH ;------------------------------------------------------
;------------------------------------------------------ ; Старт ;------------------------------------------------------ PREOBR bsf GPIO,1 bsf GPIO,5 bsf GPIO,2
;BTFSS GPIO,4 ; Регулировка порога BTFSC GPIO,4 GOTO CONTROL ;
BTFSS CMCON,6 ; GOTO B0 ; Ищем уровень сигнала BTFSC CMCON,6 ; выше порога GOTO B1 ;
goto PREOBR ;------------------------------------------------------
;------------------------------------------------------ ; Значения меньше порога ;------------------------------------------------------ B0 ;При 0 гаснет индикатор и сбрасывает на 0 счетчик movlw b'00000000' movwf SIGNAL movlw b'00000000' movwf SIGNALH goto PREOBR ;------------------------------------------------------
;------------------------------------------------------ ; Значения выше порога ;------------------------------------------------------ B1 ;Запускающий счетчик ;Отсчитывает 511 тактов
movlw b'00000001' ADDWF SIGNAL,1
BTFSS SIGNAL,7 GOTO PREOBR BTFSS SIGNAL,6 GOTO PREOBR BTFSS SIGNAL,5 GOTO PREOBR BTFSS SIGNAL,4 GOTO PREOBR BTFSS SIGNAL,3 GOTO PREOBR BTFSS SIGNAL,2 GOTO PREOBR BTFSS SIGNAL,1 GOTO PREOBR BTFSC SIGNAL,0 GOTO B2 goto PREOBR
B2 ;Продолжение счета movlw b'00000001' ADDWF SIGNALH,1 ;Прибавляем след.разряд BTFSS SIGNALH,0 GOTO MESSAGE goto PREOBR ;------------------------------------------------------
;------------------------------------------------------ ; Сигнализация ;------------------------------------------------------ ALARM bCf GPIO,1 movlw b'00000000' movwf SIGNAL movlw b'00000000' movwf SIGNALH ;BTFSS GPIO,3 BTFSC GPIO,3 GOTO PREOBR ;BTFSS GPIO,4 BTFSC GPIO,4 GOTO CONTROL GOTO ALARM ;------------------------------------------------------
;------------------------------------------------------ ; Отправка сообщения ;------------------------------------------------------ MESSAGE movlw b'00000000' movwf METK
;01110011 Серийный номер
bcf GPIO,2 ;Ctart nop ; nop ; -\___ bcf GPIO,2 ; ---\_ bcf GPIO,5 ; nop ; bsf GPIO,5 ;
bsf GPIO,2 bcf GPIO,5 nop bsf GPIO,5
bsf GPIO,2 bcf GPIO,5 nop bsf GPIO,5
bsf GPIO,2 bcf GPIO,5 nop bsf GPIO,5 bcf GPIO,2 bcf GPIO,5 nop bsf GPIO,5
bcf GPIO,2 bcf GPIO,5 nop bsf GPIO,5
bsf GPIO,2 bcf GPIO,5 nop bsf GPIO,5
bsf GPIO,2 bcf GPIO,5 nop bsf GPIO,5
bcf GPIO,2 ;Для метки bcf GPIO,5 nop bsf GPIO,5
;Отправка кода сигнала ;--------------------------- MESS movlw b'00000001' ;Отключаем опорное напряжение movwf ADCON0 bsf ADCON0,1 ;Запуск преобразования btfsc ADCON0,1 goto $-1
nop nop nop nop
movf ADRESH,W movwf ADCH bsf STATUS,RP0 movf ADRESL,W bcf STATUS,RP0 movf ADCL
BTFSC ADCL,0 call M1 BTFSS ADCL,0 call M0 BTFSC ADCL,1 call M1 BTFSS ADCL,1 call M0 BTFSC ADCL,2 call M1 BTFSS ADCL,2 call M0 BTFSC ADCL,3 call M1 BTFSS ADCL,3 call M0 BTFSC ADCL,4 call M1 BTFSS ADCL,4 call M0 BTFSC ADCL,5 call M1 BTFSS ADCL,5 call M0 BTFSC ADCL,6 call M1 BTFSS ADCL,6 call M0 BTFSC ADCL,7 call M1 BTFSS ADCL,7 call M0 BTFSC ADCH,0 call M1 BTFSS ADCH,0 call M0 BTFSC ADCH,1 call M1 BTFSS ADCH,1 call M0 bcf GPIO,2
BTFSS CMCON,6 GOTO mess_off BTFSC CMCON,6 GOTO MESS
mess_off ;-----------------------------
bcf GPIO,2 ;Stop nop ; ___/-- nop ; _/---- bsf GPIO,2 ; GOTO ALARM ;------------------------------------------------------
;------------------------------------------------------ ; Подпрограммы отправки сигнала ;------------------------------------------------------ M0 bcf GPIO,2 bcf GPIO,5 nop bsf GPIO,5 call METKA return
M1 bsf GPIO,2 bcf GPIO,5 nop bsf GPIO,5 call METKA return ;-------------------------------------------------------
;------------------------------------------------------ ; Подпрограмма метки ;------------------------------------------------------ METKA movlw b'00000001' ADDWF METK,1
BTFSS METK,3 return BTFSC METK,2 return BTFSC METK,1 return BTFSC METK,0 return
bcf GPIO,5 bcf GPIO,2 bsf GPIO,5 movlw b'00000000' movwf METK return ;------------------------------------------------------
;------------------------------------------------------ ; Процедура регулировки порога ;------------------------------------------------------ CONTROL movlw b'00000001' ADDWF SIGNAL,1
BTFSS SIGNAL,7 GOTO CONTROL BTFSS SIGNAL,6 GOTO CONTROL BTFSS SIGNAL,5 GOTO CONTROL BTFSS SIGNAL,4 GOTO CONTROL BTFSS SIGNAL,3 GOTO CONTROL BTFSS SIGNAL,2 GOTO CONTROL BTFSS SIGNAL,1 GOTO CONTROL BTFSS SIGNAL,0 GOTO CONTROL
bsf STATUS,RP0 BSF VRCON,7 ;Настраиваем чувствительность BSF VRCON,3
movlw b'00000001' ADDWF CONTROLS,1 BTFSC CONTROLS,3 BCF CONTROLS,3
BTFSC CONTROLS,0 BSF VRCON,0 BTFSC CONTROLS,1 BSF VRCON,1 BTFSC CONTROLS,2 BSF VRCON,2 BTFSS CONTROLS,0 BCF VRCON,0 BTFSS CONTROLS,1 BCF VRCON,1 BTFSS CONTROLS,2 BCF VRCON,2 bcf STATUS,RP0
CONTR BTFSC GPIO,4 GOTO CONTR
movlw b'00000000' movwf SIGNAL CONTR1 movlw b'00000001' ADDWF SIGNAL,1
BTFSS SIGNAL,7 GOTO CONTR1 BTFSS SIGNAL,6 GOTO CONTR1 BTFSS SIGNAL,5 GOTO CONTR1 BTFSS SIGNAL,4 GOTO CONTR1 BTFSS SIGNAL,3 GOTO CONTR1 BTFSS SIGNAL,2 GOTO CONTR1 BTFSS SIGNAL,1 GOTO CONTR1 BTFSS SIGNAL,0 GOTO CONTR1
movlw b'00000000' movwf SIGNAL GOTO PREOBR ;------------------------------------------------------
END
|
Это сообщение отредактировал(а) BIV - 9.11.2011, 20:32
|