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

📄 init_func.c

📁 写XS128的D-Flash的三个程序案例
💻 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 + -