📄 aic23_54x.c
字号:
#include "myapp.h"
ioport unsigned int port0,port3;
#define ledregister0 port0
#define ledregister1 port3
void delay();
int DRR_data(void);
int read_data(int a);
void read_stu(void);
void wren(void);
void chip_erase(void);
void write_data(unsigned int *a,int addr);
unsigned int *point;
int data;
void main( void )
{
unsigned int l=0,m=0,n,k;
// int data_w[20],data_r[20];
initCLK(CPU_SPEED_80M);
// wren();
point=(unsigned int *)0x8000;
for(;;)
{
ledregister0=0x1;/*点亮led1灯*/
delay();/*延时*/
delay();
delay();
ledregister0=0x2;/*点亮led2灯*/
delay();
delay();
delay();
wren();
delay();
read_stu();
///*
chip_erase();
read_stu();
// read_data(l++);
for(l=0,n=0;l<7629;l++)//写入的字个数
{
k=((*point)>>8); //先写高字节
write_data(&k,n++);
read_stu();
while(data!=0x00) //
{
read_stu();
}
write_data(point++,n++);//再写低字节
read_stu();
while(data!=0x00) //
{
read_stu();
}
}
//*/
///*
point=(unsigned int *)0x8000;
for(l=0,n=0;l<0x8000;l++) //读出的字个数
{
read_data(n++); //先读高字节
if(data!=((*(point+l))>>8))//与高字节比较
m++;
read_stu();
while((data&0x00f0)!=0x00) //
{
read_stu();
}
read_data(n++); //再读低字节
if(data!=((*(point+l))&0x00ff))//与低字节比较
m++;
read_stu();
while((data&0x00f0)!=0x00) //
{
read_stu();
}
// if(l==0x190)
// m++;
}
//*/
read_data(l-1);
read_stu();
for(;;);
asm(" NOP");
asm(" NOP");
asm(" NOP");
asm(" NOP");
asm(" NOP");
asm(" NOP");
asm(" NOP");
asm(" NOP");
// while(1);
}
}
interrupt void rxData( void )
{
int i,j;
i=DRR10;
j=DRR20;
DXR10=i;
DXR20=j;
}
int DRR_data(void)
{
int i,j;
SPSA2=SPCR1;
i=SPSD2;
while((i&0x0002)==0)//判断rx ready
{
SPSA2=SPCR1;
i=SPSD2;
}
// delay();
j=DRR12;//单次就错
j=DRR12;
// delay();
return j;
}
void delay()
{ int j=0,i=0;
for(j=0;j<300;j++);
for(i=0;i<300;i++);
}
int read_data(int a)
{
int i,j,k;
McBSP2_40bit();
DXR12=0x03;//read
SPSA2=SPCR2;
i=SPSD2;
while((i&0x0002)==0)//判断ready
{
SPSA2=SPCR2;
i=SPSD2;
}
data=DRR12;
DXR12= 0; //地址
SPSA2=SPCR2;
i=SPSD2;
while((i&0x0002)==0)//判断ready
{
SPSA2=SPCR2;
i=SPSD2;
}
data=DRR12;
DXR12= (a>>8);
SPSA2=SPCR2;
i=SPSD2;
while((i&0x0002)==0)//判断ready
{
SPSA2=SPCR2;
i=SPSD2;
}
data=DRR12;
DXR12=(a&0x00ff);
SPSA2=SPCR2;
i=SPSD2;
while((i&0x0002)==0)//判断ready
{
SPSA2=SPCR2;
i=SPSD2;
}
data=DRR12;
DXR12=0x00;
SPSA2=SPCR2;
i=SPSD2;
while((i&0x0002)==0)//判断ready
{
SPSA2=SPCR2;
i=SPSD2;
}
delay();
data=DRR_data();
}
void wren(void)
{
int i;
McBSP2_8bit();
DXR12=0x06;
SPSA2=SPCR2;
i=SPSD2;
while((i&0x0002)==0)//判断ready
{
SPSA2=SPCR2;
i=SPSD2;
}
delay();
// i=DRR12;
// i=DRR12;
// return i;
}
void chip_erase(void)
{
int i;
McBSP2_8bit();
DXR12=0x62;
SPSA2=SPCR2;
i=SPSD2;
while((i&0x0002)==0)//判断ready
{
SPSA2=SPCR2;
i=SPSD2;
}
delay();
}
void read_stu(void)
{
int i;
McBSP2_16bit();
DXR12=0x05;
SPSA2=SPCR2;
i=SPSD2;
while((i&0x0002)==0)//判断ready
{
SPSA2=SPCR2;
i=SPSD2;
}
i=DRR12;
DXR12= 0x00;
SPSA2=SPCR2;
i=SPSD2;
while((i&0x0002)==0)//判断ready
{
SPSA2=SPCR2;
i=SPSD2;
}
delay();
data=DRR12; //单次就错
data=DRR12;
}
void write_data(unsigned int *a,int addr)
{
int i,j;
wren();
read_stu();
while(data!=0x02) //
{
read_stu();
}
McBSP2_40bit();
DXR12=0x02;//write
SPSA2=SPCR2;
i=SPSD2;
while((i&0x0002)==0)//判断ready
{
SPSA2=SPCR2;
i=SPSD2;
}
i=DRR12;
DXR12= 00; //地址
SPSA2=SPCR2;
i=SPSD2;
while((i&0x0002)==0)//判断ready
{
SPSA2=SPCR2;
i=SPSD2;
}
i=DRR12;
DXR12= (addr>>8);
SPSA2=SPCR2;
i=SPSD2;
while((i&0x0002)==0)//判断ready
{
SPSA2=SPCR2;
i=SPSD2;
}
i=DRR12;
DXR12=(addr&0x00ff);
SPSA2=SPCR2;
i=SPSD2;
while((i&0x0002)==0)//判断ready
{
SPSA2=SPCR2;
i=SPSD2;
}
i=DRR12;
DXR12= *a; //数据
SPSA2=SPCR2;
i=SPSD2;
while((i&0x0002)==0)//判断ready
{
SPSA2=SPCR2;
i=SPSD2;
}
delay();
data=DRR_data();
asm(" NOP");
asm(" NOP");
asm(" NOP");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -