Перейти к содержанию
    

Hello world

Собрал себе макетную плату.

Подключил PIC по стандартной схеме.

 

5В на сброс, 5В на питание, внешний генератор кварц 4 МГц конденсаторы 18пФ

 

Написал программу

 

LIST P=16F876

; указывает программе тип контроллера

TITLE Программа моргания светодиодами

; имя программы

include "C:\Program Files\Microchip\MPASM Suite\P16F876A.INC"

; включение в текст имен стандартных регистров микроконтроллера

include "C:\LED\Header\LED.h"

; включение в текст файла заголовка с нашими определениями

; ************************************************** *********

org 0x00

goto Entry ; переход к основной программе

;************************************************* ***********

; Инициализация

; ************************************************** *********

Entry

clrwdt ; убиваем сторожа

bcf INTCON,GIE ; запрет прерываний

bcf _RP1 ; выбор банка 1

bsf _RP0

clrf TRISB ; порт В как выход

 

; ************************************************** **************

; Основная программа

; ************************************************** **************

bcf _RP0 ; выбор банка 0

movlw 0xFF ; записываем в аккумулятор 11111111

movwf PORTB ; логическая 1 на выходах

goto Entry ; зациклили

; ************************************************** **************

END

 

 

Компилятор выдал

 

Make: The target "C:\LED\Source\LED.o" is out of date.

Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F876A "LED.asm" /l"LED.lst" /e"LED.err"

Warning[205] C:\LED\SOURCE\LED.ASM 1 : Found directive in column 1. (LIST)

Message[302] C:\LED\SOURCE\LED.ASM 20 : Register in operand not in bank 0. Ensure that bank bits are correct.

Warning[203] C:\LED\SOURCE\LED.ASM 25 : Found opcode in column 1. (bcf)

Warning[203] C:\LED\SOURCE\LED.ASM 26 : Found opcode in column 1. (movlw)

Warning[203] C:\LED\SOURCE\LED.ASM 27 : Found opcode in column 1. (movwf)

Warning[203] C:\LED\SOURCE\LED.ASM 28 : Found opcode in column 1. (goto)

Loaded C:\LED\Source\LED.COD.

BUILD SUCCEEDED: Thu Mar 31 21:41:22 2011

 

Заливаю хекс программатором фитон Chip Prog-2

Не работает, почему? :1111493779:

Чем можно посмотреть есть ли тактовая частота, осцил. не показвает:( то ли уровень малый то ли сажает

 

 

Изменено пользователем DmitrySvrv

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

табуляций не хватает перед инструкциями. (наверное)

 

а название правильнее писать - чё за ботва, пацаны?

Изменено пользователем GetSmart

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

никак не хочет дружить со мной микроконтроллер.

 

Следующий мой шаг был поморгать светодиодом.

есть такая периферия TMR0.

 

Частота 4МГЦ, предделитель на 256 - итого 15 Гц

или 0,07с за такт.

256*0,07=17с- задеражка при переполнении регистра ТМР0

 

Код:

   LIST P=16F876 
; указывает программе тип контроллера
TITLE Программа моргания светодиодами 
; имя программы
include "C:\Program Files\Microchip\MPASM Suite\P16F876A.INC"
; включение в текст имен стандартных регистров микроконтроллера
include "C:\LED\Header\LED.h"
; включение в текст файла заголовка с нашими определениями
; ********************************************************
    org 0x00
    goto Entry; переход к основной программе
;*********************************************************
; Инициализация
; *******************************************************
Entry 
    bcf INTCON,2
    clrwdt; убиваем сторожа 
    bcf INTCON,GIE; запрет прерываний
    bcf _RP1; выбор банка 1 
    bsf _RP0 
    clrf TRISB; порт В как выход
    
LED_ON
    bcf _RP0; выбор банка 0 
    movlw 0xFF; записываем в аккумулятор 11111111 
    movwf PORTB; логическая 1 на выходах

Pause1
    movlw b'11000111'; Настроить предделитель на 256  тмр0,от внутр.г.                      
    movwf OPTION_REG
    bsf INTCON,5      ; Разрешить прерывания
    incf TMR0,1         ;ИНкримент регистра тмр0
    BTFSS INTCON,2   ;Проверим на прерывание от регистра
    goto Pause1
LED_OFF
    bcf _RP0; выбор банка 0 
    movlw 0x00;  
    movwf PORTB; логический 0 на выходах
Pause2
    movlw b'11000111'
    movwf OPTION_REG
    bsf INTCON,5
    incf TMR0,1
    BTFSS INTCON,2
    goto Pause2
    goto LED_ON

END

 

 

И что он не хочет работать то?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...
; однократным убийством его не возьмёшь
    clrwdt; убиваем сторожа 
...
Pause1
; в Вашей проге это достаточно сделать единожды до LED_ON
    movlw b'11000111'; Настроить предделитель на 256  тмр0,от внутр.г.                      
    movwf OPTION_REG

; чесслово, лень смотреть, за что отвечает 5 бит в INTCON
; а если учесть bcf INTCON,GIE чуть выше, то и бессмысленно
    bsf INTCON,5; Разрешить прерывания

; зачем? таймер сам будет считать
; 'incf TMR0, f' никогда не приведёт к T0IF, а вот прескейлер будет сбрасываться
    incf TMR0,1;ИНкримент регистра тмр0
    BTFSS INTCON,2;Проверим на прерывание от регистра
    goto Pause1
; здесь, если оно вдруг случится, очень к месту будет
    BCF INTCON,2
...

И что он не хочет работать то?

Он работает. Как написали, так и работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

никак не хочет дружить со мной микроконтроллер.

 

Следующий мой шаг был поморгать светодиодом.

есть такая периферия TMR0.

 

Частота 4МГЦ, предделитель на 256 - итого 15 Гц

или 0,07с за такт.

256*0,07=17с- задеражка при переполнении регистра ТМР0

 

 

И что он не хочет работать то?

 

 

интересно считаете...

 

Частота кварца 4 МГц => частота на таймере 4/4 = 1 МГц => 1МГц/256 = 3,90625 кГц или 256 микросекунд

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

интересно считаете...

 

Частота кварца 4 МГц => частота на таймере 4/4 = 1 МГц => 1МГц/256 = 3,90625 кГц или 256 микросекунд

Вы забыли про прескейлер

1 МГц / 256 / 256 = 15.3 Гц частота T0IF без вмешательства ручек

 

Кто такая "17с- задеражка", я тоже не понял, но оно несущественно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

upd. перечитал и въехал, что вы имели ввиду частоту T0IF, с этим согласен, я в своем посте считал время одного тика просто, а не полного заполнения регистра TMR0

Изменено пользователем sargein

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И что он не хочет работать то?

Хинт: все попытки наладить дружбу с пиками лучше делать на основе симулятора MPLAB. Потому что он- правильный и ему можно верить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чтение документации укрепит дружбу. Особенно про таймер и про прерывания. А еще про то, что запись в TMR0 обнуляет счетчик прескейлера.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а еще про FUSE bit забыли.

Они прямо в тексте программы должны прописываться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а еще про FUSE bit забыли.

Они прямо в тексте программы должны прописываться.

Кстати, да. По умолчанию этот пик будет считать, что его от RC заводят.

Но, м.б., ТС тоже ручками в программаторе CONFIG задаёт?

Чем можно посмотреть есть ли тактовая частота, осцил. не показвает:( то ли уровень малый то ли сажает

Прочитать 12.1, 12.2 ДШ, и "%Program Files%\Microchip\MPASM Suite\hlpMPASMAsm.chm" на предмет __config.

Кварц 4 МГц == XT

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чем можно посмотреть есть ли тактовая частота, осцил. не показвает:( то ли уровень малый то ли сажает

 

Щуп с делителем нужен.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чем можно посмотреть есть ли тактовая частота, осцил. не показвает:( то ли уровень малый то ли сажает

 

Я сначала подавал питание, потом смотрел осциллографом обычным щупом. Если сразу ставлю щуп, а потом включаю - генерации нет.

7 Мгц. 1886ВЕ2У

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...