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

📄 function.c

📁 motorola mc9s12dg128 uCOS的实现
💻 C
字号:
#include "main.h"

//-*********************************-//
//          延时程序
//-*********************************-//
void delay(unsigned int a)		    //delay 
{
uint i;
for(i=0;i<a;i++) 
  {
   wait100us();
  }
}
//-**********************************-//  wait 100us
void wait100us(void) {
  asm {
    LDD   #((BUS_FREQUENCY/3)-4-2-4)  /* minus cycles needed for BSR, LDA and RTS */
  loop:
    DBNE D,loop  /* 3 cycles per iteration */     
      }
}
//-*******************************-//wait 10us
void wait10us(void)  {
  asm{
    LDD   #((BUS_FREQUENCY/30)-4-2-4)  /* minus cycles needed for BSR, LDA and RTS */
  loop:
    DBNE D,loop  /* 3 cycles per iteration */  

  }
}
//-*******************************-//wait 5us
void wait5us(void)  {
  asm{
    LDD   #((BUS_FREQUENCY/60)-4-2-4)  /* minus cycles needed for BSR, LDA and RTS */
  loop:
    DBNE D,loop  /* 3 cycles per iteration */  

  }
}
//-*********************************-//
//          串口接收与发送
//-*********************************-//
void put_char(char c)            //串口向外发送一个char字符
{							        
   while((SCI0SR1&0x80)==0);
   SCI0DRL=c;
}
void put_word(int w) 
{
   put_char((char)w);
   w>>=8;
   put_char((char)w);   
}
char get_char(void)              //从串口收一个字符
 {								
   while ((SCI0SR1&0x20)==0);
   return SCI0DRL;
 }
//-********************************-//
#ifndef NOERROR
#define NOERROR	 0
#endif
#ifndef ERROR
#define ERROR	 1
#endif

//#define	 Erase_Verify  0x05
//#define	 Word_Program  0x20
//#define	 Sector_Erase  0x40
//#define	 Mass_Erase    0x41
//#define	 Sector_Modify 0x60
#define	 ERASECMD      0x20
#define	 PROGCMD       0x20

void Init_Eeprom(void)
{
 ECLKDIV=0x4C;				//Erase or Prog frequence 167KHz
 INITEE=17; 
 asm nop;
 MISC=1;
}
//擦写:
unsigned char EepromErase(unsigned int *pAddress, unsigned char size)
{
  if(ECLKDIV_EDIVLD == 1) 
  {
    if((ESTAT_ACCERR == 0) && (ESTAT_PVIOL == 0)) 
    { 
       while(size)
       {
         if(ESTAT_CBEIF == 1) 
         {
           *pAddress = 0xFFFF; 
           pAddress += 2; 
           ECMD =ERASECMD; 
           ESTAT_CBEIF = 1; 
           if((ESTAT_ACCERR == 1) || (ESTAT_PVIOL == 1)) 
           return ERROR;
           while (ESTAT_CCIF == 0); 
           size--;
          } 
       } 
       return NOERROR; 
    }
    else return ERROR; 

  }
  else return ERROR; 

}
/////////////////////////////////////////////////////////////////////
unsigned char EepromProgram(unsigned int *pAddress, unsigned int *pData, unsigned char size)
{ 
  if(ECLKDIV_EDIVLD == 1) 
  { 
    if((ESTAT_ACCERR == 0) && (ESTAT_PVIOL == 0)) 
    { 
      while(size)
      { 
        if(ESTAT_CBEIF == 1) 
        { 
          *pAddress++ = *pData++; 
          ECMD = PROGCMD; 
          ESTAT_CBEIF = 1; 
          if((ESTAT_ACCERR == 1) || (ESTAT_PVIOL == 1)) 
          return ERROR;
          while (ESTAT_CCIF == 0); 
          size--; 
          } 
      }
      return NOERROR; 
    }
    else return ERROR;
  }
  else return ERROR;
}
//////////////////////////////////////////////////////////////////////




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -