Сб дек 31, 2022 01:21:21
Сб дек 31, 2022 11:19:53
read_loop:
ldi counter, 2*(endstring-string)
ldi ZL, low(2*string)
ldi ZH, high(2*string)
again:
lpm temp, Z+
rcall something
dec counter
tst counter
breq exit
rjmp again
Сб дек 31, 2022 12:30:01
Сб дек 31, 2022 12:43:50
Shuspano писал(а):dec counter
dec counter
tst counter
breq exit
rjmp again
Сб дек 31, 2022 15:34:49
Сб дек 31, 2022 15:58:54
read_loop:
ldi ZL,low(2*TBI) ;string)
ldi ZH,high(2*TBI) ;string)
again:
lpm R0, Z
rcall something
CPI ZL,LOW(2*TBI_END)
BRLO AGAIN
EXIT:
RJMP PC
something:
ST Z+,R0
RET
;*****
.org $100
TBI:
.DB $3F,$06 ; 0,1 Кодирования индикатора
.DB $5B,$4F ; 2,3
.DB $66,$6D ; 4,5
.DB $7D,$07 ; 6,7
.DB $7F,$6F ; 8,9
.DB $00,$00 ; гашение незначащего нуля
TBI_END:
;************************************************
Сб апр 01, 2023 15:18:06
.set Var1 = 0x6EF5
ldi R16, low (Var1)
ldi R17, high (Var1)
clr R18
.set Var1 = 0x28
ldi R20, BYTE1 (Var1)
ldi R21, BYTE2 (Var1)
ldi R22, BYTE3 (Var1)
Сб апр 01, 2023 19:04:50
.set tests = 0x4567af
ldi r16,low(tests)
ldi r17,low(tests>>8)
ldi r18,low(tests>>16)
Сб апр 01, 2023 21:41:16
Ага, и по этому пришлось догадываться по смыслу у меня не так много фудаментальных знаний.BOB51 писал(а):За byte1 видимо просто не сочли нужным делать описание его эквивалента low.
BOB51 писал(а):Кстати... есть и альтернатива:
Код:
.set tests = 0x4567af
ldi r16,low(tests)
ldi r17,low(tests>>8)
ldi r18,low(tests>>16)
Вс апр 02, 2023 06:53:12
.equ VAR =1000000000000 ;E8 D4A5 1000
Вс апр 02, 2023 08:53:53
В смысле? Только сейчас попробовал. Собирается без ошибок.akl писал(а):Касательно студии, поддерживающей 32-битные значения, не получится.
.equ var = 999999999999999999999999999999999999999
ldi R16, low(var)
ldi R17, low(var>>8)
ldi R18, low(var>>16)
ldi R19, low(var>>24)
ldi R20, low(var>>32)
ldi R21, low(var>>40)
ldi R22, low(var>>48)
ldi R23, low(var>>56)
ldi R24, low(var>>64)
.equ var = 77777777777777
ldi R16, low(var)
ldi R17, low(var>>8)
ldi R18, low(var>>16)
ldi R19, low(var>>24)
ldi R20, low(var>>32)
ldi R21, low(var>>40)
ldi R22, low(var>>48)
ldi R23, low(var>>56)
ldi R24, low(var>>64)
ldi R24, low(var>>72)
ldi YL,low (Result+9) ;
ldi YH,high (Result+9) ;
st Y, R16
st -Y, R17
st -Y, R18
st -Y, R19
st -Y, R20
st -Y, R21
st -Y, R22
st -Y, R23
st -Y, R24
st -Y, R25
Вс апр 02, 2023 09:26:03
;.equ var = 999999999999999999999999999999999999999; калькулятор XP-винды с этим числом не справился, поэтому урезал до
.equ var = 9999999999999999999;8AC7230489E7FFFF
.CSEG
TEST:
ldi R16, low(var)
ldi R17, low(var>>8)
ldi R18, low(var>>16)
ldi R19, low(var>>24)
ldi R20, low(var>>32)
ldi R21, low(var>>40)
ldi R22, low(var>>48)
ldi R23, low(var>>56)
ldi R24, low(var>>64)
RJMP TEST
.EXIT
Вс апр 02, 2023 10:16:47
Вс апр 02, 2023 13:42:47
Пн май 29, 2023 19:08:30
Пт сен 22, 2023 22:15:32
Пт сен 22, 2023 22:43:45
Пн сен 25, 2023 13:03:23
Ср сен 27, 2023 14:17:01
#define __SFR_OFFSET 0
#include "avr/io.h"
/* Секция данных */
.section .data
table:
.byte 0b00000001, 0b00000010, 0b00000011
/* Секция кода */
/*
1 0x000(1) RESET External Pin, Power-on Reset, Brown-out Reset, and Watchdog Reset
2 0x001 INT0 External Interrupt Request 0
3 0x002 INT1 External Interrupt Request 1
4 0x003 TIMER2 COMP Timer/Counter2 Compare Match
5 0x004 TIMER2 OVF Timer/Counter2 Overflow
6 0x005 TIMER1 CAPT Timer/Counter1 Capture Event
7 0x006 TIMER1 COMPA Timer/Counter1 Compare Match A
8 0x007 TIMER1 COMPB Timer/Counter1 Compare Match B
9 0x008 TIMER1 OVF Timer/Counter1 Overflow
10 0x009 TIMER0 OVF Timer/Counter0 Overflow
11 0x00A SPI, STC Serial Transfer Complete
12 0x00B USART, RXC USART, Rx Complete
13 0x00C USART, UDRE USART Data Register Empty
14 0x00D USART, TXC USART, Tx Complete
15 0x00E ADC ADC Conversion Complete
16 0x00F EE_RDY EEPROM Ready
17 0x010 ANA_COMP Analog Comparator
18 0x011 TWI Two-wire Serial Interface
19 0x012 SPM_RDY Store Program Memory Ready
*/
.section .text
.org 0x0000
rjmp RESET_vect
reti ; INT0
reti ; INT1
reti ; TIMER2_COMP
reti ; TIMER2_OVF
reti ; TIMER1_CAPT
reti ; TIMER1_COMPA
reti ; TIMER1_COMPB
reti ; TIMER1_OVF
reti ; TIMER0_OVF
reti ; SPI_STC
reti ; USART_RXC
reti ; USART_UDRE
reti ; USART_TXC
reti ; ADC
reti ; EE_RDY
reti ; ANA_COMP
reti ; TWI
reti ; SPM_RDY
RESET_vect:
ldi r16, RAMEND & 0xff
out SPL, r16
ldi r16, RAMEND >> 8
out SPH, r16
ldi r16, 0b00111111
out DDRC, r16
ldi r16, 0b00000000
sei
_main:
out PORTC, r16
ldi ZL, lo8(table)
ldi ZH, hi8(table)
lsl ZH
lsl ZL
brcc _set_index
inc ZH
_set_index:
ldi r17, 3
_loop:
lpm r0, Z+
out PORTC, r0
dec r17
cpi r17, 0x00
brne _loop
rjmp _main
Ср сен 27, 2023 16:45:46