📄 chengxiu.c
字号:
#include <C8051F020.h> // SFR declarations
sfr16 DP = 0x82; // data pointer
sfr16 TMR3RL = 0x92; // Timer3 reload value
sfr16 TMR3 = 0x94; // Timer3 counter
sfr16 ADC0 = 0xbe; // ADC0 data
sfr16 ADC0GT = 0xc4; // ADC0 greater than window
sfr16 ADC0LT = 0xc6; // ADC0 less than window
sfr16 RCAP2 = 0xca; // Timer2 capture/reload
sfr16 T2 = 0xcc; // Timer2
sfr16 RCAP4 = 0xe4; // Timer4 capture/reload
sfr16 T4 = 0xf4; // Timer4
sfr16 DAC0 = 0xd2; // DAC0 data
sfr16 DAC1 = 0xd5; // DAC1 data
void main (void) {
unsigned char xdata * idata pwrite; //定义参数
unsigned int i,m;
unsigned int j,n;
unsigned char xdata *k;
unsigned char xdata * xr;
WDTCN = 0xde; //禁止看门狗定时器
WDTCN = 0xad;
OSCICN|=0x17; //启动内部晶振
for(i=0;i<256;i++);
for(i=0;i<256;i++);
/* OSCXCN=0x47; //启动外部晶振
for(i=0;i<256;i++);
//for(i=0;i<256;i++);
//for(i=0;i<256;i++);
//while(!(OSCXCN&0x80));
//OSCICN=0x88;*/
REF0CN=0x03; //允许内部基准点压
for(i=0;i<256;i++); //延时
P1MDIN=0x00; //p1端口模拟输入
P1MDOUT=0x00; //
// P1 =0xFF; //允许输入
ADC1CN=0x80; //允许ADC1
ADC1CF=0x19; //转换时钟
AMX1SL=0x01;
ADC1CN &= 0xdf; //
ADC1CN |= 0x10;
while(ADC1<=0x80) //预采集
{ ADC1CN &= 0xdf;
ADC1CN |= 0x10;
while(!(ADC1CN&0x20)); //
}
xr=0; //以下是FLASH擦除
k=0x1000;
for(n=0;n<64;n++)
{
pwrite = k;
FLSCL |= 0x01;
PSCTL = 0x03; // MOVX writes erase FLASH page
*pwrite = 0; // initiate page erase
PSCTL = 0; // MOVX writes target XRAM
FLSCL &= ~0x01; // disable FLASH writes/erases from user software
k+=0x0200;
} //以上为FLASH擦除
/*ADC1CN &= 0xdf; //以下是预采集
ADC1CN |= 0x10;
while(ADC1<=0x70)
{ ADC1CN &= 0xdf;
ADC1CN |= 0x10;
while(!(ADC1CN&0x20));
} */ //以上是预采集
k=0x1000; //以下是采集数据
for(m=0;m<5;m++)
{
xr=0;
for(i=0;i<4096;i++)
{
ADC1CN &= 0xdf;
ADC1CN |= 0x10;
while(!(ADC1CN&0x20));
*((char xdata *)xr)=ADC1;
*((unsigned char xdata *)xr)=ADC1;
xr++;
}
pwrite = k; // initialize FLASH write pointer
FLSCL |= 0x01; // enable FLASH writes/erases from
// user software
PSCTL = 0x01;
xr=0; // MOVX writes target FLASH memory
for(j=0;j<4096;j++)
{
// copy until NULL is detected
*pwrite =*((unsigned char xdata *)xr) ; // copy byte
xr++; // advance pointers
pwrite++;
k++;
} //以上时采集数据
PSCTL = 0x00; // MOVX writes target XRAM
FLSCL &= ~0x01; //禁止写FLASH
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -