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

📄 dvcpu.c

📁 一个调整ADC gain offset 的程序
💻 C
字号:
#include "extData.h"
#include "DataType.h"
#include "syscfg.h"
#include "reg51.h"
#include "dvcpu.h"
#include "mtv415.h"
#include "ram.h"
#include "dvIIC.h"
#include "fpga.h"
#include "utility.h"
#include "string.h"
#include"define.h"
#include "intrins.h"

//chip configuration
BYTE xdata PAMOD50 _at_  0xF50;
BYTE xdata PAMOD51 _at_  0xF51;
BYTE xdata PAMOD52 _at_  0xF52;
BYTE xdata PAMOD53 _at_  0xF53;
BYTE xdata PAMOD54 _at_  0xF54;
BYTE xdata PAMOD55 _at_  0xF55;
BYTE xdata OPTION56 _at_ 0xF56;
BYTE xdata PADMOD57 _at_ 0xF57;
BYTE xdata PADMOD5D _at_ 0xF5D;

//IO  port
BYTE xdata P6B0 _at_ 0xF38;
BYTE xdata P6B1 _at_ 0xF39;
BYTE xdata P6B2 _at_ 0xF3A;
BYTE xdata P6B3 _at_ 0xF3B;
BYTE xdata P6B4 _at_ 0xF3C;
BYTE xdata P6B5 _at_ 0xF3D;
BYTE xdata P6B6 _at_ 0xF3E;
BYTE xdata P6B7 _at_ 0xF3F;
BYTE xdata P4B0 _at_ 0xF58;
BYTE xdata P4B1 _at_ 0xF59;
BYTE xdata P4B2 _at_ 0xF5A;
BYTE xdata P4B3 _at_ 0xF5B;
BYTE xdata PORT6 _at_ 0xF81;
BYTE xdata PORT4 _at_ 0xF82;

//PWM DAC
BYTE xdata  DA0 _at_ 0xF20;
BYTE xdata  DA1 _at_ 0xF21;
BYTE xdata  DA2 _at_ 0xF22;
BYTE xdata  DA3 _at_ 0xF23;
BYTE xdata  DA2FC _at_ 0xF2D;
BYTE xdata  DA3FC _at_ 0xF2E;
BYTE xdata  PFC _at_ 0xF2F;


//IIC REGISTER
BYTE xdata IICCTR _at_ 0xF00;
BYTE xdata IICSTUS1 _at_ 0xF01;
BYTE xdata INTFLG1 _at_ 0xF03;
BYTE xdata INTEN1 _at_ 0xF04;
BYTE xdata MBUF  _at_ 0xF05;
BYTE xdata DDCCTRA1 _at_ 0xF06;
BYTE xdata SLVAADR1 _at_ 0xF07;
BYTE xdata RCBBUF1 _at_ 0xF08;
//BYTE xdata TXBBUF1 _at_ 0xF08;
BYTE xdata SLVBADR1 _at_ 0xF09;
BYTE xdata CTRSLVB1 _at_ 0xF0A;
BYTE xdata DDCCTRA2 _at_ 0xF86;
BYTE xdata SLVAADR2 _at_ 0xF87;
BYTE xdata IICSTUS2 _at_ 0xF91;
BYTE xdata INTFLG2 _at_ 0xF93;
BYTE xdata INTEN2 _at_ 0xF94;
BYTE xdata RCBBUF2 _at_ 0xF98;
//BYTE xdata TXBBUF2 _at_ 0xF98;
BYTE xdata SLVBADR2 _at_ 0xF99;
BYTE xdata CTRSLVB2 _at_ 0xF9A;

//  A/D CONVERTER

BYTE xdata ADC _at_ 0xF10;
//BYTE xdata ADC0 _at_ 0xF10;
BYTE xdata ADC1 _at_ 0xF11;
BYTE xdata ADC2 _at_ 0xF12;
BYTE xdata ADC3 _at_ 0xF13;

//ISP
BYTE xdata ISPSLV _at_ 0xF0B;
BYTE xdata ISPEN _at_ 0xF0C;
BYTE xdata ISPCMP1 _at_ 0xF0D;
BYTE xdata ISPCMP2 _at_ 0xF0E;
BYTE xdata ISPCMP3 _at_ 0xF0F;

//HIGH DRIVRING PADS
BYTE xdata DRCTRL _at_ 0xF5C;

//ETIMER
BYTE xdata ETCTR _at_ 0xF88;
BYTE xdata ETMOD _at_ 0xF89;
BYTE xdata THET _at_ 0xF8A;
BYTE xdata TLET _at_ 0xF8B;
BYTE xdata RCAPETH _at_ 0xF8C;
BYTE xdata RCAPETL _at_ 0xF8D;
BYTE xdata EINT1PEN _at_ 0xF8E;

//WatchDog Timer
BYTE xdata WDT _at_ 0xF18;

//INT3&INT4
BYTE xdata INTFLG _at_ 0xF48;
BYTE xdata INTEN  _at_ 0xF49 ;


#define ADC0 ADC
#define TXBBUF1  RCBBUF1
#define TXBBUF2  RCBBUF2

#define EnableInterrupt()  { EA = 1;}
#define DisableInterrupt() { EA = 0;}

#define EOF  -1


 void initSerialPort(void)
{
ETCTR = 0x30;//(Timer2 used to baut rate generator) 
ETMOD = 0x01;
THET = 0xFF;
TLET = 0xB2;
RCAPETH = 0xFF;  // the baut rate is 2400
RCAPETL = 0xB2;
EINT1PEN = 0x00;
SCON = 0x50;     //serial port work mode 1,enable serial port receive.
ETCTR|= 1<<2;    // TR2 = 1
}


 void initTimer0(void) 
{  
 // Set Time Base=2ms 
  TH0=(65536-2000)/256;
  TL0=(65536-2000)%256;
}

 void initIIC(void)
{  
 IICCTR = 0x00;
 INTFLG1 = 0x00;
 INTEN1 = 0x00;
}

 void initWatchDog(void)
{   
  WDT = 0x00; //disable the watchdog 
}

 void dvCPUInit(void)
{

DisableInterrupt();
PAMOD50 = 0x00; 
PAMOD51 = 0x00;
PAMOD52 = 0x44;
PAMOD54 = 0x00;
PAMOD55 = 0x00;//0x81;
OPTION56 = 0x00;
PADMOD57 = 0x00;
PADMOD5D = 0xFF;
DRCTRL = 0x00;

TMOD = 0x01;  //Timer0 16bit timer.
initSerialPort();
initTimer0();
initIIC();
initWatchDog();
//enable timer0 run
TR0 = 1;
//enable timer0 interrupt
ET0 = 1;
//enable extern interrupt 0
EX0 = 0;
//WDT =0x84;
//enable all interrupt
EnableInterrupt();
}



void Timer0(void) interrupt 1
{
 TR0 = 0;
 initTimer0();
 if(m_Timer != 0)
 m_Timer--;
 IICTimerProcess();
 CalibrationTimerProcess();
 
 TR0 = 1;
}
#ifdef SW
void SendChar(BYTE ch )
{

     SBUF = ch;
     while(1)
     {
       if(TI)
       {
        TI =0;
	    break;
       }
     }
    // SerialPort =ch;

 }

#endif



char putchar(char ch)
{

    unsigned char cOutput[2];
     _nop_ ();
     _nop_ ();
      _nop_ ();
      _nop_ ();
    if ('\n' == ch)  // expand "\n" to CR LF
    {
        cOutput[0] = 0x0d;
        cOutput[1] = ch;
       #ifdef SW
        SendChar(cOutput[0]);
          SendChar(cOutput[1]);
         #endif
         #ifdef HW
          SerialPort = cOutput[0];
           _nop_ ();
           _nop_ ();
           _nop_ ();
           _nop_ ();
          SerialPort= cOutput[1];
          #endif
    }

    else

    {
       #ifdef HW
        SerialPort=ch;
       #endif
     #ifdef SW
      SendChar(ch);
      #endif
     
    }

 

        return ch;
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -