Atmega128

Тема в разделе "WASM.ELECTRONICS", создана пользователем FastSoft, 27 май 2005.

  1. FastSoft

    FastSoft New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2005
    Сообщения:
    54
    Адрес:
    Russia
    Отцы!

    Я сейчас впервые задумался над одной проблемой: кожу устройство на основе Atmega128,

    которое выводит на большой матричный экран неважно как строки текста. Эти строки текста

    хранятся в ПЗУ микроконтроллера. Функцию я за полчаса накодил, которая попиксельно

    рисует буквы на основе байт переданной в качестве параметра строки. Гемор в другом.

    Над чем я туплю - над тупостью ассемблера. Говорят,

    самый красивый ассемблер у MOTOROLA68, я лично давно полюбил (вплоть до написания многозадачной оси, грузящейся с диска FAT12) ассемблер Intel 386,

    но вот Atmel-овый ассемблер дразнится похожестью на i386, но разработчиком подложено рад свиней:

    1.Зачем компилятор в каждой .db старается обеспечить четное количество байт?

    (А точнее - что за чертовщина, фу-у-у, противно.)

    2.Зачем нету никаких директив типа offset, которые бы позволяли получать адреса

    данных в памяти? Это чтобы можно было написать:



    mess1:

    .db "Hello world",$0

    mess2:

    .db "Привет администратор!",$0

    mess3:

    .db "Завершение работы veendouz...",$0



    п потом заюзать это так:

    lds r16,offset mess1

    lds r17,offset mess2

    lds r18,offset mess3

    call drawwindow.....



    Если я слеп - прозрите меня пожалуйста, а то отечественная mp3-плееростроительная промышленность так и будет в стакане барахтаться.
     
  2. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine


    Для выравнивания, вестимо. Не все процессоры так лояльно относятся к этому вопросу как x86. Компилятору за это нужно спасибо сказать, а не ругать :)





    Значит mess1 и будет адресом строки.
     
  3. Trashy

    Trashy New Member

    Публикаций:
    0
    Регистрация:
    24 дек 2004
    Сообщения:
    44
    Адрес:
    Russia
    Если уж проводить аналогию до конца с 386, то lds - в принципе не предназначена для чтения из памяти програм.

    Вам поможет косвенная адресация через x,y,z регистры.

    LPM Rd,Z+



    Кстати, мне кажется, что более приближенный ассм к 086, это мсц51. По крайней мере нет такой херни, что код для 1-USARTа (атмеги128) не работает для 0-USARTа (атмеги8)...