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

📄 310_init.c

📁 C8051F310部分模块程序.已经调试成功
💻 C
字号:
#include <stdio.h>
void INIT_PORT (void) ;
INIT_ADC0 (unsigned char channel) ;
void INIT_UART0 (void) ;
void INIT_TIMER2 (unsigned int iT2num) ;
void INIT_INTERRUPT (void) ;
void INIT_SYS_CLK (void) ;
/**********************************************
Function:SYSCLK_Init
Description:Choose the clock of system;   
Called by:main();
***********************************************/
void INIT_SYS_CLK (void){
    int i ; // delay counter
//    oscxcn = 0x67 ; // start external oscillator with
  // 22.1184MHz crystal
    for (i=0; i < 256; i++) { // XTLVLD blanking interval (>1ms)
	    ;
	}
//   while (!(oscxcn & 0x80)) { // Wait for crystal osc. to settle
//	    ;
//	}
    oscicn = 0x87 ;//0x88 // select external oscillator as SYSCLK
    oscxcn=0x00 ;
    pcon=0x80 ;
// source and enable missing clock
// detector
}
void INIT_PORT (void){
    xbr2 = 0x40 ;
    xbr1 = 0x00 ;
    xbr0 = 0x04 ;              // Enable crossbar and weak pull-ups
    p74out = 0x00 ;
    p2mdout = 0x00 ;	
    p1mdout = 0x40 ;
	p0mdout = 0xff;
   }
INIT_ADC0 (unsigned char channel){
    unsigned int temp ;
    dac0cn = 0x80 ;		//DAC0 control Register;Make out;
    dac0l = 0xff ;		//DAC0 low byte Register;
    dac0h = 0x0f ;		//DAC0 high Byte Register;
    ref0cn = 0x1f ;		//Choose the VREF come from out of DAC0;
	amx0sl = channel ;                               //ADC0 channel 1 , multiple 1 ;
    amx0cf = 0x00 ;                 
    adc0cf = 0x38 ;
    adc0cn = 0xc0 ;
	adc0cn |= 0x10 ;
	while(ad0int == 0){                          //Waiting conventer over;
	}
    adc0cn &= 0xcf;                                    //Clear buffer ;
    temp = adc0h << 8;                           //Adc0h to buffer ;
    temp += adc0l ;
}
void INIT_UART0 (void)
{
scon0 = 0x50; // SCON0: mode 1, 8-bit UART, enable RX
}
/**********************************************
入口地址:Timer2_Init()
功能:T2作为串口发送和接收时钟;
被调用函数:main();
***********************************************/
void INIT_TIMER2 (unsigned int iT2num)
{
tmod = 0x00 ;
tcon = 0x00 ;
ckcon |= 0x20 ;//use system clock;
t2con = 0x30 ; // Stop Timer3; Clear TF3;
// use SYSCLK as timebase
rcap2 = iT2num-1 ;//0xfffb; // Init reload values
t2 = iT2num-1 ;//0xfffb; // set to reload immediately
tr2 = 1 ;
}
void INIT_INTERRUPT (void){
    eie2 = 0x02 ;	    //Enable interrupt ADC1 end of exchange and ADC0 end of exchange;
    eie1 = 0x00 ;		//disEnable interrupt all of PCA;
    ie = 0x10 ;			//Take off uart0,and so on; 
	ea = 1 ;
}

⌨️ 快捷键说明

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