Platform:
Atmel 89c52 (8052 familie)
Bedoeling:
De bedoeling is om een tabel te laden met default waarden (die staan in de code geladen). Via de UART (RS232) wil ik dus karakters inlezen en de waarden in de tabel overschrijven.
Maar het overschrijven lukt niet. De karakters worden op de "juiste" locatie opgeslagen.
Met een simulator heb ik het probleem gevonden, maar vind geen oplossing
Het adres van #tabel (0xAE) staat in DPTR en R1. Maar zodra ik iets wil schrijven naar de locatie aangegeven in R1 (adres in R1), wordt de waarde niet geschreven in het code geheugen, maar in RAM geheugen (op adres 0xAE)
Reden: Ik wil dus terugschrijven naar het code geheugen
(64K) wat dus onmogelijk is. Mijn tabel zou in het RAM geheugen moeten staan en niet in het code geheugen.
Vraag:
Hoe kan ik de tabel laten starten in het RAM geheugen? hoe zoiets declareren?
Atmel 89c52 (8052 familie)
Bedoeling:
De bedoeling is om een tabel te laden met default waarden (die staan in de code geladen). Via de UART (RS232) wil ik dus karakters inlezen en de waarden in de tabel overschrijven.
Maar het overschrijven lukt niet. De karakters worden op de "juiste" locatie opgeslagen.
Met een simulator heb ik het probleem gevonden, maar vind geen oplossing
Het adres van #tabel (0xAE) staat in DPTR en R1. Maar zodra ik iets wil schrijven naar de locatie aangegeven in R1 (adres in R1), wordt de waarde niet geschreven in het code geheugen, maar in RAM geheugen (op adres 0xAE)
Reden: Ik wil dus terugschrijven naar het code geheugen
Vraag:
Hoe kan ik de tabel laten starten in het RAM geheugen? hoe zoiets declareren?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| start1: .....
mov dptr,#tabel ;adres van TABEL in dptr zetten
mov R1,#tabel
lus:
JNB RI,$
MOV A,SBUF
MOV @R1,A ;Data A verzenden naar Adres op R1
MOV R5,A
clr RI
..... ;
SJMP LUS
tabel:
db 00000000b
db 00000000b
db 00000000b
db 00000000b
db 11111001b
db 11111111b |