Отговори на тема  [ 19 мнения ]  Отиди на страница Предишна  1, 2
Проблем при програмиране на атмега16 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Мар 04, 2007 10:21 pm
Мнения: 70
Мнение 
VSU написа:
и айде да обесниш идеята от

PORTD = PORTD ; то не е ли и без това равно

Идеята беше процесора да направи нещо за 1 такт, безз то да се отрази някъде. До днес не бях чувал за nop(). A защо на AVR студио ми дава грешка "undefined reference to `nop'"?


Пон Мар 31, 2008 9:06 am
Профил
Ранг: Напреднал
Ранг: Напреднал

Регистриран на: Нед Авг 14, 2005 1:08 pm
Мнения: 433
Местоположение: Казанлък
Мнение 
провери в компилатора който ползваш как се ползва този ноп
при някои са направени като макроси при други с асемблерски команди

при AVR Studio
само

nop
без скоби

при CodeVisonAVR

Inline assembly may also be used.
Example:

#asm("nop")

In order to use multiple instructions in inline assembly, the \ separator is required.

Example:

#asm("nop\nop\nop")

or

#asm
nop
nop
#endasm


Пон Мар 31, 2008 10:57 am
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Мар 04, 2007 10:21 pm
Мнения: 70
Мнение 
:evil:
Даже и без скоби дава nop undeclared.
Вмъкването на асемблерски код стана така asm("nop":: );
А как се оправяте с help-а на avr studio-то?
Например при visual studio си има търсачка и като търсиш има описание на функциите и примери. При хелпа на AVRStudio няма търсачка


Последна промяна tiger на Вто Апр 01, 2008 9:49 am, променена общо 1 път



Пон Мар 31, 2008 8:56 pm
Профил
Ранг: Напреднал
Ранг: Напреднал

Регистриран на: Нед Авг 14, 2005 1:08 pm
Мнения: 433
Местоположение: Казанлък
Мнение 
Avr Studio :


.include "m16def.inc"

.def temp =r16 ; Define temporary variable
.def rtmp =r17

rjmp RESET ;Reset Handle

RESET:
;***** Initialize stack pointer
;* Initialize stack pointer to highest address in internal SRAM
;* Comment out for devices without SRAM

ldi r16,high(RAMEND) ;High byte only required if
out SPH,r16 ;RAM is bigger than 256 Bytes
ldi r16,low(RAMEND)
out SPL,r16



ldi temp,$ff
out PORTD,temp ; Set all pins at port D high
out DDRD,temp ; Set port D as output

ser rtmp
forever:
in temp,PIND
eor temp,rtmp
out PORTD,temp ; Put the character onto Port B
nop
rjmp forever ;eternal loop


Вто Апр 01, 2008 12:14 am
Профил ICQ
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 19 мнения ]  Отиди на страница Предишна  1, 2

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 5 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни