Serin, помогите разобраться.
|
|
fire_on_line6436 |
Дата: Ср, 26.08.2009, 00:34 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
4
Замечания:
±
На сайте с 22.08.2009
Статус:
Offline
|
помогите второй день бьюсь, не получается принять данные с терминала. в чём я неправ? И почему вместо первого символа при передаче всякая ахинея? Заранее сенкс. @ device PIC16F877A, XT_osc, wdt_on, wrt_off, lvp_off, pwrt_on, protect_off DEFINE OSC 4 INCLUDE "MODEDEFS.BAS" i var byte W var byte for i =1 to 100 serout porta.3, T2400, [ #i,13] serin porta.2, t2400, [w] serout porta.3, T2400, [ "cool",#w,13] pause 300 next end
Сообщение отредактировал
fire_on_line6436 - Ср, 26.08.2009, 00:35
|
|
|
|
terrarus |
Дата: Ср, 26.08.2009, 12:35 | Сообщение # 2 |
Группа:
Пользователи
Ранг:
Помогаю всем
Сообщений:
451
Замечания:
±
На сайте с 21.08.2008
Статус:
Offline
|
Вот ваши отлаженные программа и файл test.DSN Но я давно уже не использую PicBasiсPRO а пользуюсь ROTON+IDE . Они родные братья. Поэтому синтаксис PicBasikPRP поддерживается ROTON-ом почти на 99%. вот как я переделал вашу программу: Include "PROTON_4.Inc" Device = 16F877A i var Byte w var Byte For i = 1 To 100 SerOut PORTA.3, T2400, [#i,13] SerIn PORTA.2, T2400, [w] SerOut PORTA.3, T2400, ["cool ",#w,13] pause 300 Next End Здесь в архиве файлы test.bas , test.hex и модель test.DSN Советую пользоваться PTOTON , и мощнее и очень удобно. Тем кто знаком c PicBasiсPRO абсолютно не составит труда перейти на PTOTON Если заинтересуетесь PTOTON советую посетить ресурс http://terrarus.ucoz.ru/proton_plus_ide/index.html А причина у вас как мне кажется в настройках PORTA. Успехов.
Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
|
|
|
|
fire_on_line6436 |
Дата: Чт, 27.08.2009, 01:18 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
4
Замечания:
±
На сайте с 22.08.2009
Статус:
Offline
|
Quote (terrarus) Вот ваши отлаженные программа и файл test.DSN Но я давно уже не использую PicBasiсPRO а пользуюсь ROTON+IDE . Они родные братья. Поэтому синтаксис PicBasikPRP поддерживается ROTON-ом почти на 99%. Спасибо, с удовольствием в ближайшее время последую вашему совету. Но сейчас очень хочется понять в чём моя ошибка, учитывая, что по всем справочникам код верен. Может кто всё таки знает?
|
|
|
|
Dmitry |
Дата: Чт, 27.08.2009, 02:58 | Сообщение # 4 |
Группа:
Пользователи
Ранг:
Могу и подсказать
Сообщений:
157
Замечания:
±
На сайте с 12.05.2009
Статус:
Offline
|
Quote (fire_on_line6436) учитывая, что по всем справочникам код верен Эка, вы, батенька, самоуверенны... Вот вам кусочек из даташита на 16ф877: Other PORTA pins are multiplexed with analog inputs and the analog VREF input for both the A/D converters and the comparators. The operation of each pin is selected by clearing/setting the appropriate control bits in the ADCON1 and/or CMCON registers. Note: On a Power-on Reset, these pins are configured as analog inputs and read as ‘0’. Вкратце это означает, что после сброса те ножки МК, где есть входы АЦП, находятся в режиме АЦП и с них читается 0. Чтобы перевести все ноги в режим цифровых входов, надо ADCON1 = 6 Вторая ошибка в строке SERIN - читаемую переменную вы поставили в квадратные скобки. Слгласно описанию команды serin в квадратных скобках указываются не принимаемые данные, а квалификационный байт (или несколько байт), т.е. программа ждет, пока от терминала придут эти байты, а затем уже начинает прием в переменные, перечисленные после квадратных скобок. У вас их там вообще нет. Короче, вот рабочий код: @ device PIC16F877A, XT_osc, wdt_on, wrt_off, lvp_off, pwrt_on, protect_off DEFINE OSC 4 INCLUDE "MODEDEFS.BAS" i var byte W var byte ADCON1 = 6 for i =1 to 100 serout porta.3, T2400, [ #i,13] serin porta.2, t2400, w serout porta.3, T2400, [ "cool",#w,13] pause 300 next end P.S. Почему от первого serout-a на терминале мусор - не знаю. Мож, глюк модели в протоне. В железе никогда подобного не видел.
Сообщение отредактировал
Dmitry - Чт, 27.08.2009, 03:01
|
|
|
|
fire_on_line6436 |
Дата: Пт, 28.08.2009, 01:54 | Сообщение # 5 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
4
Замечания:
±
На сайте с 22.08.2009
Статус:
Offline
|
Большое человеческое спасибо. Понимаю что задаю идиотские вопросы но всё же вот такой код: Code @ device PIC16F877A, XT_osc, wdt_on, wrt_off, lvp_off, pwrt_on, protect_off DEFINE OSC 4 INCLUDE "MODEDEFS.BAS" w var byte ADCON1 = 6 main: serout porta.3, T2400, [ "InputW",13] SerIn porta.2,T2400, w if w=255 then serout porta.3, T2400, [ "Kyky",13] goto main end Посылаю число 255 и не чего не работает, подскажите где я не прав?
Сообщение отредактировал
fire_on_line6436 - Пт, 28.08.2009, 13:30
|
|
|
|
Dmitry |
Дата: Сб, 29.08.2009, 00:46 | Сообщение # 6 |
Группа:
Пользователи
Ранг:
Могу и подсказать
Сообщений:
157
Замечания:
±
На сайте с 12.05.2009
Статус:
Offline
|
А каким символом ты его посылаешь? Терминал посылает коды нажатых клавиш, а для байта FF какая клавиша?
|
|
|
|
fire_on_line6436 |
Дата: Сб, 29.08.2009, 01:25 | Сообщение # 7 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
4
Замечания:
±
На сайте с 22.08.2009
Статус:
Offline
|
Quote (Dmitry) А каким символом ты его посылаешь? Терминал посылает коды нажатых клавиш, а для байта FF какая клавиша? с помощью COM Port Toolkit или VB как строку, доходит в исковерканном виде. А как правильно?
|
|
|
|
Dmitry |
Дата: Сб, 29.08.2009, 01:41 | Сообщение # 8 |
Группа:
Пользователи
Ранг:
Могу и подсказать
Сообщений:
157
Замечания:
±
На сайте с 12.05.2009
Статус:
Offline
|
Чего-то я такое припоминаю, выводил через serout текстовые сообщения, принимал их штатным виндовым гипертерминалом, так маленькую букву "я" терминал упорно пропускал. По-моему, ее код как раз 255. Так что, похоже, это какая-то особенность ANSI-терминала - видимо, байт FF имеет какое-то служебное значение.
Сообщение отредактировал
Dmitry - Сб, 29.08.2009, 01:44
|
|
|
|
xxxmonejall |
Дата: Сб, 21.01.2012, 14:35 | Сообщение # 9 |
Группа:
Проверенные
Ранг:
Продвинутый
Сообщений:
139
Замечания:
±
На сайте с 17.05.2008
Статус:
Offline
|
Доброго времени суток, столкнулся с проблемой. Спаял схемку на PIC16F84A, и написал программу которая посылает с пк числа, так проблема собственно в том что контролер принимает непонятные символы, при этом если корочу выводы на FT232 TX и RX, на пк все гуд что уходит то и приходит, думал что помехи. Взял экранированный провод, не помогло. Скорость и режим передачи одинаковые. В чем может быть проблема? Вот код:
@ device pic16F84A, xt_osc, wdt_off, protect_off, pwrt_on include "MODEDEFS.BAS" DEFINE char_pacing 200 DEFINE OSC 4 Define LCD_DREG PORTb Define LCD_DBIT 4 Define LCD_RSREG PORTb Define LCD_RSBIT 1 Define LCD_EREG PORTb Define LCD_EBIT 2 define lcd_commandus 2000 define lcd_dataus 50 diodes Var word data1 Var word data2 Var word Trisb = %00000100 Portb = %00000000 PortA = %00000000 TrisA = %00000000 diodes = 0
Lcdout $fe,1 pause 1000
lcdout $fe,1, "Test 1.1" pause 1000 main: serin portb.3, T2400, data1 PAUSE 100 lcdout $fe, $C0, data1
pause 500 goto main e
|
|
|
|
rvstar |
Дата: Вс, 22.01.2012, 14:36 | Сообщение # 10 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
69
Замечания:
±
На сайте с 09.10.2007
Статус:
Offline
|
Quote (Dmitry) Вкратце это означает, что после сброса те ножки МК, где есть входы АЦП, находятся в режиме АЦП и с них читается 0. Чтобы перевести все ноги в режим цифровых входов, надо ADCON1 = 6
А Для 16f877a еще CMCON = $FF, компаратор отключить
Сообщение отредактировал
rvstar - Вс, 22.01.2012, 14:40
|
|
|
|