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

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: terrarus, ivan_fd  
Форум Picbasic.ru » Программирование МК » Mikrobasic » Часы на mikroB (Однако)
Часы на mikroB
retas Дата: Пт, 02.01.2009, 23:58  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 447
Репутация: 11   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

Вот посчастливилось наткнуться на часики на Бейсике - думал вникну, поизвращаюсь но... Мож спецы попробует у себя запустить и подскажут что где подправить?
http://www.micro-examples.com/public....ck.html
ЯНДЕКС Дата: 02.01.2009
Yrok Дата: Вт, 06.01.2009, 10:45  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 2   ±
Замечания:   ±
На сайте с 27.09.2007

Статус: Offline

Привет!
Так ты сам пробовал запускать или нет???
Так вроде все более менее понятно--если что спрашивай постараюсь объяснить))
retas Дата: Вт, 06.01.2009, 18:49  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 447
Репутация: 11   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

Всунув программу в mikroB и нажав Run получаю предупреждения об ошибках: ожидается "то то" а написано "это".Пробовал поправлять, всё равно компилер недоволен. Вот и хочется чтоб кто понимающий подправил.
Спасибо.
evgenb Дата: Вт, 06.01.2009, 19:38  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 91
Репутация: 3   ±
Замечания:   ±
На сайте с 14.09.2007

Статус: Offline

retas

Вот посчастливилось наткнуться на часики на Бейсике - думал вникну, поизвращаюсь но... Мож спецы попробует у себя запустить и подскажут что где подправить?
http://www.micro-examples.com/public....ck.html

Написано на mikroC

a_sergeevich Дата: Ср, 07.01.2009, 18:02  |                                                                                                                Сообщение # 5
Группа: Заблокированные
Ранг:  Начал соображать
Сообщений: 24
Репутация: 0   ±
Замечания:   ±
На сайте с 11.12.2007

Статус: Offline

Кстати с микроСи перевести прогу на микроБейсик не сложно если есть мануал русский на микроСи и английский на микроБейсик (русского нет ещё). Там почти всё совпадает, только синтаксис написания чуток разный.

Я вот сейчас кстати с ребятами с Микрочиповского форума, частотомер добиваю на 628-ом пике с использованием TMR1 и TMR0, прога пишется на микроСи, но если всё завершится удачно, попробую переписать на микроБейсике и выложу тут, а пока кому интересно можете посмотреть то, что получилось: http://slil.ru/26514370 .
Проблема на данный момент заключается в том, чтобы убрать погрешность, которая растёт с ростом частоты, хотя это может быть связано с тем, что проверка проводилась пока только в протеусе и не исключено, что эта погрешность связана с ним.

retas Дата: Вт, 13.01.2009, 08:04  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 447
Репутация: 11   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

Поставил новый микроБейсик и компилятор доволен.
Теперь такой вопрос. В PicSimulatorIDE есть оператор LOOKUP, чем его заменить в микроБейсике. Скажем имели:
. FOR digit = 1 to 5
.........MASK = LOOKUP(0, 2, 4, 8, 128),digit
.........portA_ = MASK
..next digit

В часах повстречал '^v' и 'v^' и как сумел понять по хелпу, этот 'v' держит не значение регистра 'v' а его адрес и в прогре идёт его инкрементирование - чем такие навороты могут облегчить жызнь, разьясните, пжл.
Спасибо.

a_sergeevich Дата: Ср, 14.01.2009, 21:20  |                                                                                                                Сообщение # 7
Группа: Заблокированные
Ранг:  Начал соображать
Сообщений: 24
Репутация: 0   ±
Замечания:   ±
На сайте с 11.12.2007

Статус: Offline

Лучше поставь микроСи, на него хелп есть на русском, да и помощь по нему легче получить.
А в журнале "Радиоаматор" с 1 - 12 за 2006 год по нему полный цикл статей с примерами и т.д и т.п.
ADMIN Дата: Чт, 15.01.2009, 17:16  |                                                                                                                Сообщение # 8
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1087
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

В microbasic аналогичную LOOKUP функцию можно реализовать с помощью оператора select case:
Code

sub function mask(dim num as byte) as byte    ' this function returns masks

    select case num                             ' for common cathode 7-seg. display
      case 0  result = $3F
      case 1  result = $06
      case 2  result = $5B
      case 3  result = $4F
      case 4  result = $66
      case 5  result = $6D
      case 6  result = $7D
      case 7  result = $07
      case 8  result = $7F
      case 9  result = $6F
    end select 'case end
end sub

Это есть в примерах MicroBasic

retas Дата: Чт, 15.01.2009, 20:18  |                                                                                                                Сообщение # 9
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 447
Репутация: 11   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

Си я побаиваюсь - для моих задач он слишком заумен (дай бог микроБейсик осилить а его, гляди, и до конца дней моих хватит, тем более что он ведь не стоит на месте).
Я понимаю что LOOKUP можно сделать с CASE но это не эффектно - микроБейсик наверное бы обиделся да и мне хочется чтоб программа на "одной" странице поместилась.

И если позволите, пара вопросов мимо темы: как можно изменить (увеличить) скорость колеса прокрутки в Windows98 и как при широком мониторе в WindowsXP сжать изображение по горизонтали дабы не было всё растянутым (всё не выходит пообщаться со своим дружком, спецом в таких делах).
Спасибо вам и удачи.

Alex Дата: Пт, 23.01.2009, 00:46  |                                                                                                                Сообщение # 10
Группа: Удаленные
Ранг: 
Сообщений:
Репутация:   ±
Замечания:   ±
На сайте с

Статус:

Quote
sub function mask(dim num as byte) as byte ' this function returns masks

select case num ' for common cathode 7-seg. display
case 0 result = $3F
case 1 result = $06
case 2 result = $5B
case 3 result = $4F
case 4 result = $66
case 5 result = $6D
case 6 result = $7D
case 7 result = $07
case 8 result = $7F
case 9 result = $6F
end select 'case end
end sub


Такие вещи нужно делать через массивы. Я не знаю как это на Бейсику, но думаю чтото в этом роде там есть.
Создаёться таблица констант и через косвенную адресацию выбираеться значение из таблици.
Такой метод будет работать гораздо быстрее чем выше приведённый и ресурсы програмной памяти не будет жрать.

Сообщение отредактировал Alex - Пт, 23.01.2009, 00:47
Yrok Дата: Чт, 19.02.2009, 09:40  |                                                                                                                Сообщение # 11
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 2   ±
Замечания:   ±
На сайте с 27.09.2007

Статус: Offline

Quote
Всунув программу в mikroB и нажав Run получаю предупреждения об ошибках: ожидается "то то" а написано "это".Пробовал поправлять, всё равно компилер недоволен. Вот и хочется чтоб кто понимающий подправил.
Спасибо.
---вставил в microbasic 7.0.0--все компилиться без проблем.
Может ты забыл пик выбрать--если будет стоять другой может отказаться компилить.!!!!!

Quote
В часах повстречал '^v' и 'v^' и как сумел понять по хелпу, этот 'v' держит не значение регистра 'v' а его адрес и в прогре идёт его инкрементирование - чем такие навороты могут облегчить жызнь, разьясните, пжл.
---это называется указатель--по хелпу понял правильно--и эти навороты очень нужны--смотри в программе есть процедура procedure setValue(dim v as ^byte, dim s as byte, dim max as byte)--так вот если параметр V не будет указателем-то что произайдет--ты пытаешься установить часы setValue(@hh, 116, 23)--но в процедуру передастся значение переменной hh , а не сама переменная hh--так что все изменения которые ты проделаешь в процедуре никак неповлияют на hh---а вот передав указатель на ячейку памяти ты будешь изменять саму переменную.)))
ЯНДЕКС Дата: 19.02.2009
retas Дата: Вс, 22.02.2009, 16:09  |                                                                                                                Сообщение # 12
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 447
Репутация: 11   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

Рад, Yrok, что вы жывы здоровы и воскресли на этом форуме. Но оказывается есть проблема по больше - ни какой пример микроБейсика не получается запустить в Протеусе - пишет что не может открыть HEX файл. И чем заменить в микроБейсике оператор LOOKUP (о чем я спрашывал выше)?
Спасибо.
Yrok Дата: Вт, 24.02.2009, 10:20  |                                                                                                                Сообщение # 13
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 2   ±
Замечания:   ±
На сайте с 27.09.2007

Статус: Offline

Quote
Но оказывается есть проблема по больше - ни какой пример микроБейсика не получается запустить в Протеусе - пишет что не может открыть HEX файл.
--скинь любой проект--я посмотрю что и почему не выходит--у меня таких проблем не возникало)))

Quote
И чем заменить в микроБейсике оператор LOOKUP (о чем я спрашывал выше)?
--тебе абсолютно правильно сказал "basicpic" что надо использовать select case--я могу со своей стороны заявить что он полностью аналогичен Lookup!!!!--просто написание немного другое --там все в строку пишется а в microbasic все раскладывается по строкам--что я считаю наиболее хорошо для восприятия!!

Quote
Я понимаю что LOOKUP можно сделать с CASE но это не эффектно
--почему???????

Quote
да и мне хочется чтоб программа на "одной" странице поместилась.
--если имеется ввиду страница микроконтроллера --то заверяю тебя что места займет в памяти контроллера не больше чем Lookup))))
retas Дата: Вс, 01.03.2009, 15:10  |                                                                                                                Сообщение # 14
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 447
Репутация: 11   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

. Уважаемый, Yrok!
. Любой пример из прилагаемых в микроБейсике у меня не запускается в Протеусе - скажем BlinkLED_mB.
. Про CASE и LOOKUP. Как я понимаю, CASE логично использовать когда надо много чего делать, иначе неразумно ибо он использует IF и занимает много места а LOOKUP, когда надо иметь дело только с одним регистром, самое то, и использует он косвенный переход. И потом, чем больше позволено записать в одну строку, тем мне удобнее: скажем после метки в той же строке можно писать что либо, а после ELSE нельзя или если подряд мне надо поставить штуки 3-5 nop, каждому нужно дать по строке и получается, что на одной странице ни как не получается а так хочется свою писанину одним взглядом объять - приятно ведь смотреть на программу для часов. Только из за возможности уменьшить длину своих исходников я и поглядываю на микроБейсик.
. Спасибо.
Yrok Дата: Пн, 02.03.2009, 10:50  |                                                                                                                Сообщение # 15
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 2   ±
Замечания:   ±
На сайте с 27.09.2007

Статус: Offline

Привет!!
Quote
Любой пример из прилагаемых в микроБейсике у меня не запускается в Протеусе - скажем BlinkLED_mB.
--у меня все работает--выложи проект протеуса --посмотрю почему не выходит у тебя.
Насчет Case--насколько я знаю в microbasic больше ничего альтернативного нет--кстати почему думаешь что Lookup использует косвенную адресацию???
Насче записи в одну строку--так оператор Case тоже можно записать в одну строку
Quote
select case n case 1 m=2 case 2 m=3 case 3 m=4 end select
--компилятор принимает и не ругается
Форум Picbasic.ru » Программирование МК » Mikrobasic » Часы на mikroB (Однако)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: