COME OTTENERE IL MIRROR DI UN BYTE CON GLI ST6 |
Mi é capitato di dover rovesciare i bit di un byte messo su PORT_A per adattare un software con la parte hardware di un circuito; in pratica dopo aver elaborato dei dati all'interno di un ST62xx si doveva presentare il valore numerico del registro "a" sull'uscita PORT_A ma con i bit rovesciati a specchio (mirror, b7=b0 .... b0=b7).
Ecco come ho risolto il problema: File di testo
;Esempio: si entra con a=10011101b ; si esce con a=10111001b mirror clr v ;v=0 ldi y,1 ;parto con il primo bit (bit0) ld w,a ;salvo a in w cicle ld a,w rlc a ;b7 di a in CY ld w,a ;risalvo a in w per dopo jrc setx ;se b7=1 cy=1 pertanto salto a setx jp resx ;altrimenti b7=0 e vado a resx setx ld a,y ;prendo nr bit da settare ld x,a ;lo metto in x ldi a,255 com a ;cy=1 e a=0 rcla1 rlc a ;ruoto in a dec x ;conto bit jrnz rcla1 or com a ld x,a ld a,v com a and a,x com a ld v,a ;ho settato il bit e salvo in v jp incy ;vado a contare 8 bit resx ld a,y ld x,a ;x=y clr a ;cy=0 ldi a,255 rcla2 rlc a dec x jrnz rcla2 ld x,a ld a,v and a,x ld v,a ;ho resettato ilbit voluto e salvo in v incy inc y ld a,y cpi a,9 ;se sono gia 8 bit fatti esco jrnc return jp cicle ;altrimenti continuo prossimo bit return ld a,v ret
SCHEMA DI UN PROGRAMMATORE
PER ST6260/65
Visitate SOFTEC e prelevate il programma DSE622 che permette di emulare ST6 su PC