Spi_isr:
push r24 ; save used register
in r24,sreg ; save sreg
push r24
B = Spdr
Set Rbit ' we received something
pop r24
!out sreg,r24 ; restore sreg
pop r24 ; and the used register
Return
spislave
Подскажите, что и как изменить чтобы принять два байта?
В этом примере баскома минимум. И вообще, в этом куске столько же spislave, сколько и в любой другой программе
Вероятно это подпрограмма по прерыванию, где сохраняют регистры, и потом восстанавливают, а между этим приравнивают переменные, и устанавливают бит, или вывод.
Все делают ошибки, только мудрецы - новые, а дураки - старые.
Вопрос как принять два байта именно в прерывании.
Пробовал так но не прокатывает, и в b(1) и в b(2) одинаковые данные из того байта что был отправлен первым.
то есть в прерывании принимаю байт, устанавливаю бит что принят первый байт и если произошло второе прерывание и бит = 1 то записываю уже в другую переменную и сбрасываю бит, так?
[uquote="ВасилийВикторович",url="/forum/viewtopic.php?p=3777157#p3777157"]в прерывании принимаю байт, устанавливаю бит что принят первый байт[/uquote]
Ну это уже как вы придумаете протокол. "Принять два байта" это не два пальца. Какой из них первый, если передача идет постоянно?. IMHO конечно, но в любой многобайтной посылке должен присутствовать маркер начала кадра и контр. сумма в конце. Принимать в промежуточный буфер, если контрсумма в порядке - выдавать данные в обработку.
Доброго времени.
Народ помогите решить проблему . Нужен УАРТ для приема строки по количеству символов , и если по какой то причине передача в друг прекращается то мк не висел ( по тому что ждет все символы), если у кого есть пример то выручите пожалуйста меня а то уже не знаю куда обратится.
Просто. При начале приёма запускается тайиер. Каждый поступивший байт обнуляет таймер. Если он досчитал до заданного значения - аварийно завершаем приём, пытаемся восстановить, если это возможно, принятую строку, и устанавливаем состояние ГОТОВНОСТЬ К ПРИЁМУ. Как на Баскоме - не знаю, не пользуюсь. А нормально, на асме - как два байта...
Enable Interrupts
Enable Int0
On Int0 Button:
do 'главный цикл
For B = 0 To 3
Portd.0 = 1
Waitms 200
Portd.0 = 0
Waitms 200
Next B
Powersave
loop
End
Button:
Return
Помогите пожалуйста. Нужно из строки (Dim Pzem(25) As Byte) = F8041408988BF800017A7D0003073D000001F4005F0000930E вырезать скажем 0898 и перевести в число должно получится 2200 . Нужно сделать без Overlay.
[uquote="OLEGKARAS",url="/forum/viewtopic.php?p=3798087#p3798087"]Нужно из строки (Dim Pzem(25) As Byte) = F8041408988BF800017A7D0003073D000001F4005F0000930E[/uquote]
В представленном виде оно, по идее, не as Byte, а as String. Для строк копайте в сторону Split, Instr и Hexval.
Друзья ,помогите пожалуйста или подскажите как изменить этот код,в программировании не силен ,есть только азы и то со школы ).
Все работает,но хотелось бы еще и переключать диапазоны .
Приветствую всех!
Такая задача. Понадобилось мне для одного проекта задействовать LCD дисплей 16*2. Было у меня пара штук абсолютно новых. Сделал код, запускаю, вроде основа работает, но на экране- пустота. Для проверки набил классический кусок кода "Hello world" - на экране пустота. Облазил все доступные источники информации - вроде все делаю правильно. Но почему оно не хочет работать? Я первый раз сталкиваюсь с ЖК индикатором, может быть что-то делаю неправильно. Гляньте, кто в этом силен, а то застрял на ерунде.