📄 dvcpu.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 + -