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

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

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

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


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


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

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

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


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