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

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

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

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


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Переход от баскома к ассемблеру.


Переход от баскома к ассемблеру.

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

1

Привет всем. Подскажите пожалуйста как организовать переход от баскома к ассемблеру. Как я понял для того чтобы использовать переменные в ассемблеровских вкладках, нужно эту переменную и объявить по ассембрерному. Переменные объявленные по баскому, в ассемблеровских вкладках у меня не работают. Суть проблемы вот в чём, объявляю переменную по ассемблеровски:

Код:
$asm
.def Temp1 = R18
$end Asm

Далее имеется часть кода критичная по времени выполнения (важна каждая наносекунда). Основа заключается в выводе данных этой переменной в порт.

Код:
$asm
Out Portc , Temp1
$end Asm

И там вроде бы всё хорошо работает, но засунуть данные в переменную Temp1 у меня получилось тоже только по ассемблерному:

Код:
'$asm
'ldi Temp1,&B00000011
'$end Asm


Но дело в том, что всё сложное преобразование данных для переменной Temp1 будет писаться в баскоме. Уже всё перепробовал, не получается засовывать данные в эту переменную вот так:

Код:
Temp1 = &B00000011


Выдаёт ошибку. Если объявляю две переменные с одним именем, по баскому и по ассемблеру, ошибку не выдаёт, но и данные не пересылает. Есть ли какой то выход из этой ситуации?

0

2

dim Temp1 as byte   'определение переменной

!lds r16 , {Temp1}   'из переменной в регистр
!out portc , R16        'из регистра в порт

!in r16 , pinc            'из порта в регистр
!sts {Temp1} , r16   'из регистра в переменную

+1

3

и не забываем про PUSH/POP :)

0

4

Спасибо большое, буду пробовать.

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Переход от баскома к ассемблеру.