📄 init_func.c
字号:
/* 本文件程序为MCU模块初始化程序以及功能函数等设置 */
#include <hidef.h> /* common defines and macros */
#include "mc9s12dg128.h"
#include "Init_Func.h"
#pragma CODE_SEG ADDR_LOW //0x4000-0x7FFF
//PLL_Init :锁相环初始化---------------------------------------------------*
//功 能:倍频 *
//参 数:无 *
//返 回:无 *
//注 意: *
//-------------------------------------------------------------------------*
void PLL_Init(void)
{
REFDV=1; //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)
SYNR=2; //锁相环时钟=2*16*(2+1)/(1+1)=48MHz 总线时钟=48/2=24MHz
while(!(CRGFLG&0x08)); //等待锁相环工作稳定
CLKSEL=0x80;
}
//Delay_ms :延时程序-------------------------------------------------------*
//功 能:延时 *
//参 数:ms--延时时间,单位:ms *
//返 回:无 *
//注 意:针对不同的总线频率需选择相应的延时语句 *
//-------------------------------------------------------------------------*
void Delay_ms(int ms)
{
int a ,b;
if(ms<1) ms=1;
for(a=0x00;a<ms;a++)
for(b=0x00;b<4006;b++) //for(b=0;b<1335;b++); //16MHz--1ms
{ //for(b=0;b<3338;b++); //40MHz--1ms
//for(b=0;b<4006;b++); //48MHz--1ms
//for(b=0;b<5341;b++); //64MHz--1ms
}
}
//SCI_Init:串口SCI初始化---------------------------------------------------*
//功 能:启用串口收发,波特率: BD=9600 , *
// 接收中断使能 RIE=1; *
// 发送接收允许 TE=1,RE=1 *
// *
//参 数:无 *
//返 回:无 *
//注 意:设置相应的总线频率: BUS freq *
//-------------------------------------------------------------------------*
void SCI_Init(void)
{
SCI0BDL = (uchar)(24000000UL /* BUS freq *// 9600 /* baud rate */ / 16 /*factor*/);
SCI0CR1=0; /*normal,no parity*/
SCI0CR2_RIE=1;
SCI0CR2_TE =1; /*RIE=1,TE=1,RE=1*/
SCI0CR2_RE =1;
}
//SCI_TxByte :发射端程序---------------------------------------------------*
//功 能:通过串口SCI发送一个字节 *
//参 数:text--要发送的字节 *
//返 回:无 *
//注 意: *
//-------------------------------------------------------------------------*
void SCI_TxByte(uchar text)
{
uchar temp;
temp=SCI0SR1; /*clear flag*/
while (!(SCI0SR1&0x80)); /* wait for output buffer empty */
SCI0DRH=0;
SCI0DRL=text;
}
//SCI_TxByte :接收端程序---------------------------------------------------*
//功 能:通过串口SCI接收一个字节 *
//参 数:无 *
//返 回:result--接收到的一个字节 *
//注 意: *
//-------------------------------------------------------------------------*
uchar SCI_RxByte(void)
{
uchar result,temp;
temp=SCI0SR1; /*clear flag*/
while(!(SCI0SR1&0x20));
result=SCI0DRL;
return result;
}
//SCI_TxBytes :发射端程序--------------------------------------------------*
//功 能:通过串口SCI发送一个字符串 *
//参 数:S[]--要发送的字符串的地址 *
//返 回:无 *
//注 意: *
//-------------------------------------------------------------------------*
void SCI_TxString(char S[])
{
uchar i=0x00;
while(S[i]!='\0')
{
SCI_TxByte(S[i]);
i++;
}
}
void SCI_TxBytes(uint n,uchar Num[])
{
uint i=0x00;
for(;i<n;i++)
{
SCI_TxByte(Num[i]);
i++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -