Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: ivan_fd  
Не работает программа для PIC16F84
xxxmonejall Дата: Сб, 23.05.2009, 20:49  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 139
Репутация: 0   ±
Замечания:   ±
На сайте с 17.05.2008

Статус: Offline

Code
imp var word
symbol imp_in = portb.0
symbol imp_out1 = portb.1
symbol imp_out2 = portb.2
symbol imp_out3 = portb.3
symbol imp_out4 = portb.4
symbol imp_out5 = portb.5
symbol imp_out6 = portb.6
symbol imp_out7 = portb.7
trisb = %10000000
imp_out1 = 0
imp_out2 = 0
imp_out3 = 0
imp_out4 = 0
imp_out5 = 0
imp_out6 = 0
imp_out7 = 0
main:
count imp_in, 1000, imp
if imp < 10 then goto morg
if (imp > 9) and (imp < 16) then goto main1
if (imp > 15) and (imp < 33) then goto main2
if (imp > 32) and (imp < 50) then goto main3
if (imp > 49) and (imp < 66) then goto main4
if (imp > 65) and (imp < 83) then goto main5
if (imp > 82) and (imp < 100) then goto main6
if imp > 99 then goto main7
morg:
imp_out1 = 1
pause 100
goto main

main1: imp_out1 = 1
goto main
main2: imp_out2 = 1
goto main
main3: imp_out3 = 1
goto main
main4: imp_out4 = 1
goto main
main5: imp_out5 = 1
goto main
main6: imp_out6 = 1
goto main
main7: imp_out7 = 1
goto main
ЯНДЕКС Дата: 23.05.2009
toommy Дата: Сб, 23.05.2009, 21:40  |                                                                                                                Сообщение # 2
Группа: Пользователи
Ранг:  Новенький
Сообщений: 13
Репутация: 0   ±
Замечания:   ±
На сайте с 04.11.2008

Статус: Offline

первая ошибка trisb+ %0000001
demanik Дата: Сб, 23.05.2009, 21:40  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 448
Репутация: 10   ±
Замечания:   ±
На сайте с 11.12.2007

Статус: Offline

Она работает. Пробовал в протеусе для 16Ф876А. Как конкретно она не работает. Забываем указывать название пика.

Попробуй всё и вся... может быть пол...

toommy Дата: Сб, 23.05.2009, 21:42  |                                                                                                                Сообщение # 4
Группа: Пользователи
Ранг:  Новенький
Сообщений: 13
Репутация: 0   ±
Замечания:   ±
На сайте с 04.11.2008

Статус: Offline

if (imp > 9) and (imp < 16) then goto main1
как понимать вставку and ?
demanik Дата: Сб, 23.05.2009, 21:45  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 448
Репутация: 10   ±
Замечания:   ±
На сайте с 11.12.2007

Статус: Offline

Quote (toommy)
как понимать вставку and ?

Если количество имп. болше 9 и меньше 16 то....


Попробуй всё и вся... может быть пол...

Dmitry Дата: Вс, 24.05.2009, 00:15  |                                                                                                                Сообщение # 6
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 157
Репутация: 6   ±
Замечания:   ±
На сайте с 12.05.2009

Статус: Offline

Направление работы POTRB.0 задается в нулевом бите регистра TRIS, поэтому
trisb = %00000001 ' PORTB.0 - вход, остальные - выход

Сообщение отредактировал Dmitry - Вс, 24.05.2009, 00:21
xxxmonejall Дата: Вс, 24.05.2009, 13:22  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 139
Репутация: 0   ±
Замечания:   ±
На сайте с 17.05.2008

Статус: Offline

Извените, исправлюсь Pic16f84.
Quote (demanik)

Если количество имп. болше 9 и меньше 16 то....

Да это так. только я не знаю или я это правильно записал?????
При включение программы диоды подсоединенные к выводам контролера. Загораются в радоном порядке.

Сообщение отредактировал xxxmonejall - Вс, 24.05.2009, 13:26
brown Дата: Вс, 24.05.2009, 14:09  |                                                                                                                Сообщение # 8
Группа: Пользователи
Ранг:  Помогаю всем
Сообщений: 333
Репутация: 12   ±
Замечания:   ±
На сайте с 18.09.2007

Статус: Offline

xxxmonejall, Я так понял нужно индицировать точкой входную частоту по portb.0. Диапазон частоты? >=100Гц судя по строке if imp > 99 then goto main7 .

Quote (xxxmonejall)
trisb = %10000000

Quote (toommy)
первая ошибка trisb+ %0000001

строка count imp_in, 1000, imp исправляет эту ошибку переключая портБ.0 на вход. surprised
Еще после неё я бы настоятельно рекомендовал ввести: portb=0

Quote (xxxmonejall)
При включение программы диоды подсоединенные к выводам контролера. Загораются в радоном порядке.

А так должна работать.


Век живи - век учись! К концу жизни поймешь, что ничего не знаешь...
Сообщение отредактировал brown - Вс, 24.05.2009, 14:40
demanik Дата: Вс, 24.05.2009, 14:24  |                                                                                                                Сообщение # 9
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 448
Репутация: 10   ±
Замечания:   ±
На сайте с 11.12.2007

Статус: Offline

Quote (brown)
Я так понял нужно индицировать точкой входную частоту по portb.0

Чтобы у желающих помочь разобратся не возникало подобных догадок рекомендую авторам в начале вместе с куском проги хотябы кратко изложить задачу (что прога должна делать и как себя вести). Всем будет легче помогать.


Попробуй всё и вся... может быть пол...

xxxmonejall Дата: Вс, 24.05.2009, 15:21  |                                                                                                                Сообщение # 10
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 139
Репутация: 0   ±
Замечания:   ±
На сайте с 17.05.2008

Статус: Offline

Я камушек спалил. И что теперь делать???? Придется Протеус осваивать!!!!!
terrarus Дата: Вс, 24.05.2009, 15:33  |                                                                                                                Сообщение # 11
Группа: Пользователи
Ранг:  Помогаю всем
Сообщений: 451
Репутация: 17   ±
Замечания:   ±
На сайте с 21.08.2008

Статус: Offline

Вообще-то такой камень спалить трудно.
Освоить Протеус Вам просто необходимо. Вот увидите как он Вас продвинет.
Успехов в освоении Протеуса.


Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
ЯНДЕКС Дата: 24.05.2009
demanik Дата: Вс, 24.05.2009, 16:00  |                                                                                                                Сообщение # 12
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 448
Репутация: 10   ±
Замечания:   ±
На сайте с 11.12.2007

Статус: Offline

Quote (terrarus)
Вообще-то такой камень спалить трудно

Попробуйте в нвчале вставить:

@ device pic16F84, xt_osc, wdt_off, protect_off, pwrt_on
DEFINE OSC 4


Попробуй всё и вся... может быть пол...

xxxmonejall Дата: Вс, 24.05.2009, 22:55  |                                                                                                                Сообщение # 13
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 139
Репутация: 0   ±
Замечания:   ±
На сайте с 17.05.2008

Статус: Offline

Все готово. Вот рабочая программа. Предназначается она для индикации оборотов двигателя от 500 – горит один светодиод и до 7000 горит 2 светодиода, вот такой вот тахометр. Тюнинг одним словом.
Code
@ device pic16F84, xt_osc, wdt_off, protect_off, pwrt_on
DEFINE OSC 4
portb = 0

imp var word
symbol imp_in = portb.0
symbol imp_out1 = portb.1
symbol imp_out2 = portb.2
symbol imp_out3 = portb.3
symbol imp_out4 = portb.4
symbol imp_out5 = portb.5
symbol imp_out6 = portb.6
symbol imp_out7 = portb.7
trisb = %00000001
imp_out1 = 0
imp_out2 = 0
imp_out3 = 0
imp_out4 = 0
imp_out5 = 0
imp_out6 = 0
imp_out7 = 0
main:
count imp_in, 1000, imp
portb = 0
if imp < 10 then goto morg
if (imp > 9) and (imp < 16) then goto main1
if (imp > 15) and (imp < 33) then goto main2
if (imp > 32) and (imp < 50) then goto main3
if (imp > 49) and (imp < 66) then goto main4
if (imp > 65) and (imp < 83) then goto main5
if (imp > 82) and (imp < 100) then goto main6
if imp > 99 then goto main7

morg:
imp_out1 = 1
pause 100
goto main

main1: imp_out1 = 1
goto main
main2:
imp_out1 = 1
imp_out2 = 1

goto main
main3:
imp_out1 = 1
imp_out2 = 1
imp_out3 = 1

goto main
main4:
imp_out1 = 1
imp_out2 = 1
imp_out3 = 1
imp_out4 = 1

goto main
main5:
imp_out1 = 1
imp_out2 = 1
imp_out3 = 1
imp_out4 = 1
imp_out5 = 1

goto main
main6:
imp_out1 = 1
imp_out2 = 1
imp_out3 = 1
imp_out4 = 1
imp_out5 = 1
imp_out6 = 1

goto main
main7:
imp_out1 = 1
imp_out2 = 1
imp_out3 = 1
imp_out4 = 1
imp_out5 = 1
imp_out6 = 1
imp_out7 = 1

goto main
end

Добавлено (24.05.2009, 10:55:48)
---------------------------------------------
Есть только еще один вопрос. Импульсы на катушке амплитудой в 12 в. Как их заточить под контролер.

demanik Дата: Вс, 24.05.2009, 23:17  |                                                                                                                Сообщение # 14
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 448
Репутация: 10   ±
Замечания:   ±
На сайте с 11.12.2007

Статус: Offline

Quote (xxxmonejall)
Как их заточить под контролер.

приблизительно так:
Прикрепления: 8341202.gif (1.8 Kb)


Попробуй всё и вся... может быть пол...

xxxmonejall Дата: Пн, 25.05.2009, 00:14  |                                                                                                                Сообщение # 15
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 139
Репутация: 0   ±
Замечания:   ±
На сайте с 17.05.2008

Статус: Offline

Quote (demanik)
Как их заточить под контролер.

приблизительно так:
Прикрепления: 8341202.gif(2Kb)

Большое спасибо demanik! Попробую это все на мото!

  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: