| Electronic Components Datasheet Search |
|
DS80C320 Datasheet(PDF) 12 Page - Dallas Semiconductor |
|
|
|||||||||||||||||||||||||||||
DS80C320 Datasheet(HTML) 12 Page - Dallas Semiconductor |
|
12 / 42 page ![]() DS80C320/DS80C323 12 of 42 DUAL DATA POINTER Data memory block moves can be accelerated using the Dual Data Pointer (DPTR). The standard 8032 DPTR is a 16-bit value that is used to address off-chip data RAM or peripherals. In the DS80C320/DS80C323, the standard 16-bit data pointer is called DPTR0 and is located at SFR addresses 82h and 83h. These are the standard locations. The new DPTR is located at SFR 84h and 85h and is called DPTR1. The DPTR Select bit (DPS) chooses the active pointer and is located at the LSB of the SFR location 86h. No other bits in register 86h have any effect and are set to 0. The user switches between data pointers by toggling the LSB of register 86h. The increment (INC) instruction is the fastest way to accomplish this. All DPTR-related instructions use the currently selected DPTR for any activity. Therefore only one instruction is required to switch from a source to a destination address. Using the Dual-Data Pointer saves code from needing to save source and destination addresses when doing a block move. Once loaded, the software simply switches between DPTR and 1. The relevant register locations are as follows. DPL 82h Low byte original DPTR DPH 83h High byte original DPTR DPL1 84h Low byte new DPTR DPH1 85h High byte new DPTR DPS 86h DPTR Select (LSB) Sample code listed below illustrates the saving from using the dual DPTR. The example program was original code written for an 8051 and requires a total of 1869 DS80C320/DS80C323 machine cycles. This takes 299 µs to execute at 25 MHz. The new code using the Dual DPTR requires only 1097 machine cycles taking 175.5 µs. The Dual DPTR saves 772 machine cycles or 123.5 µs for a 64-byte block move. Since each pass through the loop saves 12 machine cycles when compared to the single DPTR approach, larger blocks gain more efficiency using this feature. 64-BYTE BLOCK MOVE WITHOUT DUAL DATA POINTER ; SH and SL are high and low byte source address. ; DH and DL are high and low byte of destination address. # CYCLES MOV R5, #64d ; NUMBER OF BYTES TO MOVE 2 MOV DPTR, #SHSL ; LOAD SOURCE ADDRESS 3 MOV R1, #SL ; SAVE LOW BYTE OF SOURCE 2 MOV R2, #SH ; SAVE HIGH BYTE OF SOURCE 2 MOV R3, #DL ; SAVE LOW BYTE OF DESTINATION 2 MOV R4, #DH ; SAVE HIGH BYTE OF DESTINATION 2 MOVE: ; THIS LOOP IS PERFORMED THE NUMBER OF TIMES LOADED INTO R5, IN THIS EXAMPLE 64 MOVX A, @DPTR ; READ SOURCE DATA BYTE 2 MOV R1, DPL ; SAVE NEW SOURCE POINTER 2 MOV R2, DPH ; 2 MOV DPL, R3 ; LOAD NEW DESTINATION 2 MOV DPH, R4 ; 2 MOVX @DPTR, A ; WRITE DATA TO DESTINATION 2 INC DPTR ; NEXT DESTINATION ADDRESS 3 MOV R3, DPL ; SAVE NEW DESTINATION POINTER 2 MOV R4, DPH ; 2 MOV DPL, R1 ; GET NEW SOURCE POINTER 2 MOV DPH, R2 ; 2 INC DPTR ; NEXT SOURCE ADDRESS 3 DJNZ R5, MOVE ; FINISHED WITH TABLE? 3 |
|
Link URL |
| Does ALLDATASHEET help your business so far? [ DONATE ] |
About Alldatasheet | Advertisement | Contact us | Privacy Policy | Link to Datasheet | Link Exchange | Manufacturer List All Rights Reserved©Alldatasheet.com |
| Russian : Alldatasheetru.com | Korean : Alldatasheet.co.kr | Spanish : Alldatasheet.es | French : Alldatasheet.fr | Italian : Alldatasheetit.com Portuguese : Alldatasheetpt.com | Polish : Alldatasheet.pl | Vietnamese : Alldatasheet.vn Indian : Alldatasheet.in | Mexican : Alldatasheet.com.mx | British : Alldatasheet.co.uk | New Zealand : Alldatasheet.co.nz |
|
Family Site : ic2ic.com |
icmetro.com |