-
Сообщения
-
Всё проще. Вы используете одни инструменты, я другие. То есть, по сути, avr-as и gavrasm должны один и тот же hex-файл получить. Разница лишь в том, что входной ассемблерный файл может иметь разный синтаксис (например названия секций кода, данных и так далее). Можно взять один и тот же файл и получить hex-файл и посмотреть одинаковы ли там инструкции перехода. Вот мой код: .equ PINB,0x16 .equ DDRB,0x17 .equ PORTB,0x18 .data .section .text .org 0x0000 vectors: rjmp main rjmp vectors rjmp vectors rjmp vectors rjmp vectors rjmp vectors rjmp vectors rjmp vectors rjmp vectors rjmp vectors main: cli in R16,DDRB in R17,PINB sbr R16,0x02 cbr R17,0x02 out DDRB,R16 out PINB,R17 ldi R18,0x02 mainLoop: eor R17,R18 ; 1 cycle out PINB,R17 ; 1 cycle rjmp mainLoop ; 2 cycles Вот результат: Disassembly of section .sec1: 00000000 <.sec1>: 0: 09 c0 rjmp .+18 ; 0x14 2: fe cf rjmp .-4 ; 0x0 4: fd cf rjmp .-6 ; 0x0 6: fc cf rjmp .-8 ; 0x0 8: fb cf rjmp .-10 ; 0x0 a: fa cf rjmp .-12 ; 0x0 c: f9 cf rjmp .-14 ; 0x0 e: f8 cf rjmp .-16 ; 0x0 10: f7 cf rjmp .-18 ; 0x0 12: f6 cf rjmp .-20 ; 0x0 14: f8 94 cli 16: 07 b3 in r16, 0x17 ; 23 18: 16 b3 in r17, 0x16 ; 22 1a: 02 60 ori r16, 0x02 ; 2 1c: 1d 7f andi r17, 0xFD ; 253 1e: 07 bb out 0x17, r16 ; 23 20: 16 bb out 0x16, r17 ; 22 22: 22 e0 ldi r18, 0x02 ; 2 24: 12 27 eor r17, r18 26: 16 bb out 0x16, r17 ; 22 28: fd cf rjmp .-6 ; 0x24 Я думаю, что отображаться будет по разному, но байты команд будут совпадать.
-
Но -4 должно отниматься от "PC", а в той строке PC = 2 Не понимаю Сейчас даже скомпилировал код от @Геннадий , думал может это я "гоню" и для ATtiny13 всё по другому. Но нет. Вот листинг... gavrasm Gerd's AVR assembler version 5.4 (C)2022 by DG4FAC ---------------------------------------------------------- Source file: test.asm Hex file: test.hex Eeprom file: test.eep Compiled: 08.06.2023, 10:26:51 Pass: 2 1: .DEVICE ATtiny13 2: main: 3: 000000 D001 rcall send_pack ;отправка всего пакета данных 4: 000001 CFFE rjmp main 5: ;=========================================================== 6: ;пакет состоит из 3-х байт (RGB) на один светодиод 7: send_pack: 8: 000002 E575 ldi r23,0x55 9: 000003 D005 rcall send_wire 10: 000004 EA7A ldi r23,0xAA 11: 000005 D003 rcall send_wire 12: 000006 EF70 ldi r23,0xF0 13: 000007 D001 rcall send_wire 14: 000008 9508 ret 15: ;=========================================================== 16: ;отправка одного байта 17: send_wire: 18: 000009 E008 ldi r16,8 ;счетчик отправленных бит 19: cyc_send_wire: 20: 00000A 9AC0 sbi PORTB,0 21: 00000B 9576 lsr r23 22: 00000C F448 brcc send_zero 23: send_one: 24: 00000D 0000 nop 25: 00000E 0000 nop 26: 00000F 0000 nop 27: 000010 0000 nop 28: 000011 0000 nop 29: 000012 98C0 cbi PORTB,0 30: 000013 950A dec r16 31: 000014 F7A9 brne cyc_send_wire 32: 000015 C007 rjmp exit_send_wire 33: send_zero: 34: 000016 98C0 cbi PORTB,0 35: 000017 0000 nop 36: 000018 0000 nop 37: 000019 0000 nop 38: control_full: 39: 00001A 950A dec r16 40: 00001B F009 breq exit_send_wire 41: 00001C CFED rjmp cyc_send_wire 42: exit_send_wire: 43: 00001D 9508 ret -> Warning 001: 2 symbol(s) defined, but not used! Program : 30 words. Constants : 0 words. Total program memory: 30 words. Eeprom space : 0 bytes. Data segment : 0 bytes. Compilation completed, no errors. Compilation ended 08.06.2023, 10:26:51 КМК счётчик команд это главное в процессоре.
-
солар Спасибо. А экран куда девать (у нас старый дом,только фаза и ноль)? К нулю или на фиг вообще?
-
Будет работать на ура. Согласно описанию провода. Нет, если не греть чем-либо снаружи. Вполне.
-
А как вообще "по науке" бадяжат? У меня есть флюс, с предприятия, с ромбом.Я тут писАл как-то.... Ему 10 лет МИНИМУМ! В осадок не выпадает, жидкий..... Я им до сих пор паяю...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.