📄 310_init.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 + -