Поиск по сайту

Результаты поиска по тегам 'asm'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип публикаций


Категории и разделы

  • Вопрос-Ответ. Для начинающих
    • Песочница (Q&A)
    • Дайте схему!
    • Школьникам и студентам
    • Начинающим
    • Паяльник TV
    • Обсуждение материалов с сайта
  • Радиоэлектроника для профессионалов
    • Световые эффекты и LED
    • Роботы и модели на ДУ-управлении
    • Автоматика
    • Самодельные устройства к компьютеру
    • Программное обеспечение
    • Автомобильная электроника
    • Системы охраны и наблюдения. Личная безопасность
    • Питание
    • Электрика
    • Промышленная электроника
    • Ремонт
    • Металлоискатели
    • Измерительная техника
    • Мастерская радиолюбителя
    • Сотовая связь
    • Спутниковое ТВ
    • КВ и УКВ радиосвязь
    • Жучки
    • Телефония и фрикинг
    • Высокое напряжение
    • Идеи и технологии будущего
    • Справочная радиоэлементов
    • Литература
    • Разное
  • Аудио
    • FAQ, Технологии и компоненты
    • Для начинающих
    • Источники звука
    • Предусилители, темброблоки, фильтры
    • Питание аудио аппаратуры
    • Усилители мощности
    • Акустические системы
    • Авто-аудио
    • Ламповая техника
    • Гитарное оборудование
    • Прочее
  • Микроконтроллеры
    • МК для начинающих
    • AVR
    • PIC
    • STM32
    • Arduino и Raspberry Pi
    • ПЛИС
    • Другие микроконтроллеры и семейства
    • Алгоритмы
    • Программаторы и отладочные модули
    • Периферия и внешние устройства
    • Разное
  • Товары и услуги
    • Коммерческие предложения
    • Продам-Отдам, Услуги
    • Куплю
    • Уголок потребителя
    • Вакансии и разовая работа
    • Наши обзоры и тесты
  • Разное
    • Конкурсы сайта с призами
    • Сайт Паяльник и форум
    • Курилка
    • Технический английский (English)
    • Наши проекты для Android и Web
    • FAQ (Архив)
    • Личные блоги
    • Корзина
    • Вопросы с VK
  • ATX->ЛБП Переделки
  • Юмор в youtube Киловольты юмора
  • Надежность и группы продавцов Радиолюбительская доска объявлений exDIY
  • разные темы Переделки

Блоги

Нет результатов для отображения.

Нет результатов для отображения.

Местоположения

  • Пользователи форума

Группа


ICQ


Skype


Интересы


Город


Сфера радиоэлектроники


Оборудование

Найдено 9 результатов

  1. Написать программу Асм атмега 1284. Фрагмент: после команды считать рабочий регистр (в котором может появиться число от 1 до 50) каждому числу соответствует 4 значения (это таблица) их нужно загрузить в четыре рабочих регистра для дальнейшей обработки) Где лучше хранить таблицу? Пример: считали 48 числа 5; 8; 21; 25 Считали 31 числа 4; 9; 11; 35
  2. Здравствуйте, весь день голову ломаю...Нужно подружить PIC16F72 с Flash-памятью AT45DB161D. В порядке эксперимента для начала хочу прочитать регистр статуса и идентификатор памяти, но она ничего совсем не отвечает . вот код: ;========== Настройка МК ============================================== SetMCU CALL Pause1s CLRF STATUS CLRF PORTA CLRF PORTB CLRF PORTC BSF STATUS, RP0 ;Банк 1 MOVLW b'00000000' ;Значение для направления PORTA MOVWF TRISA ;Настройка PORTA MOVLW b'00000000' ;Значение для направления PORTB MOVWF TRISB ;Настройка PORTB MOVLW b'00010000' ;Значение для направления PORTC MOVWF TRISC ;Настройка PORTC ;========== Инициализация SPI =========================================== BCF STATUS, RP0 ;Банк 0 CLRF SSPSTAT MOVLW b'00100000' ;Значение для настройки SPI MOVWF SSPCON ;Настройка SPI BSF PORTC, 6 ;Установка CS0 ;========== Чтение идентификатора AT45DB161D BCF PORTC, 6 ;Опускаем CS MOVLW 0x9F ;Опкод для чтения идентификатора CALL SPI_Trans ;Обмен SPI MOVLW 0x00 ;Ждем ответ CALL SPI_Trans MOVF SPI_RX,0 ;Принятый байт в аккумулятор MOVWF PORTB ;Вывод значения BSF PORTC, 6 ;Завершение передачи stop GOTO stop ;Бесконечный цикл ;========== Передача по SPI ====================================================================================================== SPI_Trans MOVWF SSPBUF ;Передача байта CALL Pause1ms ;Ожидание завершения передачи MOVF SSPBUF, 0 ;Копирование принятого байта MOVWF SPI_RX RETURN В протеусе с SPI_Debugger-ом все работает, если подставить на место ответа какое-нибудь значение, оно выводится в портБ. Но в железе с подключенной памятью ничего не происходит. Выводы памяти RESET, WP соединены с питанием. Питание 3,3В. Помогите, пожалуйста)
  3. Добрый день, прошу помочь в реализации протокола общения между Atmega32 и компером ... язык только АСМ, т.к. Си плохо разумею))) Ниже привожу протокол: ********************* система команд: <ID>, <comand>, <data> <ID> это число или слово в ASCII <data> это слово размером 1 байт <comand>: -SA -- установить значение по напряжению, следующий байт значение от 0 до 255 -SV -- установить значение по току, следующий байт значение от 0 до 255 -M1 -- установить режим работы - ток -M2 -- установить режим работы - напряжение -M3 -- установить режим работы - импульсный -D -- установить все параметры по умолчанию -N -- включить ус-во -F -- выключить ус-во -RA -- передать мастеру действующее значение тока, следующий байт значение от 0 до 255 -RV -- передать мастеру действующее значение напряжения, следующий байт значение от 0 до 255 -RT -- передать мастеру значение температуры, следующий байт значение от 0 до 255 -RM -- передать мастеру характер нагрузки ток/напряжение, в ответ следует значение 'A' или 'V' в ASCII -RQ -- передать мастеру состояние аварии, если ус-во в штатном рехжиме то возвращается значение "0", если произошла остановка работы по причине аварии, то возвращается "1" - перегрузка по току во вторичной цепи, "2" - КЗ в нагрузке, "3" - температура 95С и выше, в ASCII ********************* может кто может оказать поддержку? Рассматриваю также денежную компенсацию за активную помощь в реализации кода ...
  4. Требуется программист работающий с AVRами (меги) удаленка, на текущий момент открыты 2 проекта, за подробностями писать на: furia(dot)fly(гав-гав)gmail.com Язык желательно ASM, но не против и С
  5. Реализация функций сложения, вычитания, умножения, деления вещественных чисел на ассемблере. Исходный материал: Хартов, В.Я. Микроконтроллеры AVR : Практикум для начинающих / В.Я. Хартов - Москва Издательство МГТУ им. Н.Э. Баумана 2007. Результат: Полученный результат я постараюсь выложить здесь. Если кому интересна данная работа присоеденяйтесь. В коде программ в качестве имен регистров я буду использовать буквы ABCD.. Вещественное число занимает 4 байта, значит 1 число необходимо будет поместить в регистры ABCD второе в регистры EFGH, а результат операции после исполнения соответствующей математической функции будет возвращен в регистрах ABCD.
  6. Вот хочу сделать опрос кнопок на одном мк отправка по Uart и вывод значения на другом мк. На восемь кнопок я б и сам сделал. Но вот в чем проблема. есть фиксирующийся кнопки и просто нажимные. Не знаю как сделать опрос чтоб сначала с первого мк пришли даные какие фикс. кноп. включены а какие нет, а потом пришли даные про нажатие остальных кнопок. Просто по очереди записывать в РОН и отправлять не работает так как даные после обработки могут пойти не в той порт. вот схема для наглядности Я не прошу чтоб вы за меня весь код написали. Просто дайте мне пинок в спину в нужном направлении.
  7. Дорогие люди помогите с дипломом ! пишу про блокиратор LTE сети, используется микроконтроллер для синтеза аналоговых сигналов(Пилообразный и синус для шума) есть программа, сперта с texas instruments для MSP430, подойдет ли она на PIC16F628, т.к. видел что его чаще использовали для генераторов шума ( плюс в мсп 64 ноги - многовато ) ). Главный вопрос даже не в этом, мне необходимо получить эксперимент, а именно хотя бы спектры сигналов после микроконтроллера, какие программы использовать для запуска асс-рского кода и получения спектров? Вот программа для MSP430: NAME PWMDAC ;************************************************************************************ ; Программа реализации ЦАП на базе ШИМ ; Генерирует синусоиду частотой 250Гц с использованием ШИМ на базе таймера Timer_B. ; ; Описание: программа демонстрирует использование ШИМ-таймера совместно ; с внешними фильтрами для реализации ЦАП. Показан способ формирования ; синусоиды частотой 250Гц, пилообразного сигнала частотой 125Гц и ; сигнала с постоянным уровнем с использованием таймера Timer_B. ; Возможно аналогичное использование таймера Timer_A. В таблице sine table holds the ; хранятся отсчёты значений синусоиды. Для формирования «пилы» используется ; простой инкремент значения ШИМ. Постоянный уровень формируется зарядом ; конденсатора RC-цепи при помощи выхода ШИМ. Значение напряжения при этом ; прямо пропорционально коэффициенту заполнения сигнала ШИМ. После ; инициализации, ЦПУ переводится в режим пониженного энергопотребления LPM0. ; Он остаётся в этом режиме до прихода прерывания CCIFG0 от таймера Timer_B ; В подпрограмме обработки прерывания таймера Timer_B ISR в регистр CCR1 ; загружается следующее значение для синусоиды, значение «пилы» инкрементируется ; и загружается в регистр CCR2. По возвращении из прерывания ; ЦПУ снова переходит в режим пониженного энергопотребления LPM0. ;************************************************************************************ #include "MSP430X14x.H" ; Включить в проект файл со ; стандартными определениями Delta EQU 250 ; Delta = требуемая частота DCO/8192 ; Требуемая частота генератора DCO = 2.048МГц ; Это значение используется ; в программном стабилизаторе FLL ; для калибровки частоты генератора DCO ; с использованием кварцевого ; резонатора с частотой 32768Гц ; в качестве опорного. Более подробная ; информация по стабилизации частоты ; генератора DCO и программе ; стабилизатора FLL см. пример применения ; под названием «Управление частотой ; генератора с цифровым управлением (DCO) ; микроконтроллеров MSP430x11x» ; ( "Controlling the DCO frequency of the ; MSP430x11x" Literature number SLAA074) ;-------------------------------------------------------------------------------------- RSEG CODE ;-------------------------------------------------------------------------------------- Sine_Tab DW 255 ; Таблица синуса, отсчёты DW 254 ; десятичные значения DW 246 ; загружаемые в регистр TBCCR1 для изменения DW 234 ; коэффициента заполнения ШИМ. DW 219 ; Вместо байт требуется использовать слова DW 199 ; т.к. в регистры ТВ DW 177 ; требуется записывать слово целиком DW 153 ; Значение '0' использовать нельзя DW 128 ; иначе таймер будет глючить. DW 103 DW 79 DW 57 DW 37 DW 22 DW 10 DW 2 DW 1 DW 2 DW 10 DW 22 DW 37 DW 57 DW 79 DW 103 DW 128 DW 153 DW 177 DW 199 DW 219 DW 234 DW 246 DW 255 ;------------------------------ Здесь начинается программа ---------------------------- RESET mov #02FEh,SP ; Инициализация указателя стека StopWDT mov #WDTPW+WDTHOLD,&WDTCTL ; Остановить сторожевой таймер WDT SetupP4 bis.b #00Eh,&P4SEL ; Выбрать TB1, TB2 и TB3 вместо портов bis.b #00Eh,&P4DIR ; P4.x, и назначить их выходами SetupBC mov.b #0A6h,&BCSCTL1 ; ACLK делится на 4. RSEL=6, ; MCLK и SMCLK не делятся, ; источником MCLK и SMCLK является DCO ; генератор XT2 выключен. ; ПРИМЕЧАНИЕ: для определения значения ; Rsel для требуемой частоты DCO, ; обратитесь к таблице DCO в докуметнтации call #Delay ; Пауза для стабилизации кварца. ; Необходима из-за того, что ; кварцевый резонатор 32768Гц используется ; в качестве опорного для стабилизации частоты ; генератора DCO. Поэтому резонатор на 32768 ; должен быть стабильным. call #SW_FLL ; Вызов подпрограммы стабилизации ; частоты генератора DCO. call #TB_SETUP ; Инициализация таймера Timer_B ; для генерации сигналов ШИМ clr R15 ; R15 и R14 используются как указатели clr R14 ; на таблицу синусов и для хранения ; значения «пилы» после стабилизации DCO eint ; Разрешение прерываний bis #LPM0,SR ; «усыпить» ЦПУ. ; Завершение программы ; остаётся обработчик прерывания CCIFG0 ; где обновляются значения ШИМ ;-------------------------------------------------------------------------------------- Delay ; Программная пауза для стабилизации кварца ;-------------------------------------------------------------------------------------- mov #0004h,R15 L1 mov #0FFFFh,R14 ; ~ 1 секунда . L2 dec R14 ; jnz L2 ; dec R15 ; jnz L1 ; ret ; ; ;-------------------------------------------------------------------------------------- SW_FLL ; Подпрограмма стабилизации частоты DCO. ; Кварцевый генератор 32768Гц используется ; в качестве опорной частоты для стабилизации ; и подстройки генератора DCO до требуемой ; частоты 2.048МГц. Это требуется в устройствах ; где нужна фиксированная частота DCO и для ; тех моделей MSP430 где нет аппаратного ; модуля FLL. См. руководства пользователя ; MSP430x3xx и MSP430x1xx Family ; User's Guides (literature number SLAU012 и ; SLAU049 соответственно) по вопросам, ; касающимся системы тактирования MSP430 ; ; процедура основана на подсчёте тактов DCO ; за период ACLK (точнее, за 1/4 периода ACLK ; т.к. частота ACLK поделена на 4). Таймер ; Timer_A используется для подсчёта тактов DCO ; Полученное значение сравнивается с ; номинальным (Delta). Если число слишком ; большое, DCO декрементируется. Если число ; слишком маленькое, DCO инкрементируется. ; Далее сравнение повторяется. ; Процесс продолжается до тех пор, пока ; значения не сравняются. После этого ; DCO генерирует на требуемой частоте ; См. пример применения «Управление частотой ; генератора с цифровым управлением (DCO) ; микроконтроллеров MSP430x11x» ; ( "Controlling the DCO frequency of the ; MSP430x11x" Literature number SLAA074) по ; вопросам, связанным с управлением ; генератором DCO. ; ; Эта процедура вызывается только один раз ; в качестве примера, в реальных условиях ; её требуется выполнять периодически, чтобы ; быть уверенным, что генератор DCO ; остаётся откалиброванным. ;-------------------------------------------------------------------------------------- clr R15 ; Setup_TA mov #TASSEL1+TACLR,&TACTL ; Источник тактирования TA - SMCLK Setup_CC2 mov #CCIS0+CM0+CAP,&CCTL2 ; Определить CCR2,CAP,ACLK bis #MC1,&TACTL ; Запустить таймер timer_A ; в непрерывном режиме Test_DCO bit #CCIFG,&CCTL2 ; Проверка флага захвата jz Test_DCO ; bic #CCIFG,&CCTL2 ; Очистка флага захвата ; AdjDCO mov &CCR2,R14 ; В R14 число тактов SMCLK sub R15,R14 ; в R14 разница mov &CCR2,R15 ; В R15 число тактов SMCLK cmp #Delta,R14 ; Delta = SMCLK/(32768/4) jlo IncDCO ; jeq DoneFLL ; DecDCO dec.b &DCOCTL ; jmp Test_DCO ; IncDCO inc.b &DCOCTL ; jmp Test_DCO ; DoneFLL clr &CCTL2 ; очистить CCR2 clr &TACTL ; остановить таймер timer_A ret ; возврат из подпрограммы ;-------------------------------------------------------------------------------------- TB_SETUP ; Подпрограмма инициализации таймера ; Timer_B для генерации ШИМ ;-------------------------------------------------------------------------------------- mov #TBSSEL1+TBCLR,&TBCTL ; SMCLK –источник тактирования TB. mov #CCIE,&TBCCTL0 ; Перевести CCR0 в режим сравнения, ; разрешить прерывания от него mov #0FFh,&TBCCR0 ; Записать 255d в CCR0. Это соответствует ; периоду ШИМ-выходов в 256 отсчётов (8 бит). ; т.е. получаем 8-битный ЦАП. mov #02E0h,&TBCCTL1 ; Перевести CCRx в режим сравнения, запретить mov #02E0h,&TBCCTL2 ; прерывания, режим выхода '7' , т.е. mov #02E0h,&TBCCTL3 ; сброс/установка. Сигнал EQU0 устанавливает ; выход в «1», а EQU1 в «0». Установим ; условия сравнения для регистра как ; его равенство нулю mov #Sine_Tab,&TBCCR1 ; Загрузить первый отсчёт в CCR1 mov #01h,R14 ; Загрузить начальное значение «пилы» в R14. mov #0AAh,&TBCCR3 ; И значение для постоянного уровня ; которое соответствует ~ 2/3 Vcc т.к. ; #0AAh это примерно 2/3 от #0FFh. bis #MC0,&TBCTL ; Запустить таймер timer_B в режиме инкремента ret ;-------------------------------------------------------------------------------------- TB_ISR ; Подпрограмма обработки прерываний таймера ; Timer_B: изменяет значения в регистрах ; CCR1 и CCR2 для изменения коэффициента ; заполнения ШИМ для синусоиды и «пилы». ; Значение в CCR3 не изменяется для ; формирования постоянного уровня ;-------------------------------------------------------------------------------------- incd R15 ; Инкремент указателя в R15 to ; для следующего значения в таблице синуса ; Инкремент двойной, т.к. ; значения в таблице двухбайтовые and #03Fh,R15 ; Операция лог. «И» с числом 03Fh даёт ; счётчик по модулю 32 для указания на ; значения в таблице mov Sine_Tab(R15),&TBCCR1 ; Загрузить следующее значение синуса в CCR1 add #04h,R14 ; Инкрементировать значение «пилы» ; Изменение шага в R14 ; приведёт к изменению частоты «пилы» and #0FFh,R14 ; Исключим лишние биты mov R14,&TBCCR2 ; Загрузим новое значение пилы в CCR2 reti ; возврат, прерывания разрешены ;----------------------------------------------------------------------------------- COMMON INTVEC ; Вектора прерываний MSP430x14x ;----------------------------------------------------------------------------------- ORG TIMERB0_VECTOR DW TB_ISR ; Прерывание от CCIFG0 ORG RESET_VECTOR DW RESET ; POR, внеш. Reset, Watchdog END
  8. Здравствуйте. Поставил тут меня в тупик один маленький вопросец: Значит для использования в команде lpm нужно предварительно загнать в регистр Z нужный адрес. Нужный адрес предполагается формировать из адреса таблицы и номера элемента этой таблицы. Вопрос в том, как прибавить к регистровой паре Z восьмибитное число (num), хранящееся в каком-нибудь из РОН-ов. Вот если бы я хранил адрес не в Z а в двух других РОН, вопросов у меня не возникло бы (команды add, затем adc). Но как работает сложение в регистровой паре? Может действовать также как и с разными РОН командами add и adc, но переносится ли бит переноса автоматом или нет в паре я инфы не нашел. Конечно для 100% надежности можно поступить так: предварительно записать адрес в двух РОН, там произвести манипуляции над адресом, затем перенести побайтно в регистр Z. Но при этом тратится 2 "лишних" регистра. Хотелось бы произвести сложение в самом регистре Z. Будет ли работать этот код (строки 4...8): использование таблицы в программе 1 .def num = R16 ; номер элемента в таблице 2 .def data = R17 ; данные по номеру num из таблицы .... 4 ldi ZL, low(tab1*2) ; обращение к первой таблице по метке tab1 (умножаем на два чтобы перейти к побайтной адресации) 5 ldi ZH, high(tab1*2) 6 add ZL, num ; прибавляем к адресу начала таблицы номер интересуемого элемента таблицы 7 ldi temp, 0 8 adc ZH, ldi ; т.к. номер таблицы 8-ми битный то прибавляем ноль чтобы прибавился флаг переноса (если есть) 9 lpm data, Z ; наконец достаем сами данные из таблицы таблицы (в конце программного кода) tab1: .dw <...сами данные...> ... tabN: .dw <...данные...>
  9. Здравствуйте, уважаемые форумчане! Делаю индивидку, задание которой звучит так: "Произведение двоично-десятичных чисел с портов Р0 и Р1 микроконтроллера К1816ВЕ51 вывести в порты Р2 и Р3 в двоично-десятичном коде" Пока смог написать следующий код: код Ассемблера MOV R1, P0 ; MOV A, P1 ; DEC A ; MOV R2, A ; MOV A, R1 ; M1: ADD A,R1 ; DA A ; DJNZ R2, M1; Реализовал проверку на ноль - если одно из чисел с портов P0 или P1 равно нулю, то в порты вывода результата P2 и P3 сразу выводятся нули. Произведение думаю заменить сложением - то есть число с P0 складывается с собой столько раз, сколько введено в порту P1, однако встает проблема: как перевести двоично-дестичный код числа в P1, задающий количество сложений, в десятичный, чтобы реализовать цикл с DJNZ? И как добиться того, чтобы старшие разряды произведения выводились в порт p2, а младшие - в порт p3? Спасибо всем, кто проявит интерес к вопросу.