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

📄 main.c

📁 在飞思卡尔S12DG128单片机调通的串口通信程序
💻 C
字号:
#include <hidef.h>      /* common defines and macros */
#include <mc9s12dg128.h>     /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"


//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//***************************变量初始化***************************


//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>


//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//***************************PLL初始化*****************************
void PLLInit(void){
  REFDV=1;
  SYNR=2;
  asm nop;
  asm nop;
  while ((CRGFLG & 0x08)==0); // wait here till the PLL is locked. 
  CLKSEL|=0x80; 
}

//***************************IO初始化******************************
void IOInit(void){
  DDRB=0xFF;
  DDRK=0x00;
}
//***************************ECT初始化*****************************
void ECTInit(void){

  TIOS=0x01;
  TIE=0x00;
  TSCR2=0x03;        //******************   24M/8
  TCTL3=0x40;
  TSCR1=0x80;
}

//***************************AD初始化*****************************

//***************************PWM初始化*****************************

//***************************SCI初始化*****************************
void SCIInit(void){
 SCI0CR2=0x0C;
 SCI0BD=0x009C;
}
//***************************初始化********************************
void HardInit(void){
  DisableInterrupts;
  
  PLLInit();
  //SCIInit();
  IOInit();
  //ECTInit();
  //ADInit();
  //PWMInit();
}
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>


//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//***************************SCI函数*******************************

void put_char(unsigned char c) {
  while((SCI0SR1&0x80)==0);
  SCI0DRL=c;
}


void print(signed char * c) {
  unsigned char i;
  i=0;
  while(c[i]!='#'&&c[i]!='$')
    { put_char(c[i]);
	  i++;
	}
  //if(c[i]=='#')
  //  { put_char(0x0D);
  //    put_char(0x0A);
	//}
}

void put_HEX(unsigned int c) {
  unsigned char a[4];
  int i;
  a[3]=c/4096%16;
  a[2]=c/256%16;
  a[1]=c/16%16;
  a[0]=c%16;
  for(i=3;i>=0;i--){
    if(a[i]>9)
      put_char(a[i]+0x37);
     else
      put_char(a[i]+0x30);
  }
}   


void put_LONG(unsigned long c) {
  unsigned char a[8];
  int i;
  a[7]=c/268435456%16;
  a[6]=c/16777216%16;
  a[5]=c/1048576%16;
  a[4]=c/65535%16;
  a[3]=c/4096%16;
  a[2]=c/256%16;
  a[1]=c/16%16;
  a[0]=c%16;
  for(i=7;i>=0;i--){
    if(a[i]>9)
      put_char(a[i]+0x37);
     else
      put_char(a[i]+0x30);
  }
}


void printpic(unsigned int *p,unsigned int m,unsigned int n){
  unsigned char i,j;
  put_char(0x0D);
  put_char(0x0A);
  put_char(0x0D);
  put_char(0x0A);
  print("The data of the pic is:$");
  put_char(0x0D);
  put_char(0x0A); 
  for(i=0;i<m;i++)
  for(j=0;j<n;j++){
    put_HEX(*p);
    print("    $");
    p++;
    if(j==(n-1)){
      put_char(0x0D);
      put_char(0x0A);  
    }
  } 
}

void blank(){
  put_char(0x0D);
  put_char(0x0A);
}

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

void sdelay(unsigned int delay_time) {
  unsigned int x,y;
  x=0;
  while(x<delay_time) {
    x++;y=0;
    while(y<0xFFFF)
    y++;
  }
}

//***************************主函数*******************************
void main(void) {
  
  int i,j,k;
  char data_num,a_z,A_Z;
  
  i=0;
  j=0;
  k=0;
  data_num=0x30;
  a_z=0x41;
  A_Z=0x61;
  
  
  HardInit();

  EnableInterrupts;
  blank();
  print("**************************************************$");
  blank();
  print("****************循环发送数字和字母****************$");
  blank();
  print("**************************************************$");
  blank();
  sdelay(100);
  print("开始接收...$");
  blank();
  sdelay(100);

  for(;;)
  {
    for(j=0;j<10;j++){
      put_char(data_num);
      print(" $"); 
      data_num++;     
      if(data_num>0x39) {
        data_num=0x30;
      }   
      sdelay(20);
    }
    
    blank();
    
    for(j=0;j<26;j++){
      put_char(a_z);
      print(" $"); 
      a_z++;    
      if(a_z>0x41+25) {
        a_z=0x41;
      }   
      sdelay(20);
    } 
       
    blank();
    
    for(j=0;j<26;j++){
      put_char(A_Z);
      print(" $"); 
      A_Z++;    
      if(A_Z>0x61+25) {
        A_Z=0x61;
      }   
      sdelay(20);
    }
    
    blank();    
  }  

}




















⌨️ 快捷键说明

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