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 на терминале мусор - не знаю. Мож, глюк модели в протоне. В железе никогда подобного не видел.