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

📄 main.c

📁 MC13213接受AD采集信号并发送到串口进行接受的程序
💻 C
字号:
#include <hidef.h> /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */
/**
 sci
 */
 
 //串口的发送程序,在波特率为38400时有误码,估计应该换电容,将电容增加到1uF或者更换为钽电容;

#include <string.h>
//#include "derivative.h"
//#include "Gb60_io.h"

typedef unsigned char   UINT8;      //!<unsigned 8 bit definition 
typedef unsigned int    UINT16;     //!<unsigned 16 bit definition
typedef unsigned long   UINT32;     //!<unsigned 32 bit definition
typedef signed char     INT8;       //!<signed 8 bit definition 
typedef int             INT16;      //!<signed 16 bit definition
typedef long int        INT32;      //!<signed 32 bit definition

//#define     SCI2BDH     (*((volatile unsigned char *)(0x20)))    /* SCI2 baud rate register (high) */
//#define     SCI2BDL     (*((volatile unsigned char *)(0x21)))    /* SCI2 baud rate register (low byte) */
//#define     SCI2C1      (*((volatile unsigned char *)(0x22)))    /* SCI2 control register 1 */
//#define     SCI2C2      (*((volatile unsigned char *)(0x23)))    /* SCI2 control register 2 */
//#define     SCI2S1      (*((volatile unsigned char *)(0x24)))    /* SCI2 status register 1 */
//#define     SCI2S2      (*((volatile unsigned char *)(0x25)))    /* SCI2 status register 2 */
//#define     SCI2C3      (*((volatile unsigned char *)(0x26)))    /* SCI2 control register 3 */
//#define     SCI2D     (*((volatile unsigned char *)(0x27)))    /* SCI2 data register (low byte) */

 
#define LED1DIR  PTCDD_PTCDD5
#define LED2DIR  PTCDD_PTCDD6
#define LED3DIR  PTCDD_PTCDD7
//#define LED4DIR  PTBDD_PTBDD7
//#define LED5DIR  PTBDD_PTBDD3
//#define LED6DIR  PTBDD_PTBDD4


#define LED1 PTCD_PTCD5
#define LED2 PTCD_PTCD6
#define LED3 PTCD_PTCD7
//#define LED4 PTBD_PTBD7
//#define LED5 PTBD_PTBD3
//#define LED6 PTBD_PTBD4

#define KEY1DIR  PTADD_PTADD2
#define KEY2DIR  PTADD_PTADD3
#define KEY1  PTAD_PTAD2
#define KEY2  PTAD_PTAD3

#define BAUD_38400    0x0D    //for busclk=4Mhz (clk rate=8Mhz)
#define DEFAULT_SCI_PORT 0x01
#define INIT_SCI2C2    0b00101100

void LedInit(void);
void ad_init(void);
void SCIInitGeneric(UINT32 u32BusClock, UINT32 u32BaudRate, UINT8 u8ComNumber);
void delay(unsigned int count);
void SCIStartTransmit(UINT8 cData);
void SCITransmitStr(UINT8 *pStr);
UINT16 Uint82Uint10(UINT8 nHexData);
void	NumberToChar(unsigned int	nDecadeData,
					 unsigned char * pChar,
					 unsigned char Length);


UINT8 DataBuffer[2];
UINT16 Datab1=0;

//unsigned char Temp;

void main(void) {
//unsigned char Temp;
UINT8 i=0x0;
unsigned char	ucTemp[5]={0,0,0,0,0};
	
 
  EnableInterrupts; /* enable interrupts */
  /* include your code here */
  
  //
   
  LedInit();
  ad_init();
  SCIInitGeneric(4000000, 9600, DEFAULT_SCI_PORT);
  //memset(ucTemp,0,sizeof(ucTemp));

    
  for(;;) {
    __RESET_WATCHDOG(); /* feeds the dog */
 if(KEY2==1) {  
  LED1 =0;
  LED2 =0;
  LED3 =0;
 // LED4 =1;
 // LED5 =1;
 // LED6 =1;
 }
 else 
 LED1 =1;
 LED2 =1;
 LED3 =1;
   ATD1SC = 0;
    while((ATD1SC & 0x80) != 0x80);  //ccf位如果等于0,
    DataBuffer[0] = ATD1RH;
    Datab1 = Uint82Uint10(DataBuffer[0]);
    NumberToChar(Datab1,ucTemp,5);
    SCITransmitStr("The Voltage of Channel 1 is:");
    SCITransmitStr(ucTemp);
    SCITransmitStr("mV");
    SCITransmitStr("\t");
   


 
  //PTCD_PTCD6 =1;
  //PTCD_PTCD7 =1;
  //PTCD_PTCD5 =0;
  //PTCD_PTCD6 =0;
  //PTCD_PTCD7 =0;
  //SCI1D=0x55;

  
  } /* loop forever */
  /* please make sure that you never leave main */
}
void ad_init(void) {
  UINT8 i;
  for(i=0;i<2;i++) {
    DataBuffer[i]=0;
    
  }
  ATD1PE=0x01; 
  ATD1C=0xE1;
  

}
void LedInit(void) {
LED1DIR =1;
LED2DIR =1;
LED3DIR =1;
//LED4DIR =1;
//LED5DIR =1;
//LED6DIR =1;
KEY1DIR =0;
KEY2DIR =0; 
}

void delay(unsigned int count) {
  unsigned int i;
  for(i=1;i<count;i++){
    ;
  }
}
void SCIStartTransmit(UINT8 cData)
{
    while (!SCI1S1_TDRE);  /* ensure Tx data buffer empty */
    SCI1D = cData; /* load data to SCI2 register */
    while (!SCI1S1_TC); /* wait for Tx complete */
}


void SCIInitGeneric(UINT32 u32BusClock, UINT32 u32BaudRate, UINT8 u8ComNumber) {
   
   UINT16 u16Sbr = 0;   
   u16Sbr = (UINT16) ((u32BusClock) / (u32BaudRate * 16));
   
   switch (u8ComNumber) {
      case 1:
         SCI1BDL = (UINT8) u16Sbr;
         u16Sbr = u16Sbr >> 8;
         SCI1BDH = (UINT8) u16Sbr;
         SCI1C2 = INIT_SCI2C2;   
         break;
      
      case 2:
         SCI2BDL = (UINT8) u16Sbr;
         u16Sbr = u16Sbr >> 8;
         SCI2BDH = (UINT8) u16Sbr;
         SCI2C2 = INIT_SCI2C2;
         break;
         
      default:
         SCI1BDL = (UINT8) u16Sbr;
         u16Sbr = u16Sbr >> 8;
         SCI1BDH = (UINT8) u16Sbr;
         SCI1C2 = INIT_SCI2C2;   
         break;
   }   
}
UINT16 Uint82Uint10(UINT8 nHexData) {
  UINT8 temp[2]={0,0};
  UINT16 result=0;
  temp[0]=nHexData>>4;
  temp[1]=nHexData&0x0F;
  if(temp[1]==0x0a)    temp[1]=10;
  else if(temp[1]==0x0b)    temp[1]=11;
  else if(temp[1]==0x0c)    temp[1]=12;
  else if(temp[1]==0x0d)    temp[1]=13;
  else if(temp[1]==0x0e)    temp[1]=14;
  else if(temp[1]==0x0f)    temp[1]=15;
  result=(temp[0]*16+temp[1])*13; 
  return result;
}

void	NumberToChar(unsigned int	nDecadeData,
					 unsigned char * pChar,
					 unsigned char Length)
{
	unsigned char	uc;
	for (uc = Length;uc ; )
	{
		pChar[--uc] = nDecadeData%10 + 0x30;
		nDecadeData /=10;
	}
} 
void SCITransmitStr(UINT8 *pStr)
{
    UINT16 i;
    UINT16 nStrLen=strlen(pStr);
    
    for (i=0; i<nStrLen; i++)
    {
        SCIStartTransmit(pStr[i]);
    }
}

⌨️ 快捷键说明

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