реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Hello world, че за фигня а?
DmitrySvrv
сообщение Mar 31 2011, 17:51
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 27-10-10
Пользователь №: 60 475



Собрал себе макетную плату.
Подключил 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.gif
Чем можно посмотреть есть ли тактовая частота, осцил. не показваетsad.gif то ли уровень малый то ли сажает



Сообщение отредактировал DmitrySvrv - Mar 31 2011, 17:55
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Mar 31 2011, 17:54
Сообщение #2


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



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

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

Сообщение отредактировал GetSmart - Mar 31 2011, 17:55


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
DmitrySvrv
сообщение May 3 2011, 17:36
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 27-10-10
Пользователь №: 60 475



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

Следующий мой шаг был поморгать светодиодом.
есть такая периферия 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



И что он не хочет работать то?
Go to the top of the page
 
+Quote Post
xemul
сообщение May 3 2011, 19:49
Сообщение #4



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(DmitrySvrv @ May 3 2011, 21:36) *
Код
...
; однократным убийством его не возьмёшь
    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
...

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

Он работает. Как написали, так и работает.
Go to the top of the page
 
+Quote Post
sargein
сообщение May 3 2011, 19:53
Сообщение #5


Участник
*

Группа: Свой
Сообщений: 72
Регистрация: 31-01-10
Из: Минск
Пользователь №: 55 176



Цитата(DmitrySvrv @ May 3 2011, 20:36) *
никак не хочет дружить со мной микроконтроллер.

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

Частота 4МГЦ, предделитель на 256 - итого 15 Гц
или 0,07с за такт.
256*0,07=17с- задеражка при переполнении регистра ТМР0


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



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

Частота кварца 4 МГц => частота на таймере 4/4 = 1 МГц => 1МГц/256 = 3,90625 кГц или 256 микросекунд
Go to the top of the page
 
+Quote Post
xemul
сообщение May 3 2011, 20:15
Сообщение #6



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(sargein @ May 3 2011, 23:53) *
интересно считаете...

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

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

Кто такая "17с- задеражка", я тоже не понял, но оно несущественно.
Go to the top of the page
 
+Quote Post
sargein
сообщение May 3 2011, 20:39
Сообщение #7


Участник
*

Группа: Свой
Сообщений: 72
Регистрация: 31-01-10
Из: Минск
Пользователь №: 55 176



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

Сообщение отредактировал sargein - May 3 2011, 20:48
Go to the top of the page
 
+Quote Post
_Pasha
сообщение May 4 2011, 06:06
Сообщение #8


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(DmitrySvrv @ May 3 2011, 20:36) *
И что он не хочет работать то?

Хинт: все попытки наладить дружбу с пиками лучше делать на основе симулятора MPLAB. Потому что он- правильный и ему можно верить.
Go to the top of the page
 
+Quote Post
testerplus
сообщение May 4 2011, 07:33
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 7-08-08
Из: SPb
Пользователь №: 39 471



Чтение документации укрепит дружбу. Особенно про таймер и про прерывания. А еще про то, что запись в TMR0 обнуляет счетчик прескейлера.
Go to the top of the page
 
+Quote Post
dimka76
сообщение May 4 2011, 08:08
Сообщение #10


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



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


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post
xemul
сообщение May 4 2011, 08:37
Сообщение #11



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(dimka76 @ May 4 2011, 12:08) *
а еще про FUSE bit забыли.
Они прямо в тексте программы должны прописываться.

Кстати, да. По умолчанию этот пик будет считать, что его от RC заводят.
Но, м.б., ТС тоже ручками в программаторе CONFIG задаёт?
Цитата(DmitrySvrv @ Mar 31 2011, 21:51) *
Чем можно посмотреть есть ли тактовая частота, осцил. не показваетsad.gif то ли уровень малый то ли сажает

Прочитать 12.1, 12.2 ДШ, и "%Program Files%\Microchip\MPASM Suite\hlpMPASMAsm.chm" на предмет __config.
Кварц 4 МГц == XT
Go to the top of the page
 
+Quote Post
dimka76
сообщение May 4 2011, 10:57
Сообщение #12


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



Цитата(DmitrySvrv @ Mar 31 2011, 21:51) *
Чем можно посмотреть есть ли тактовая частота, осцил. не показваетsad.gif то ли уровень малый то ли сажает


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


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post
mmor
сообщение May 6 2011, 17:39
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 22-04-06
Пользователь №: 16 379



Цитата(DmitrySvrv @ Mar 31 2011, 21:51) *
Чем можно посмотреть есть ли тактовая частота, осцил. не показваетsad.gif то ли уровень малый то ли сажает


Я сначала подавал питание, потом смотрел осциллографом обычным щупом. Если сразу ставлю щуп, а потом включаю - генерации нет.
7 Мгц. 1886ВЕ2У
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 18:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.01456 секунд с 7
ELECTRONIX ©2004-2016