📄 mcu_init.c
字号:
/***********************************************************************************************/
// 初始化模块
// 模块功能:时钟初始化、端口初始化、串口(UART)初始化、AD-DA初始化、定时器(T3)初始化
// PCA初始化
/***********************************************************************************************/
#include<MCU_Init.h>
#include<C8051F000.h>
//--------------------------------------------------------------------------------------------------/
// 时钟初始化
//--------------------------------------------------------------------------------------------------/
void SYSCLK_Init() //时钟初始化
{
OSCICN=OSCICN|0x03; //启用内部晶振16MHZ
}
//--------------------------------------------------------------------------------------------------/
// 端口初始化
//--------------------------------------------------------------------------------------------------/
void PORT_Init() //端口初始化
{
XBR0=0x00;
XBR1=0x00;
XBR2=0x40;
PRT0CF=0xFF; //PO推挽输出
PRT1CF=0xFF; //PO推挽输出
PRT3CF=0xff; //P3设置为推挽输出
P0=0x0F; //用于键盘判断
P1=0x0ff;
}
//--------------------------------------------------------------------------------------------------/
// 串口初始化
//--------------------------------------------------------------------------------------------------/
void Uart_Init() //串口初始化
{
TMOD=0x20; //定时器T1方式2,作波特率发生器(若用T2:TCON.5、TCON.4须置1)
TH1=0xe8;
TL1=0xe8;
PCON=0x00;
TR1=1;
SCON=0x50; //UART方式1(方式2、方式3适于多机通讯(SM2))
}
//--------------------------------------------------------------------------------------------------/
// ADC初始化
//--------------------------------------------------------------------------------------------------/
void ADC0_Init() //ADC初始化
{
ADC0CN=0x00; //ADC0禁止、ADCBUSY写1、数据右对齐
REF0CN=0x03; //AD基准选择:内部基准源
AMX0CF=0x00; //ADC输入方式选择:单端输入
AMX0SL=0x00; //选择通道0作为电压AD输入 AMX0SL=0x01;
ADC0CF=0x80; //分频系数(为16〕与增益(为1)设置
EIE2&=0xFD; //禁止ADC中断
}
//--------------------------------------------------------------------------------------------------/
// 定时器3初始化
//--------------------------------------------------------------------------------------------------/
void Timer3_Init(unsigned int counts)
{
TMR3CN=0x02; //停止定时器3,清除TF3,系统时钟为时基
TMR3RL=~counts+1; //赋初值
TMR3=TMR3RL;
EIE2&=!0x01; //关T3中断
TMR3CN|=0x04; //启动T3
}
//--------------------------------------------------------------------------------------------------/
// DAC初始化
//--------------------------------------------------------------------------------------------------/
void DAC_Init() //DAC初始化
{
DAC0CN=0x81; //DAC允许, 右对齐方式
}
//--------------------------------------------------------------------------------------------------/
// PCA初始化
//--------------------------------------------------------------------------------------------------
void PCA_Init()
{
PCA0MD=0x03; //CPU等待时PCA0正常工作;系统时钟的1/4为计数脉冲源溢出中断允许
PCA0CPM0=0x02; //模块0:8位脉宽调制方式、脉宽调制允许、电平切换匹配中断禁止
PCA0CPM1=0x61; //模块1:正边沿捕捉方式、匹配中断允许
EIE1|=0x08; //允许PCA0中断
PCA0CPH0=0xd0;
CR=0; //关PCA0
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -