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

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

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

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



Input

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

1

Есть МК устроиство которое делает замер АЦП и пересчет значения в определенную величину.Данные отправляются на ком порт компа по УАРТ
Есть согласующая программа которая должна при нажатии на кнопку послать некую команду, допустим число 1 (переменная С в моем коде) и тогда контроллер отошлет  по УАРТ все данные снятые с АЦП.Так вот, симулирую все это в ПРОТЕУС подключаю виртуальный терминал и вот тут возникает проблема.Мне нужно чтобы как только я ввел цифру 1
он мне все выдал.На самом же деле пока не введешь цифру 1+ЕНТЕР, контроллер ничего не дает.

$regfile = "m32def.dat"
$crystal = 8000000
$baud = 9600

Config Porta = Input
Config Adc = Single , Prescaler = Auto , Reference = Internal
Start Adc
Porta = &B11111111

Dim C As Word
Dim W0 As Word
Dim W1 As Word

Print "TEST ADC"

Do
Input "Command=" , C            'ожидаем число 1 которое должно придти по УАРТ

If C = 1 Then W0 = Getadc(0) : Print "ADC0=" ; W0   'если переменна С=1, тогда начинаю пересчет
If C = 1 Then W1 = Getadc(1) : Print "ADC1=" ; W1

Loop

Отредактировано jimbaton (2008-12-10 18:30:17)

0

2

Похоже это не реакция "контроллера" а поведение "терминала".
Нужно настроить "виртуалный терминал" на передачу любого введенного в консоль символа.........не помню как такой режим называется и есть ли он в том "терминале"...:)
Можно попробовать настроить тип терминала и поведение для "перевода коретки" (перескок на нижнюу строку) и т.д.
Программа контроллера похоже не при чем.

0

3

какая терминалка позволяет такие настроики?

0

4

Попробуй так
$regfile = "m32def.dat"
$crystal = 8000000
$baud = 9600

Config Porta = Input
Config Adc = Single , Prescaler = Auto , Reference = Internal
Start Adc
Porta = &B11111111

Dim C As Word
Dim W0 As Word
Dim W1 As Word
Dim A As Bit

Print "TEST ADC"

Do
'Input "Command=" , C           'ожидаем число 1 которое должно придти по УАРТ

A = Ischarwaiting()

If A = 1 Then
          C = Waitkey()
          If C = 1 Then
                    W0 = Getadc(0) : Print "ADC0=" ; W0    'если переменна С=1, тогда начинаю пересчет
                    W1 = Getadc(1) : Print "ADC1=" ; W1
          End If
End If

Loop

0

5

Возник вопрос, а есть где-то ограничение буфера "input"? Ведь когда сам эмулируешь ввод, то можно это всё отследить, а если использовать оператор "input", то как? Ресурсы МК не резиновые же...

0

6

не понял вопроса

0

7

В коде используем "input", можно ввести 1 знак, а можно ввести 100к знаков (абсурдно, но возможно). Вот как поведет себя код при переполнения ОЗУ и как это ограничивать используя именно оператор "input"?
Или при инициализации переменной это происходит?

Отредактировано RDW (2011-06-07 19:15:40)

0

8

РАЗВЕ?
А в справке иное ;)

в примере в справке всё прекрасно показано:

Dim V As Byte , B1 As Byte
Dim C As Integer , D As Byte
Dim S As String * 15

Input "Use this to ask a question " , V
Input B1                                                   'leave out for no question

Input "Enter integer " , C
Print C

Inputhex "Enter hex number (4 bytes) " , C
Print C

Inputhex "Enter hex byte (2 bytes) " , D
Print D

Input "Enter your name " , S
Print "Hello " ; S

Коротко: если байт, то сколько примет? а если integer,

0

9

А если String то больше 15 не примет? Выдаст ошибку, точнее событие ошибки? Или просто игнорить будет всё, что свыше?

0

10

а как вы сами-то думаете? :)
конечно проигнорирует.
тут сказывается отсутствие понимания работы МК и ассемблера. Вот для чего вначале учат основы ассма, а потом пишут на ЯВУ...!

-1

11

Александр Д., вы второй раз уже пытаетесь приписать людям того, что нет.
Я задаю вопросы чтобы получать на них опытных пользователей Баскома, а не для получения очередного тычка.
А вопрос вполне адекватный был, у меня нет реального времени для проверки всех ситуаций на живую (на железе), возможно позже всё руками опробую...
Если вы не понимаете сути проблемы и не можете дать ответ понятный, не стоит тогда пытаться отвечать.
И что значит "проигнорирует"? Слово для данного места вообще не применимо. Всё зависит от применения. Если я через RX/TX+терминал буду слать в инпут данные, то как это будет отображаться внешне? Он встанет на 15 знаке или повиснет (если обработчик ошибок не настроен)?

0