Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Аппаратные возможности МК серии STC8H1Kxxx » просьба к программистам ПК :)


просьба к программистам ПК :)

Сообщений 1 страница 13 из 13

1

Вижу, тут есть Программисты для ПК.
Меня уже с неделю (вру, конечно! Уже с месяц) теребит одна мысль...

В когда-то любимом FastAVR была особенность, которая очень сильно меня удерживала на оном: при генерировании прошивки так же выдавался asm-код с указанием исходника на Бейсике.
В Баскомах такого нет. А иногда очень бы хотелось глянуть на сгенерированную "портянку"....

Что я нашел.
В Баском генерируется файл для некого Симулятора - NOI. Я скачал его, но от него толку мало да еще и платный. И очень древний...
Но в нём есть много вкусного для моей идеи: номер строки на Бейсике и адрес в прошийке bin

Есть дисассемблер D52 8052, ver 3.3.6
Он выдаёт вполне сносный asm-код

Может кто-то возьмётся скрестить три файла: BAS, NOI и BIN?

В итоге будет текстовый файл:
1. строка бейсика как комментарий '
2. командf ассемблера с адресом, текстовое представление

;-Line--0028----DDRC = &H1F : PORTC = &H1F : DDRD = &H07 : PORTD = &H07       ' Выключаем все выходы--
    ldi    zl,low(31)
    out    ddrc,zl
    ldi    zl,low(31)
    out    portc,zl
    ldi    zl,low(7)
    out    ddrd,zl
    ldi    zl,low(7)
    out    portd,zl

;-Line--0032----Enable Timer0 : Start Timer0--
    in    zl,TIMSK
    sbr    zl,0x01
    out    TIMSK,zl
    in    zl,TCCR0
    sbr    zl,2
    out    TCCR0,zl

;-Line--0039----Temp = 170--
    ldi    zl,low(170)
    sts    temp,zl

;-Line--0045----If Temp > 1 Then GoTo Aa1--
    lds    r24,temp
    ldi    zl,low(1)
    inc    zl
    cp    r24,zl
    brsh PC+0x02
    rjmp L0004
L0005:
    jmp    aa1
L0004:

0

2

Для этого нужно хорошо знать формат файла NOI, много свободного времени и желания этим заниматься...

0

3

Там не всё выводится, а только из листинга пользователя. В AVR-версии создаётся OBJ-файл и там весь код. Если его его цеплять в протеусе вместо HEX, то в листинге программы при нажатии меню правой кнопки появляется меню disassm. И можно смотреть состав каждого оператора bascom в виде ассемблерных мнемоник. Остаётся только уповать на автора 8051 чтобы OBJ-файл создавался тоже.

+1

4

NOI-файл

Код:
CLEARLINEINFO Y
FILE "D:\!!!_MY\8051\ПРИМЕРЫ.B51\UART1_INT.B51"
LINE  6 12B
LINE  8 12E
LINE  9 134
LINE  10 139
LINE  12 13F
LINE  13 145
LINE  14 14A
LINE  17 150
LINE  18 153
LINE  19 156
LINE  20 159
LINE  21 15C
LINE  22 162
LINE  23 164
LINE  24 166
LINE  26 169
LINE  29 182
LINE  30 184
LINE  32 186
LINE  35 189
LINE  36 192
LINE  37 195
LINE  38 19D
LINE  40 19F
DEF ___LTMP0 0:0008 %S32
DEF ___LTMP1 0:000C %S32
DEF ___LTMP2 0:0010 %S32
DEF ERR B:0004
DEF ___TR2R3 0:0002 %X16
DEF ADRES_W 0:0021 %X16
DEF TEMP 0:0023

BAS-файл

Код:
$regfile = "STC8.DAT"                ' STC registers list
$crystal = 8000000                   ' CPU clock frequence '11059200
$ramsize = &H400                     ' 1024
Dim Adres_w As Word , Temp As Byte

P_sw2.7 = 1                          ' EAXFR:Extended RAM SpecialFunctionRegister (XFR) access

P1ie = &B1111_1111                   ' 1: Enable digital pins
P1pu = &B0000_0000                   ' 1: pull-up resistor
P1m1 = &B_0000_0000 : P1m0 = &B_1010_0110       ' 1=Push-pull output mode

P3ie = &B1111_1111                   ' 1: Enable digital pins
P3pu = &B0000_0000                   ' 1: pull-up resistor
P3m1 = &B0000_0000 : P3m0 = &B_0000_0000       ' 1=Push-pull output mode

' UART
P_sw1 = &H00                         'RXD/P3.0, TXD/P3.1
Scon = &H50                          ' 8-Bits And Variable Baudrate
Auxr = &H54                          'Timer is 1T mode, use Timer1 as baudrate generator
Tmod = Tmod And &H0F                 'Set timer work mode
Tl1 = &HCC : Th1 = &HFF              'Initial timer - 38400 / 8MHz
Et1 = 0                              'Disable Timer interrupt
Tr1 = 1                              'Timer1 start run
Sbuf = 0                             ' Magic ...

Print " Start!"

On Serial Uart_int Nosave            'Initialise the INT0 Interrupt
Enable Serial                        'enable the interrupt
Enable Interrupts

Do : Loop

Uart_int:
 If Ri = 1 Then
   Temp = Sbuf
   Printbin Temp
   Ri = 0
 End If
Return

https://forumupload.ru/uploads/0000/25/b8/439/t331347.jpg

0

5

Тут по сути только работа с файлами и строками. То есть можно написать даже при минимальном знании ЯП для компа.

0

6

Да, согласен.
Надо подумать: А что я хочу получить в итоге, в какой форме? ))

0

7

Нужно хорошо знать асм и его опкоды целевого МК, т. к. потребуется бинарный машинный код дизассемблировать.

0

8

Это сделает дисассемблер ))
мне надо соединить 4 тестовых файла, на основе данных из NOI
но потом, проблемы со здоровьем продолжаются: давление замучило.

0

9

Александр Д. написал(а):

Это сделает дисассемблер

В NOI-файле как я понял находится номер строки и адрес первой инструкции соответствующей ей. Дизассеблер сохранит эту связь?

0

10

В его файле есть адрес после точки с запятой.

0

11

я прекрасно знаю и этот метод тоже.
Поверьте: Ваши 18 лет и мои 46 - всё же времени на изучение было побольше ))
А личное принято писать в личное ;) Позволил себе как модератор почистить Ваше сообщение...
БЛИН! Удалил его полностью. Извиняюсь!!!

Отредактировано sdfs78234JUKhkjh (Вчера 11:38:42)

0

12

Проще NOPы ставить. Можно комбинировать с push\pop чего-нибудь и др. простыми командами.

0

13

Кот Обормот написал(а):

Проще NOPы ставить. Можно комбинировать с push\pop чего-нибудь и др. простыми командами.

Всё верно
А вообще нет проблем в поиске
Там всё элементарно
пока нет времени на это: Сегодня спал часа 4, ну 5 от силы )) То никакой работы, то очередь

0

Похожие темы


Вы здесь » Программирование ATMEL в BASCOM. » Аппаратные возможности МК серии STC8H1Kxxx » просьба к программистам ПК :)