Forum: Mikrocontroller und Digitale Elektronik STC 8051 EEPROM zugriff


von Future (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
ich möchte Daten während des Betriebes dauerhaft auf dem uC speichern 
und habe daher vergeblich versucht auf den EEPROM zu zugreifen.
Leider weiß ich nicht genau wo dran es scheitert da ich die MCU 8051 IDE 
verwende und diese den EEPROM zugriff für meinen uC nicht unterstützt.

Das unten stehende Demoprogramm vom Hersteller hat auch nicht 
funktioniert.
Kann mir jemand helfen das Demoprogramm zum laufen zu bringen?
und nebenbei kennt jemand eine Assembler IDE die mein uC unterstützt?

Programmiere in Assembler und verwende das STC 8051 Starter Kit mit den 
STC 12C5A60S2 und dem small-sized development board.


1
;/*------------------------------------------------------------------*/
2
;/* --- STC MCU Limited ---------------------------------------------*/
3
;/* --- STC12C5Axx Series MCU ISP/IAP/EEPROM Demo -------------------*/
4
;/* --- Web: www.STCMCU.com -----------------------------------------*/
5
;/* If you want to use the program or the program referenced in the  */
6
;/* article, please specify in which data and procedures from STC    */
7
;/*------------------------------------------------------------------*/
8
9
;/*Declare SFR associated with the IAP */
10
IAP_DATA    EQU 0C2H                ;Flash data register
11
IAP_ADDRH   EQU 0C3H                ;Flash address HIGH
12
IAP_ADDRL   EQU 0C4H                ;Flash address LOW
13
IAP_CMD     EQU 0C5H                ;Flash command register
14
IAP_TRIG    EQU 0C6H                ;Flash command trigger
15
IAP_CONTR   EQU 0C7H                ;Flash control register
16
17
;/*Define ISP/IAP/EEPROM command*/
18
CMD_IDLE    EQU 0                   ;Stand-By
19
CMD_READ    EQU 1                   ;Byte-Read
20
CMD_PROGRAM EQU 2                   ;Byte-Program
21
CMD_ERASE   EQU 3                   ;Sector-Erase
22
23
;/*Define ISP/IAP/EEPROM operation const for IAP_CONTR*/
24
ENABLE_IAP  EQU 82H                 ;if SYSCLK<20MHz
25
26
;//Start address for STC12C5Axx EEPROM
27
IAP_ADDRESS EQU 0400H
28
;-----------------------------------------
29
    ORG   0000H
30
    LJMP  MAIN
31
;-----------------------------------------
32
    ORG   0100H
33
MAIN:
34
    MOV   P1,#0FEH                  ;1111,1110 System Reset OK
35
    LCALL DELAY                     ;Delay
36
;-------------------------------
37
    MOV   DPTR,#IAP_ADDRESS         ;Set ISP/IAP/EEPROM address
38
    LCALL IAP_ERASE                 ;Erase current sector
39
;-------------------------------
40
    MOV   DPTR,#IAP_ADDRESS         ;Set ISP/IAP/EEPROM address
41
    MOV   R0,#128                     ;Set counter (512)
42
    MOV   R1,#4
43
CHECK1:                             ;Check whether all sector data is FF
44
    LCALL IAP_READ                  ;Read Flash
45
    CJNE  A,#0FFH,ERROR             ;If error, break
46
    INC   DPTR                      ;Inc Flash address
47
    DJNZ  R0,CHECK1                 ;Check next
48
    DJNZ  R1,CHECK1                 ;Check next
49
;-------------------------------
50
    MOV   P1,#0FCH                  ;1111,1100 Erase successful
51
    LCALL DELAY                     ;Delay
52
;-------------------------------
53
    MOV   DPTR,#IAP_ADDRESS         ;Set ISP/IAP/EEPROM address
54
    MOV   R0,#128                   ;Set counter (512)
55
    MOV   R1,#4
56
    MOV   R2,#0                     ;Initial test data
57
NEXT:                               ;Program 512 bytes data into data flash
58
    MOV   A,R2                      ;Ready IAP data
59
    LCALL IAP_PROGRAM               ;Program flash
60
    INC   DPTR                      ;Inc Flash address
61
    INC   R2                        ;Modify test data
62
    DJNZ  R0,NEXT                   ;Program next
63
    DJNZ  R1,NEXT                   ;Program next
64
;-------------------------------
65
    MOV   P1,#0F8H                  ;1111,1000 Program successful
66
    LCALL DELAY                     ;Delay
67
;-------------------------------
68
    MOV   DPTR,#IAP_ADDRESS         ;Set ISP/IAP/EEPROM address
69
    MOV   R0,#0                     ;Set counter (512)
70
    MOV   R1,#2
71
    MOV   R2,#0
72
CHECK2:                             ;Verify 512 bytes data
73
    LCALL IAP_READ                  ;Read Flash
74
    CJNE  A,2,ERROR                 ;If error, break
75
    INC   DPTR                      ;Inc Flash address
76
    INC   R2                        ;Modify verify data
77
    DJNZ  R0,CHECK2                 ;Check next
78
    DJNZ  R1,CHECK2                 ;Check next
79
;-------------------------------
80
    MOV   P1,#0F0H                  ;1111,0000 Verify successful
81
    SJMP  $
82
;-------------------------------
83
ERROR:
84
    MOV   P0,R0
85
    MOV   P2,R1
86
    MOV   P3,R2
87
    CLR   P1.7                      ;0xxx,xxxx IAP operation fail
88
    SJMP  $
89
90
;/*----------------------------
91
;Software delay function
92
;----------------------------*/
93
DELAY:
94
    CLR   A
95
    MOV   R0,A
96
    MOV   R1,A
97
    MOV   R2,#20H
98
DELAY1:
99
    DJNZ  R0,DELAY1
100
    DJNZ  R1,DELAY1
101
    DJNZ  R2,DELAY1
102
    RET
103
104
;/*----------------------------
105
;Disable ISP/IAP/EEPROM function
106
;Make MCU in a safe state
107
;----------------------------*/
108
IAP_IDLE:
109
    MOV   IAP_CONTR,#0              ;Close IAP function
110
    MOV   IAP_CMD,#0                ;Clear command to standby
111
    MOV   IAP_TRIG,#0               ;Clear trigger register
112
    MOV   IAP_ADDRH,#80H            ;Data ptr point to non-EEPROM area
113
    MOV   IAP_ADDRL,#0              ;Clear IAP address to prevent misuse
114
    RET
115
116
;/*----------------------------
117
;Read one byte from ISP/IAP/EEPROM area
118
;Input: DPTR(ISP/IAP/EEPROM address)
119
;Output:ACC (Flash data)
120
;----------------------------*/
121
IAP_READ:
122
    MOV   IAP_CONTR,#ENABLE_IAP     ;Open IAP function, and set wait time
123
    MOV   IAP_CMD,#CMD_READ         ;Set ISP/IAP/EEPROM READ command
124
    MOV   IAP_ADDRL,DPL             ;Set ISP/IAP/EEPROM address low
125
    MOV   IAP_ADDRH,DPH             ;Set ISP/IAP/EEPROM address high
126
    MOV   IAP_TRIG,#5AH             ;Send trigger command1 (0x5a)
127
    MOV   IAP_TRIG,#0A5H            ;Send trigger command2 (0xa5)
128
    NOP                             ;MCU will hold here until ISP/IAP/EEPROM operation complete
129
    MOV   A,IAP_DATA                ;Read ISP/IAP/EEPROM data
130
    LCALL IAP_IDLE                  ;Close ISP/IAP/EEPROM function
131
    RET
132
133
;/*----------------------------
134
;Program one byte to ISP/IAP/EEPROM area
135
;Input: DPAT(ISP/IAP/EEPROM address)
136
;       ACC (ISP/IAP/EEPROM data)
137
;Output:-
138
;----------------------------*/
139
IAP_PROGRAM:
140
    MOV   IAP_CONTR,#ENABLE_IAP    ;Open IAP function, and set wait time
141
    MOV   IAP_CMD,#CMD_PROGRAM     ;Set ISP/IAP/EEPROM PROGRAM command
142
    MOV   IAP_ADDRL,DPL            ;Set ISP/IAP/EEPROM address low
143
    MOV   IAP_ADDRH,DPH            ;Set ISP/IAP/EEPROM address high
144
    MOV   IAP_DATA,A               ;Write ISP/IAP/EEPROM data
145
    MOV   IAP_TRIG,#5AH            ;Send trigger command1 (0x5a)
146
    MOV   IAP_TRIG,#0A5H           ;Send trigger command2 (0xa5)
147
    NOP                            ;MCU will hold here until ISP/IAP/EEPROM operation complete
148
    LCALL IAP_IDLE                 ;Close ISP/IAP/EEPROM function
149
    RET
150
151
;/*----------------------------
152
;Erase one sector area
153
;Input: DPTR(ISP/IAP/EEPROM address)
154
;Output:-
155
;----------------------------*/
156
IAP_ERASE:
157
    MOV   IAP_CONTR,#ENABLE_IAP    ;Open IAP function, and set wait time
158
    MOV   IAP_CMD,#CMD_ERASE       ;Set ISP/IAP/EEPROM ERASE command
159
    MOV   IAP_ADDRL,DPL            ;Set ISP/IAP/EEPROM address low
160
    MOV   IAP_ADDRH,DPH            ;Set ISP/IAP/EEPROM address high
161
    MOV   IAP_TRIG,#5AH            ;Send trigger command1 (0x5a)
162
    MOV   IAP_TRIG,#0A5H           ;Send trigger command2 (0xa5)
163
    NOP                            ;MCU will hold here until ISP/IAP/EEPROM operation complete
164
    LCALL IAP_IDLE                 ;Close ISP/IAP/EEPROM function
165
    RET
166
167
    END

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.