Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » О программе BASCOM AVR/8051 » Проблема с Bascom или МК?


Проблема с Bascom или МК?

Сообщений 1 страница 12 из 12

1

Здравствуйте! Такой код;

$regfile = "m128def.dat"
$crystal = 14745600
$hwstack = 128
$swstack = 128
$framesize = 128

Dim A As Byte
Dim Cin As String * 200

'LCD
Config Lcd = 16 * 4                                         'configure lcd screen
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0
Cursor Off
Locate 1 , 1
Lcd "Power ON!"
Wait 1
Cls
A = 0

Do
Locate 1 , 1
Incr A
Cin = Str(a)
Lcd Cin
Waitms 250
Loop

После запуска контроллера на экране числа меняются не от 1 до 255 дальше 0 и снова по возрастанию, а таким образом:
1-39, 0-39, 80-129, 100-129, и так далее.
Может подскажите в чем проблема: среде, железе, коде программы, дне недели ... Промучился на разных Bascom-ах, ничего не помогает!!!

0

2

что-то я не понял, что на выходе получается, но можно попробовать:

- Cin сделать не 200, а временно 10 байт (для ваше кода этого выше крыши);
- попробовать переименовать во всём коде Cin, скажем просто в С;
- попробовать статично вывести на индикатор число через переменную A;
- попробовать убрать из кода работу с LCD и заменить на вывод данных через UART (соответственно нужно чтобы было куда выводить данные (например в компьютер), это для отладки...эксперимент.

зы: вообще код правильный, складывается такое впечатление, что проблема с МК, у вас по питанию стоят ёмкости (керамика и электролит)?

Отредактировано RDW (2016-08-31 15:38:55)

0

3

SapphireLion
Может попробовать вот так:

Код:
 Incr A
   Cin = Str(a)
   Waitms 250
   Lcd Cin

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

Отредактировано Sergik07 (2016-08-31 19:20:35)

0

4

Попробуйте так

$regfile = "m128def.dat"
  $crystal = 14745600
  $framesize = 128
  $hwstack = 128
  $swstack = 128

  Dim A As Byte
  Dim Cin As String * 200

  Dim Буфер_lcd_str As String * 20

'LCD
  Config Lcd = 16 * 4       'configure lcd screen
  Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0

  Cursor Off

  Locate 1 , 1
  Lcd "Power ON!"
  Wait 1
  Cls

  A = 0

  Do

     Incr A

     Буфер_lcd_str = Str(a)
     Буфер_lcd_str = Format(буфер_lcd_str , "  0")       'Убираются незначащие нули
     'Буфер_lcd_str = Format(буфер_lcd_str , "000")       'Не убираются незначащие нули

     Locate 1 , 1
     Lcd Буфер_lcd_str

     Waitms 50

  Loop
End

0

5

При использовании $Regfile="m48def.dat" Mega48 в DIP корпусе не видится напрочь !
Стоит использовать $Regfile="m48pdef.dat" - все прекрасно работает, шьется и т.п.

В Протеусе - обратная картина...
Один и тот же проект - работает зеркально (см. выше) !

На каком этапе глюк ? ;)

0

6

Ни на каком. В протеусе или в кодевижн (и возможно в других) есть такая фича - возможность записать и потом считать любое значение с несуществующего регистра. В реалии на реальном проце если так сделать - картина будет неоднозначной, т.е. может быть считано и FF и 00 и вообще мусор какой. То-же самое есть и в LCD и в 1820 и в 3231. "Дырок" там хватает. Например, Сашины и Шилова либы для LCD у меня не выдерживали "суточный" тест, кракозяблили, а в протеусе они работают без глюков ))) Чо за нах???
Так шо этот вопрос - железо или софт  возможно будет вечный.

0

7

Nord, у тебя лицензия?

0

8

RDW написал(а):

Nord, у тебя лицензия?

Нет.

0

9

Тогда смело можно плюсовать ещё это.

0

10

RDW написал(а):

Тогда смело можно плюсовать ещё это.

Возможно, что "нелицензия" играет роль, не оспариваю, но, тем не менее, можно использовать и "m328def.dat" и "m328pdef.dat" - монопенисуально... ;)
Работает одинаково (для 328). ;)

0

11

а бывает мультипенисуально? :D

0

12

RDW написал(а):

а бывает мультипенисуально?

в солдатской бане, например....  :blush:

0


Вы здесь » Программирование ATMEL в BASCOM. » О программе BASCOM AVR/8051 » Проблема с Bascom или МК?