📄 cpu_init.c
字号:
//函数声明
#include <c8051f020.h> // SFR 声明
#include "SMBUS.h"
void Port_IO_Init() //IO口以及存储器初始化
{
EMI0CF = 0x2C; //选择高端口模式,只用外部存储器,EMIF工作在
//地址/数据复用方式,/WR和/RD占用12个SYSCLK周期
EMI0TC = 0x3C; //地址建立/保持时间为0,ALE高/低脉宽占1个SYSCLK周期
P3MDOUT = 0x2D; //P3.5--> LCD_RES,P3.3--> LCD_REQ,P3.2--> OE574,
//P3.0--> OE574 四位设置为推拉输出方式;
//P3.4--> LCD_BUSY,P3.1-->PS2_DATA两位设置为开漏输出方式。
P74OUT = 0xFF; //将P4,P6,P5,P7口配置为推拉输出方式
P0MDOUT = 0x01; //将TX0,TX1设置为推拉输出方式
P1MDOUT = 0x01;
XBR0 = 0xDF; //按照配置表进行各个外设的配置
XBR1 = 0x1C;
XBR2 = 0x44;
/*额外的配置请在本行文字以下进行配置并请加详细注释*/
/*------------------------------------------------*/
}
void Oscillator_Init() //晶振初始化
{
int i = 0;
OSCXCN = 0x67;
for (i = 0; i < 3000; i++); // Wait 1ms for initialization
while ((OSCXCN & 0x80) == 0);
OSCICN = 0x88;//使用外部22.1184M晶振,使能时钟丢失检测
}
/**************************************************************************************************/
void Interrupts_Init() //中断初始化
{
IE |= 0x11;//使能UART0,/INT0中断
IP |= 0x10;//设置UART0中断为高优先级
}
void Timer_Init()
{
CKCON = 0x10;//定时器1选择系统时钟为时钟源
TMOD = 0x20;//定时器1工作在8位自动重载方式
TH1 = 0xB8;//UART0波特率设为9600bps
TCON = 0x41;//使能定时器1并使外部中断0配置为边沿触发方式
}
void UART0_Init(void)
{
SCON0=0xF0; //通信方式3允许多机通信方式
PCON=0x00;
SADDR0=0x00;//主机地址为0x00
SADEN0=0xFF;//全字节地址匹配
}
void Init_Device(void)
{
Oscillator_Init();
Port_IO_Init();
Interrupts_Init();
Timer_Init();
UART0_Init();
SMBus_Init();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -