void main(void)
{
unsigned char bb[10]="0123456789";
unsigned char i,j,aa[10];
init_8019(); //8019初始化
serial(); //串口初始化
page(0);
reg07=0x00;
reg09=0x40;
reg08=0x00;
reg0b=0x00;
reg0a=10;
reg00=0x12;
for(j=0;j <10;j++)
{
reg15=bb[j]; //bb数组存0x4000开始单元,reg15为dma端口
}
page(0);
reg09=0x40;
reg08=0x00;
reg0b=0x00;
reg0a=10;
reg00=0x0a;
for(j=0;j <10;j++)
{
aa[j]=reg15; // 读出写入数据
}
reg0b=0; // count high 中止DMA操作
reg0a=0;// count low
reg00=0x22;//abort/complete dma page 0
serial_disp(aa,10); 串口输出
while(1);
}
根据分析,写入最后一位时为9,一直存在reg15中,所以读取的过程中根本就没有从ram中读出.这是什么原因啊?其中还有一个奇怪的问题,reg10-reg17中8个dma端口经过测试只有reg15可以用,常用的reg00不能用,输出始终为0x00.
单片机用89s52,晶振24M.
恳求大侠指点!