w77e58 Winbond Electronics Corp America, w77e58 Datasheet - Page 40
![no-image](/images/no-image-200.jpg)
w77e58
Manufacturer Part Number
w77e58
Description
8 Bit Microcontroller
Manufacturer
Winbond Electronics Corp America
Datasheet
1.W77E58.pdf
(85 pages)
Available stocks
Company
Part Number
Manufacturer
Quantity
Price
Company:
Part Number:
w77e58-24
Manufacturer:
WINBOND
Quantity:
500
Company:
Part Number:
w77e58-24
Manufacturer:
Winbond
Quantity:
600
Company:
Part Number:
w77e58-40
Manufacturer:
WINBOND
Quantity:
500
Company:
Part Number:
w77e58-40
Manufacturer:
WIN
Quantity:
226
Part Number:
w77e58-40
Manufacturer:
WIN
Quantity:
20 000
Part Number:
w77e58BP-40
Manufacturer:
WIN
Quantity:
20 000
MOVX Instruction
The W77E58, like the standard 8032, uses the MOVX instruction to access external Data Memory.
This Data Memory includes both off-chip memory as well as memory mapped peripherals. While the
results of the MOVX instruction are the same as in the standard 8032, the operation and the timing of
the strobe signals have been modified in order to give the user much greater flexibility.
The MOVX instruction is of two types, the MOVX @Ri and MOVX @DPTR. In the MOVX @Ri, the
address of the external data comes from two sources. The lower 8-bits of the address are stored in
the Ri register of the selected working register bank. The upper 8-bits of the address come from the
port 2 SFR. In the MOVX @DPTR type, the full 16-bit address is supplied by the Data Pointer.
Since the W77E58 has two Data Pointers, DPTR and DPTR1, the user has to select between the two
by setting or clearing the DPS bit. The Data Pointer Select bit (DPS) is the LSB of the DPS SFR,
which exists at location 86h. No other bits in this SFR have any effect, and they are set to 0. When
DPS is 0, then DPTR is selected, and when set to 1, DPTR1 is selected. The user can switch between
DPTR and DPTR1 by toggling the DPS bit. The quickest way to do this is by the INC instruction. The
advantage of having two Data Pointers is most obvious while performing block move operations. The
accompanying code shows how the use of two separate Data Pointers speeds up the execution time
for code performing the same task.
Block Move with single Data Pointer:
; SH and SL are the high and low bytes of Source Address
; DH and DL are the high and low bytes of Destination Address
; CNT is the number of bytes to be moved
MOV
MOV
MOV
MOV
MOV
LOOP:
MOV
MOV
MOVX A, @DPTR
INC
MOV
MOV
MOV
MOV
MOVX @DPTR, A
INC
MOV
MOV
DJNZ R2, LOOP
R2, #CNT
R3, #SL
R4, #SH
R5, #DL
R6, #DH
DPL, R3
DPH, R4
DPTR
R3, DPL
R4, DPH
DPL, R5
DPH, R6
DPTR
DPL, R5
DPH, R6
; Load R2 with the count value
; Save low byte of Source Address in R3
; Save high byte of Source address in R4
; Save low byte of Destination Address in R5
; Save high byte of Destination address in R6
; Load DPL with low byte of Source address
; Load DPH with high byte of Source address
; Get byte from Source to Accumulator
; Increment Source Address to next byte
; Save low byte of Source address in R3
; Save high byte of Source Address in R4
; Load low byte of Destination Address in DPL
; Load high byte of Destination Address in DPH
; Write data to destination
; Increment Destination Address
; Save low byte of new destination address in R5
; Save high byte of new destination address in R6
; Decrement count and do LOOP again if count <> 0
- 40 -
Preliminary W77E58
Machine cycles of W77E58
#
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2