Вс ноя 11, 2012 21:09:03
ldi ZH,1
ldi ZL,0
Read:
ld temp, Z+
cpi ZL,48
brne net
ldi ZH,1
ldi ZL,0
net:
rjmp Read
Write:
st Z+, temp
cpi ZL,48
brne net_n
ldi ZH,1
ldi ZL,0
net_n:
rjmp Write
Вс ноя 11, 2012 21:26:43
ldi ZH,1
ldi ZL,0
ldi YH,1
ldi YL,0
Read:
ld temp, Y+
cpi YL,48
brne net
...
net:
rjmp Read
ldi YH,1
ldi YL,0
Write:
st Z+, temp
cpi ZL,48
brne net_n
...
net_n:
rjmp Write
ldi ZH,1
ldi ZL,0
Вс ноя 11, 2012 21:51:42
Вс ноя 11, 2012 21:59:34
zero648 писал(а):Попробуй использовать для записи и чтения разные индексные регистры Z и Y
Вс ноя 11, 2012 22:03:11
Вс ноя 11, 2012 22:06:58
не понимаю как вы связываете скорость "мелькания" информации на дисплее с процедурой чтения/записи данных в SRAM. как?
текст выводить на бегущую строку отдельной функцией, а писать в память другой функцией. Зачем их синхронизировать?
Вс ноя 11, 2012 22:51:11
Пн ноя 12, 2012 08:22:59
Пн ноя 12, 2012 08:29:11
Пн ноя 12, 2012 15:18:59
аааа! ну если план другой, то конечно да. где берете? дорого?Кефир писал(а):У меня план другой:
Пн ноя 12, 2012 15:44:51
"Извините" не понял юмора...где берете? дорого?
Пн ноя 12, 2012 15:46:33
Пн ноя 12, 2012 16:04:38
ibiza11, Вы ни на один не ответили
Если вам нужна помощь другого человека, научитесь формулировать свои вопросы
Вт ноя 13, 2012 09:48:48
Вт ноя 13, 2012 10:47:23
.equ BufferAddr = SRAM_START
.equ Buffersize = 48
.equ MaxPointerAddrH = high(BufferAddr + BufferSize)
.equ MaxPointerAddrL = low(BufferAddr + BufferSize)
.equ ReadPointerAddrH = BufferAddr + BufferSize
.equ ReadPointerAddrL = ReadPointerAddrH + 1
.equ WritePointerAddrH = ReadPointerAddrL + 1
.equ WritePointerAddrL = WritePointerAddrH + 1
.equ DataAddr = WritePointerAddrL + 1
.equ BytesInBufferAddr = DataAddr + 1
.def tmp1 = r16
reset:
cli
ldi temp,Low(ramend) ;инициализация стека
out spl,temp
ldi temp,high(ramend)
out sph,temp
rcall buffer_init ;инициализация кольцевого буфера FIFO
;write byte
ldi tmp1, 200 ;записываемые данные
sts DataAddr, tmp1
rcall write_byte ;запись в FIFO
rcall read_byte ;чтение из FIFO
lds tmp1,DataAddr ;считываемые данные
rjmp PC
buffer_init:
ldi tmp1,low(BufferAddr)
sts ReadPointerAddrH,tmp1
ldi tmp1,high(BufferAddr)
sts ReadPointerAddrL,tmp1
ldi tmp1,low(BufferAddr)
sts WritePointerAddrH,tmp1
ldi tmp1,high(BufferAddr)
sts WritePointerAddrL,tmp1
ret
read_byte:
lds tmp1,BytesInBufferAddr
tst tmp1
breq read_byte_error
dec tmp1
sts BytesInBufferAddr,tmp1
lds ZL,ReadPointerAddrL
lds ZH,ReadPointerAddrH
ld tmp1,Z+
sts DataAddr,tmp1
ldi tmp1,MaxPointerAddrH
cpi ZL,MaxPointerAddrL
cpc ZH,tmp1
brlo read_byte_addr_less_than_max
ldi ZL,low(BufferAddr)
ldi ZH,high(BufferAddr)
read_byte_addr_less_than_max:
sts ReadPointerAddrL,ZL
sts ReadPointerAddrH,ZH
ret
read_byte_error:
set
ret
write_byte:
lds tmp1,BytesInBufferAddr
cpi tmp1,Buffersize+1
brlo write_byte_ok
set
ret
write_byte_ok:
inc tmp1
sts BytesInBufferAddr,tmp1
lds ZL,WritePointerAddrL
lds ZH,WritePointerAddrH
lds tmp1,DataAddr
st Z+,tmp1
ldi tmp1,MaxPointerAddrH
cpi ZL,MaxPointerAddrL
cpc ZH,tmp1
brlo write_byte_addr_less_than_max
ldi ZL,low(BufferAddr)
ldi ZH,high(BufferAddr)
write_byte_addr_less_than_max:
sts WritePointerAddrL,ZL
sts WritePointerAddrH,ZH
ret
Вт ноя 13, 2012 21:56:00
Вс май 14, 2017 15:27:28
Пн май 15, 2017 11:30:55
Пн май 15, 2017 11:37:03
data= 8; // запись в память.
data1= data;// чтение из памяти.