#define LIB_CFG_DISK_IO 1 /* 磁盤讀寫的數(shù)據(jù)的復(fù)制方式,1為"單DPTR復(fù)制",2為"雙DPTR復(fù)制",3為"單DPTR和P2+R0復(fù)制" */ 程序里有這個(gè)預(yù)處理,不知這三個(gè)有什么區(qū)別,請(qǐng)教各位大蝦
拿我們的375操作U盤的例子來(lái)說(shuō), 1,使用單DPTR的方式,在進(jìn)行往U盤里面寫數(shù)據(jù)的時(shí)候,實(shí)際操作的匯編代碼為: loop: mov dptr,#BUFFER(這里面是BUFFER的首地址) movx a,@dptr mov r7,dpl mov r6,dph mov dptr,#CH375_DAT_PORT(這個(gè)是375的數(shù)據(jù)端口的地址) movx @dptr,a mov dpl,r7 mov dph,r6 inc dptr jmp loop//這里只是示意下,實(shí)際根據(jù)寫的字節(jié)數(shù)做循環(huán) 2,使用雙DPTR的話,實(shí)際是有的單片機(jī)有2個(gè)硬件的DPTR,在復(fù)制數(shù)據(jù)的時(shí)候可以直接的切換數(shù)據(jù)就可以了: loop: mov dptr,#BUFFER(這里面是BUFFER的首地址) movx a,@dptr inc auxr1(這個(gè)是DPTR寄存器的切換的地址) mov dptr,#CH375_DAT_PORT(這個(gè)是375的數(shù)據(jù)端口的地址) movx @dptr,a inc auxr1(這個(gè)是DPTR寄存器的切換的地址) inc dptr jmp loop//這里只是示意下,實(shí)際根據(jù)寫的字節(jié)數(shù)做循環(huán) 3,對(duì)于使用P2+R0以及DPTR的復(fù)制方式的,實(shí)際就是利用一個(gè)器件的地址是不需要改變來(lái)進(jìn)行數(shù)據(jù): loop: mov dptr,#BUFFER(這里面是BUFFER的首地址) movx a,@dptr mov a,#HIGH(CH375_DAT_PORT) xch a,p4 mov r0,#LOW(CH375_DAT_PORT) movx @R0,a inc dptr jmp loop//這里只是示意下,實(shí)際根據(jù)寫的字節(jié)數(shù)做循環(huán)
謝謝,再好好研究下