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

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

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

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

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


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

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

Блоги

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

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

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

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

Группа


ICQ


Skype


Интересы


Город


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


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

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

  1. Помогите сориентироваться с чего начать решение вопроса. Или возможно есть уже похожие написанные программы. Нужно для микроконтроллера семейства MCS-51 составить программу, которая выполняет логическую операцию "И" над числами 5416 и 8716. Указанные числа необходимо предварительно записать в регистр R6 и R7 нулевого банка регистров, а результат операции разместить в регистр R7 второго банка регистров. Составить двоичный и шестнадцатеричный код каждой команды.
  2. Извечный вопрос не дает покоя. Кто и на чем все же предпочитает вести работу с контроллерами? Лично я как научился работать на С, так и не могу перейти на Assembler, да и не очень то хочется это делать. Какие все же преимущества и недостатки, окромя понятности и не очень понятности?
  3. Здарова, инженеры. Не подсобите студню с заданием? Задание, если кому интересно: Я подчитнул некоторую теорию, про индикацию, матричную клавиатуру и её опрос. Но вот возникли след. вопросы/трудности: 1. В случае использования только двух кнопок, целесообразно ли подключать кнопку непосредственно к выводу микроконтроллера? Насколько сильно это упростит решение задачи? 2. Можно ли где-то посмотреть пример реализации таких клавиатур именно на PIC18? (Уж очень у меня не хватает практики по программированию устройств, всегда на уровне любителя работал на крестах и ему подобных языках для решения мелких проблем и забав) 3. Можно ли где-то смоделировать моё творение, т.е. посмотреть работоспособность? (MPLAB, proteus, xlinx) 4. На чем в данном случае рациональнее "кодить" - язык ассемблера или сишка? Есть некоторый алгоритм для обработки дребезка контактов: https://pp.userapi.com/c840123/v840123038/23a0/IjXofwjEmuc.jpg Есть некоторая схемка, которую я в инете откопал: https://pp.userapi.com/c840123/v840123038/23a7/-rD4tgCfvLs.jpg Так же нашел небольшой код на просторах интернета (увы, он для AVR) : Благодарю за каждый пендель в нужном направлении, тема-то хорошая.
  4. Такая задача, собрал схему с сайта в протеусе с микрокоонтроллером, там же на этом сайте есть программаа, но есть одно, надо написать алгоритм это программы(блок схему), аж на уровне регистров, а прога написана в этом алооритм билдере, мб кто-нибудь шарит и сможет мне помочь? или есть вариант перевести это в обычныый язык ассемблера??
  5. Разработать модель в среде симуляции Proteus на базе микроконтроллера AtMega128 и написать программу на языке ассемблера для решения следующей задачи: 1. Изменяя положение ручки регулятора напряжения переменным резистором высвечивать на одном разряде трехразрядного семисегментного индикатора цифру от 0 до 9. 2. При нажатии кнопки 1 на клавиатуре выдавать звуковой сигнал с пьъезодинамика с частотой 1 кГц. При нажатии на кнопку 2 – с частотой 2 кГц, при нажатии на кнопку 3 – с частотой 3 кГц.
  6. Доброго времени суток всем! Недавно возникла потребность передачи данных из микроконтроллера в ПК. Написал код на ассемблере, опираясь на Code_examples от TI, и то, что получилось, приведено ниже: #include "msp430F1232.h" RSEG CSTACK DS16 0 RSEG CODE ;--------------------------------------------------------------------- ; Установка тактирования от кварца ;--------------------------------------------------------------------- RESET mov #SFE(CSTACK),SP mov #WDTPW+WDTHOLD,&WDTCTL ;OSTANOVKA WDT BIC #OSCOFF, SR ; tAKTIROVANIE OT KVARCA BIS.B #XTS, BCSCTL1 L1 BIC.B #OFIFG, &IFG1 MOV #0FFh, R15 L2 DEC R15 JNZ L2 BIT.B #OFIFG, &IFG1 JNZ L1 BIS.B #SELM_3, &BCSCTL2 ;-------------------------------------------------------------------- ; Инициализация USART ;-------------------------------------------------------------------- mov.b #200,R7 bis.b #SWRST,&UCTL0; bis.b #030h,&P3SEL; P3.4,5 - USART bis.b #UTXE0+URXE0,&ME2; Включение передачи и приема bis.b #CHAR, &UCTL0; Формат данных 8-разрядный mov.b #SSEL0, &UTCTL0; UCLK=ACLK mov.b #0100b,&UBR00; 5MHz/19200 = 260.4 = 100000100b mov.b #0001b,&UBR10; mov.b #0000, &UMCTL0; Без модуляции bic.b #SWRST,&UCTL0; Сброс USART не включен bis.b #URXIE0+UTXIE0,&IE2 bis.b #UTXIFG0,&IFG2; Флаг гтовности к прерыванию Loop bis.w #LPM3+GIE,SR nop jmp Loop ;------------------------------------------------------------------- USART0TX_ISR; ;------------------------------------------------------------------- mov.b R7, &TXBUF0; reti ;-------------------------------------------------------------------- ; Векторы прерываний ;-------------------------------------------------------------------- COMMON INTVEC ORG RESET_VECTOR DW RESET ORG USART0TX_VECTOR DW USART0TX_ISR END. Из программы видно, что я просто хочу передать содержимое R7 в ПК. Трудность заключается в том, что это значение передается не всегда. Запускаю программу, которая считывает информацию с com порта (программа работает 100% правильно), она в тестовый файл записывает значение 200(правильное значение). В следующий раз, после перезапуска программы, в текстовый файл она записывает величину 14. Потом снова 200. И я не пойму, что с ней происходит! Кто знает, отзовитесь пожалуйста
  7. Столкнулся с тем что в интернете куча уроков по ассмеблеру, и везде мол главное практика, главное писать программы на ассемблере под винду. Так же куча информации по взлому и дизассемблированию программ на винде. используя дебагер и тд. Но нигде я не нашел информации по анализу для начинающих кода на ассемблере с микроконтроллеров. Даже просто хотя бы понимать что к чему и как начать и тд. К примеру скажу сразу что как я выяснил дизассемблером так сказать всех времен и народов является IDA Думаю данная инфа будет кому то интересна и полезна а кто то наткнется на эту запись с поисковиков. У меня есть вопросы. Вот я прогнал прошивку через IDA и если для виндовских приложений мы цепляемся за дебагер, запускаем так сказать программу пошагово и смотрим где что выполняется то тут так сделать не получиться и как я подозреваю тут надо работать руками на физическом уровне а именно прозванивать элементы и понимать что как вообще работает хотя бы примерно. И вот я так и сделал, я прозвонил память еепром до микроконтроллера. И узнал на какие ноги идет. Далее я посмотрел в даташите что это вообще за ноги: 1 нога еепром (CS) звониться на 40 ногу мозга PF10/CS0 2 нога eeпром (CLK) звониться на 226 ногу мозга (PL9/ SCK4/IRQ5) 3 нога еепром (DI) звониться на 157 ногу мозга PB10/TxD4/HTxD0/TO8G 4 нога еепром (DO) звониться на 158 ногу мозга PB11/RxD4/HRxD0/TO8H Далее я знаю что у меня микроконтроллер считывает информацию с еепром. А делать он это может как я понимаю только по ноге 158, так как она подрублена к DO (выход данных с еепром), тоесть 158 нога является входом данных. Тоесть микроконтроллер должен уметь считывать её состояние. А значит это операция чтения и в даташите ищем к порту B такой регистр, вот он: Port B Data Register (PBDR) Read/Write Operations. Далее смотрим маску. Обращение к конкретно этому порту PB11 возможно таким способом 0000 1000 0000 0000 (или в HEX это будет 800) Далее в IDA жмем search->immediate value... и вводим нашу маску 800 и просматриваем все что нашли, маска может применяться и для других регистров. В итоге я нашел что это маскаmov.w #h'800, применяется совместно с регистром #PBDR_W тоесть используется как раз порт PB11 а так же тут же в этой функции присутствует маска 400 рядом с регистром PFDR_W а это как раз PF10 который идет на CS еепромки. Вообщем опыта и знаний у меня маловато поэтому и прошу помощи. Однозначно понятно что это не значит что это функция чтения с еепром, но помогите пожалуйста разобраться по шагам что в этой функции твориться, я сам в комментариях тоже попробую. Ниже вырван кусок кода в котором найдены эти маски и регистры. ROM:0000E378 eeprom: ; CODE XREF: sub_1096A+13DC4p ;название eeprom задал я ROM:0000E378 ; sub_1096A+13E66p ... ROM:0000E378 ROM:0000E378 var_18 = -h'18 ; какая то переменная как я понимаю ROM:0000E378 ROM:0000E378 mov.l r14, @-r15 ROM:0000E37A mov.l r13, @-r15 ROM:0000E37C mov.l r12, @-r15 ROM:0000E37E mov.l r11, @-r15 ; какое то значение @-r15 помещается в r11, r12 и тд ROM:0000E380 sts.l pr, @-r15 ;sts это вроде как запись в какое то СОЗУ ROM:0000E382 add #-8, r15 ; складывается что то с r15 ROM:0000E384 mov.w #h'E0, r5 ; что то помещается в r5 ROM:0000E386 mov r15, r4 ; ROM:0000E388 mov.l #sub_2078, r3 ROM:0000E38A jsr @r3 ; sub_2078 ROM:0000E38C add #4, r4 ROM:0000E38E mov #1, r6 ROM:0000E390 mov.w #PFDR_W, r12 ; порт PF ROM:0000E392 mov.w #h'400, r13 ; маска , по идее PF10 должен быть который подрублен к CS еепромки ROM:0000E394 mov.l #sub_4AF4, r14 ROM:0000E396 mov r13, r5 ROM:0000E398 jsr @r14 ; sub_4AF4 ROM:0000E39A mov r12, r4 ROM:0000E39C mov.l #sub_2088, r3 ROM:0000E39E jsr @r3 ; sub_2088 ROM:0000E3A0 mov.l @(h'1C+var_18,r15), r4 ROM:0000E3A2 mov.l #sub_2400, r2 ROM:0000E3A4 jsr @r2 ; sub_2400 ROM:0000E3A6 mov #1, r4 ROM:0000E3A8 mov.w #PBDR_W, r2 ; порт PB ROM:0000E3AA mov.w @r2, r3 ROM:0000E3AC extu.w r3, r3 ROM:0000E3AE mov.w #h'800, r1 ; маска которая соответствует вроде как для PB11 который подрублен к DO еепромки ROM:0000E3B0 mov.w #h'E0, r5 ; 'р' ROM:0000E3B2 tst r1, r3 ROM:0000E3B4 mov.l #sub_2078, r2 ROM:0000E3B6 movt r11 ROM:0000E3B8 jsr @r2 ; sub_2078 ROM:0000E3BA mov r15, r4 ROM:0000E3BC mov #0, r6 ROM:0000E3BE mov r13, r5 ROM:0000E3C0 jsr @r14 ; sub_4AF4 ROM:0000E3C2 mov r12, r4 ROM:0000E3C4 mov.l #sub_2088, r3 ROM:0000E3C6 jsr @r3 ; sub_2088 ROM:0000E3C8 mov.l @r15, r4 ROM:0000E3CA mov r11, r0 ROM:0000E3CC add #8, r15 ROM:0000E3CE lds.l @r15+, pr ROM:0000E3D0 mov.l @r15+, r11 ROM:0000E3D2 mov.l @r15+, r12 ROM:0000E3D4 mov.l @r15+, r13 ROM:0000E3D6 rts ROM:0000E3D8 mov.l @r15+, r14 ROM:0000E3D8 ; End of function eeprom Дополните и поправьте пожалуйста, а то в знаниях дыра =)
  8. Дисплей Nokia1202 + Asm

    Добрый день! Подскажите, кто-нибудь видел готовый проект с дисплеем nokia 1202 (1280), исходник которого написан на ассемблере. Всё что мне попадалось, на С. На С не пишу. Нужно чтобы код инициализировал дисплей и выводил на него что-нибудь. Чем проще будет проект, тем лучше. Спасибо.
  9. Итак, есть знаковое двухбайтовое число, которое может содержать в старшем бите старшего байта (если не ошибаюсь) единицу, то есть может быть отрицательным. Так вот, нужно написать программу на ассемблере, которая распознавала бы, есть у меня там единица или нет, и преобразовывала число из дополнительного кода в прямой для последующего преобразования данного числа из двоичного кода в двоично-десятичный.
  10. Как научиться прграммировать на ассемблере учебной Микро-ЭВМ К580? вот простая прога, здесь боле менее еще понятно 8ОО 3A LDA ОBООH ;занести в рег. А из ячейки ОBОО 8О1 ОО ; мл. байт адреса 8О2 ОB ; старший байт адреса 8О3 2F CMA ; инвертировать содержимое рег. А 8О4 32 STA ОBО1H; занести из рег. А в ячейку ОBО1 8О5 О1 ; мл. байт адреса ячейки 8О6 ОB ; старший байт адреса ячейки 8О7 76 HLT ; стоп эту прогу я так и не смог расшифровать что делает, пока мне не подсказали ... PUSH H MVI D,ОFFH LXI H,9ООH BEGIN: MOV M,L INX H DCR D JNZ BEGIN POP H HLT Как научиться хотябы на среднем уровне понимать эти вещи, что значат команды знаю, но не могу понять как самому писать программы. Допустим мне нада вывести сроку на экран, с чего начинать ? Спасибо. ПС: Знаю си, может есть аналогии какието?
  11. Прерывания

    Приветствую всех! Я только-только начал иметь иметь дело как с контроллерами, так и с ассемблером. Пишу сейчас в Atmel Studio 6 для ATMega16. Чтобы получше разобраться, вбил я такой код: .include "m16def.inc" //------------------------------- .CSEG .ORG $000 ; (RESET) RJMP Reset .ORG $002 RETI ; (INT0) External Interrupt Request 0 .ORG $004 RETI ; (INT1) External Interrupt Request 1 .ORG $006 RETI ; (TIMER2 COMP) Timer/Counter2 Compare Match .ORG $008 RETI ; (TIMER2 OVF) Timer/Counter2 Overflow .ORG $00A RETI ; (TIMER1 CAPT) Timer/Counter1 Capture Event .ORG $00C RETI ; (TIMER1 COMPA) Timer/Counter1 Compare Match A .ORG $00E RETI ; (TIMER1 COMPB) Timer/Counter1 Compare Match B .ORG $010 RETI ; (TIMER1 OVF) Timer/Counter1 Overflow .ORG $012 RETI ; (TIMER0 OVF) Timer/Counter0 Overflow .ORG $014 RETI ; (SPI,STC) Serial Transfer Complete .ORG $016 RJMP RX_OK ; (USART,RXC) USART, Rx Complete .ORG $018 RETI ; (USART,UDRE) USART Data Register Empty .ORG $01A RETI ; (USART,TXC) USART, Tx Complete .ORG $01C RETI ; (ADC) ADC Conversion Complete .ORG $01E RETI ; (EE_RDY) EEPROM Ready .ORG $020 RETI ; (ANA_COMP) Analog Comparator .ORG $022 RETI ; (TWI) 2-wire Serial Interface .ORG $024 RETI ; (INT2) External Interrupt Request 2 .ORG $026 RETI ; (TIMER0 COMP) Timer/Counter0 Compare Match .ORG $028 RETI ; (SPM_RDY) Store Program Memory Ready .ORG INT_VECTORS_SIZE ; Конец таблицы прерываний RX_OK: IN R16,UDR RETI Reset: LDI R16,Low(RAMEND) OUT SPL,R16 LDI R16,High(RAMEND) OUT SPH,R16 SEI LDI R17,(1<<RXCIE) OUT UCSRB,R17 M1: NOP NOP NOP NOP RJMP M1 Начну с того, что команда SEI не меняет значение флага I регистра SREG. Но это еще не все. Если забить и установить этот флаг вручную, то при установки флага прерывания RXC в регистре UCSRA ничего не происходит - на следующий же такт он сам возвращается в исходное состояние, а контроллер продолжает бегать циклом по NOP. Что я забыл, что не так?