We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
We are considering the Cypress FX2. Ive seen several postings about using the dual data pointers on some 8051 devices, but they don't seem to offer much advantage when you have to waste valuable time executing instructions to toggle between the two. Curiously, there's not much I can see on exploiting the auto-increment feature of the DPTRs in some 8051 variants, and in the FX2 at least, they can both be used without having one of them 'hidden'. I need an efficient memcpy between the FX2's endpoint memory space, (treated as a FIFO), and an external location. Is this the best way? Only two instructions in the loop... Or have I missed something?
MOV AUTOPTRSET,#03;; enable, inc 1, not 2 MOV r7,#64 ;;count MOV AUTOPTR1L,#c0 MOV AUTOPTR1H,#e7 ;; e7c0=EP1OUT buffer MOV AUTOPTR2L,#00 MOV AUTOPTR2H,#40 ;; 4000=external loop: MOV XAUTODAT2,XAUTODAT1 DJNZ R7,loop
single dptr movx a,@dptr inc dptr mov slot3,dph mov slot4,dpl mov dph,slot1 mov dpl,slot 2 movx @dptr,a inc dptr mov slot1,dph mov slot2,dpl mov dph,slot3 mov dpl,slot4 loop dual dptr movx a,@dptr inc dptr inc dps movx @dptr,a inc dptr inc dps loop no savings ????? Erik