Search the Community
Showing results for tags 'assembler'.
-
Извечный вопрос не дает покоя. Кто и на чем все же предпочитает вести работу с контроллерами? Лично я как научился работать на С, так и не могу перейти на Assembler, да и не очень то хочется это делать. Какие все же преимущества и недостатки, окромя понятности и не очень понятности?
- 482 replies
-
- AVR
- Язык программирования
-
(and 7 more)
Tagged with:
-
Есть ситуация когда пишу код для AVR на ассемблере, на компьютере, где у меня нет админских прав, то есть устанавливать программы на этом компьютере я не могу. Использую протеус восьмой, portable версию, она позволяет писать программы на ассемблере. Но хотелось бы что-нибудь подобное AVR Studio 4.19 в portable версии. Прошивать контроллер на этом компьютере мне не нужно, нужен .hex файл для симуляции в протеус. Что можете посоветовать товарищи.
-
Можно пожалуйста, комментарий к каждой строчке кода #include <P16F628A.INC> LIST p=16F628A ; директива для указания типа МК __CONFIG 03F10H ; директива установки битов конфигурации Sec0 equ 20h Sec1 equ 21h shet1 equ 22h smehen equ 23h shet equ 24h kar equ 25h var equ 26h shet2 equ 27h #define rb7 PORTB,7 org 0 ; Начать выполнение программы с адреса 0 PC. goto Start Start movlw .255 ;копирования 255 в указанный регистр w movwf PORTB movlw .0 movwf PORTA movlw .7 ;копирования 7 в указанный регистр w movwf CMCON bsf STATUS,5 ;переход в Банк 1 movlw .0 ; movwf TRISB movlw .0 ; movwf TRISA bsf PCON,3 bcf STATUS,5 ;переход назад в Банк 0 clrf shet nac movlw .10 ;вращ. стрелки movwf shet2 gif1 movlw .0 movwf smehen call pod movlw .7 movwf smehen call pod movlw .14 movwf smehen call pod movlw .21 movwf smehen call pod decfsz shet2,F goto gif1 movlw .10 ; бьющ. сердце movwf shet2 gif2 movlw .28 movwf smehen call pod movlw .35 movwf smehen call pod movlw .28 movwf smehen call pod movlw .28 movwf smehen call pod decfsz shet2,F goto gif2 movlw .6 ; пульсир. звезда movwf shet2 movlw .42 movwf smehen call pod1 movlw .42 movwf smehen call pod1 movlw .49 movwf smehen call pod1 movlw .56 movwf smehen call pod1 movlw .63 movwf smehen call pod1
-
Здравствуйте. Вопрос к гуру, на сколько будет меньше разрыв данных при посылке через SPI 16бит, если ожидание готовности написать на ассемблере? И сразу второй вопрос, как правильно её вставить? void sendWord(uint16_t data) { SPDR = data; while(!(SPSR & (1<<SPIF))); // это заменить на ассемблерную вставку //вот тут видно задержку SPDR = data>>8; while(!(SPSR & (1<<SPIF))); // и это заменить на ассемблерную вставку } Этот код не работает (ассемблерная вырезка из даташита). Я не соображаю... asm volatile( "Wait_Transmit: in r16, SPSR sbrs r16, SPIF rjmp Wait_Transmit ret" ); Пока писал сообщение, понял свой косяк, регистр r16 в строке выше у меня не соответствует data.Тогда еще вопрос, как полностью этот кусок "sendWord" написать на ассемблере? Заранее Спасибо!
-
Не могу запустить асинхронный режим. Ниже будет представлен код которым пытаюсь отладить. Там в 1 коде идёт работа от внутреннего источника таков (стоит 1МГц). После 5 миганий таймер должен перейти в асинхронный режим и мигать с частотой в 1 Гц. У меня происходит 5 миганий потом ничего. Фьюзы менять пробовал, ничего не дало, сейчас дефолт. Корпус кварца к земле тянуть пробовал - безрезультатно. Возможно что-то в подключении накосячил, если не видно на фото ниже, спрашиваете, нужно будет - нарисую схему. Компилятор Atmel Studio 7 Шью через Sind Prog 2.1.1 + USBasp 2.0 Вот код: .macro outi ldi r16, @1 out @0, r16 .endm .org $000 rjmp reset .org $001 reti .org $002 reti .org $003 reti .org $004 rjmp timer2_ovf .org $005 reti .org $006 reti .org $007 reti .org $008 reti .org $009 reti .org $00A reti .org $00B reti .org $00C reti .org $00D reti .org $00E reti .org $00F reti .org $011 reti .org $012 reti .ORG INT_VECTORS_SIZE reset: .equ portout=portd .equ ddrout=ddrd .def led=r17 .def mask=r18 .def counter=r19 outi spl,low(ramend) outi sph,high(ramend) outi ddrout, 0xff outi tccr2, 0b00000111 outi timsk, 1«toie2 ldi led,1«5 ldi mask,1«5 sei cycle: cpi counter, 10 breq offtim rjmp cycle timer2_ovf: inc counter out portout, led eor led, mask reti offtim: outi timsk, 0«toie2 rjmp asinxron asinxron: outi assr, 0b00001000 back: in r16, assr cpi r16, 0b00001000 brne back outi tccr2, 0b00000101 outi tcnt2, 0 outi ocr2, 0 outi timsk, 1«toie2 m1: rjmp m1 Верх меги на фото слева.
-
Доброго дня Пересматривая множество мануалов и примеров по ассемблеру для AVR, возник такой вопросик по работе с памятью данных (SRAM). Множество документов и примеров пересмотрел, нигде не нашел ответа. В начале программы мы можем в сегменте данных зарезервировать память под некие переменные. Для VAR1, например, резервируем один байт .DSEG VAR1: .BYTE 1 после чего с помощью LDS/STS с ним работаем. А теперь самая мякотка. Директивой BYTE мы можем зарезервировать более одного байта для переменной. Если я правильно понимаю, то данный код .DSEG VAR2: .BYTE 8 я создаю некое подобие массива, что-то вроде char VAR2[8], если провести аналогию с Си. Каким образом на ассемблере я могу работать с N-ным байтом зарезервированной области VAR2?
-
Вот код: @@@@@@@@@@@@@@@@@@@ @ @Настройки @ @@@@@@@@@@@@@@@@@@@ .syntax unified .thumb .cpu cortex-m4 @@@@@@@@@@@@@@@@@@@ @ @Макросы @ @@@@@@@@@@@@@@@@@@@ .section .text .macro MOV32 regnum,number MOVW \regnum,:lower16:\number MOVT \regnum,:upper16:\number .endm .macro JMP address B \address .endm @@@@@@@@@@@@@@@@@@@@ @ @Табица прерываний @ @@@@@@@@@@@@@@@@@@@@ .word 0x2001BFFF @ Вершина стека, зависит от размера ОЗУ .word Start+1 @ Вектор сброса, обязательно +1 @@@@@@@@@@@@@@@@@@@@ @ @Код @ @@@@@@@@@@@@@@@@@@@@ Start: MOV32 R0, 0x00 MOV32 R1, 0b01010101010101010101010101010101 STR R1, [R0] B Start .end Вот логи компилятора: При прошивке, конечно, пишет: Среда Coide 1.7.8. Контроллер Stm32f407vg Заранее спасибо.
-
Доброго времени суток! Кто разбирается с Atmega128, ассемблером и кому не жалко времени, пожалуйста помогите. Как можно корректировать скорость падения маятника (он должен постеменно набирать скорость падения и плавно замедляться к верхней точке)... Какие данные нужно менять?! Спасибо! логин маятник 2.zip
- 5 replies
-
- микроконтроллер
- Atmega
- (and 7 more)
-
Всем доброго времени суток! Я у Вас тут впервые поэтому если что не так пните по нужному адресу. Суть проблемы такова: паять прошивать микроконтроллеры научился, а после захотел научиться писать под AVR программы. С большим энтузиазмом взялся читать книгу Джона Мортона(прилагаю). Все было более-менее понятно до программы "Частотомер". Далее пошел темный лес. Решил повторить ее, переписал код, собрал схему попутно исправляя ошибочную схему и код автора. Скомпилировал без ошибок и начал испытывать в Proteus. по прилагаемому скриншоту видно что что-то не так. А что именно не могу понять. Мои догадки что это пункт кода про конвертирование цифр. И так бился перечитывал, находил у автора несоответствие подаваемого материала данной программы в обучении с его готовым листингом. Но даже с этими коррективами она не работает. Спасибо за понимание. Morton._AVR_VVODNIY_KURS.djvu частотомер.txt