⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chengxiu.c

📁 c8051f单片机数据采集的程序例子
💻 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 + -