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

📄 sci.c

📁 s12温度控制程序,包括模糊控制和LCD程序
💻 C
字号:


#include <hidef.h>      /* common defines and macros */
#include "all_head.h"
#include <mc9s12dg128.h>     /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"

static char array_num = 0;                       //串口数据长度
static char string_num = 0;
//extern int testdata;
extern int pulse;
extern char list;
extern char feedback1[];
extern char feedback2[];


/*************************************************************/
/*S12微控制器工作频率8MHz,波特率为9600,正常8位模式,无奇偶校验*/
/*************************************************************/
//初始化SCI0
void Sci0_Ini(void)
{
  SCI0BD  = 52;            //9600bps
  SCI0CR1 = 0;             //正常8位模式,无奇偶校验
  SCI0CR2 = 0x2c;          //接收中断允许
  
}

//读SCI receive
unsigned char Sci0Read(void)
{
  if(SCI0SR1_RDRF==1)   //当接收移位寄存器里的数据发送到SCI数据寄存器时置位
  {
   SCI0SR1_RDRF = 1;    //通过置位RDRF且读SCI数据寄存器里的值来清零RDRF
   return SCI0DRL;
  }
  /*
  if(SCI0SR1_TDRE==1)  //为了调试可以看,自已另外加的,这个IF语句可以不加的
  {
   SCI0SR1_TDRE = 1;
   return SCI0DRL;
  }
   */
}
 
void Sci0_Sendbyte(char data) 
{
  SCI0DRL = data;
  while(SCI0SR1_TDRE!=1);      //等待发送移位寄存器里接收到SCI数据寄存器里的数据
  SCI0SR1_TDRE = 1;            //write 1 to clear the register 
}


void Sci0_Sendvalue(int data)       //发送数据的ASC码
{
  int qw,bw,sw,gw;
  qw = data/1000;
  bw = (data-qw*1000)/100;
  sw = (data-qw*1000-bw*100)/10;
  gw = data%10;
  Sci0_Sendbyte('0'+qw);
  Sci0_Sendbyte('0'+bw);
  Sci0_Sendbyte('0'+sw);
  Sci0_Sendbyte('0'+gw);
  //Sci0_Sendbyte('\n');   
  
}


//写SCI  transport
void Sci0Write_array(char *sci_array,char length)
 { 
 // char i;
 // char *Send_data;
 // Send_data = array;
                      //当发送移位寄存器里接收到SCI数据寄存器里的数据时置位
  SCI0SR1_TDRE = 1;   //当TDRE设为1时,发送数据寄存器为空,能够接收新的数据去发送
  if(array_num>=length)
     array_num = 0;
  SCI0DRL = sci_array[array_num++]; 
  Delay(1);            //continuing....
 }

void Sci0Write_string(char *sci_string)
{
 char i = 0;
 // char *Send_data;
 // Send_data = string;
 SCI0SR1_TDRE = 1;
 while(sci_string[i]!='\0') 
 { 
    //if(*sci_string == '\0')  break;
    Sci0_Sendbyte(sci_string[i++]);
 }
 //Sci0_Sendbyte('\n');
}
void Sci0DisplayParameter(void){


}



void DisplayFeedbackValue(void) {
  char nowlist;              //当前通道
  int temp;
  nowlist = list;            //保存当前通道
  list++;                    //全局变量自加1
  if(list>7)  list = 0;      //限幅
  temp = ReduceBound(pulse); //读取当前采样后经过处理的值0--255
  switch(nowlist) 
  {
    case 0:
      Sci0Write_string(feedback1);
      Sci0_Sendbyte('0'+0);
      Sci0Write_string(feedback2);
      Sci0_Sendvalue(temp);
      break;
    case 1:
      Sci0Write_string(feedback1);
      Sci0_Sendbyte('0'+1);
      Sci0Write_string(feedback2);
      Sci0_Sendvalue(temp);
      break;
    case 2:
      Sci0Write_string(feedback1);
      Sci0_Sendbyte('0'+2);
      Sci0Write_string(feedback2);
      Sci0_Sendvalue(temp);
      break;
    case 3:
      Sci0Write_string(feedback1);
      Sci0_Sendbyte('0'+3);
      Sci0Write_string(feedback2);
      Sci0_Sendvalue(temp);
      break;
    case 4:
      Sci0Write_string(feedback1);
      Sci0_Sendbyte('0'+4);
      Sci0Write_string(feedback2);
      Sci0_Sendvalue(temp);
      break;
    case 5:
      Sci0Write_string(feedback1);
      Sci0_Sendbyte('0'+5);
      Sci0Write_string(feedback2);
      Sci0_Sendvalue(temp);
      break;
    case 6:
      Sci0Write_string(feedback1);
      Sci0_Sendbyte('0'+6);
      Sci0Write_string(feedback2);
      Sci0_Sendvalue(temp);
      break;
    case 7:
      Sci0Write_string(feedback1);
      Sci0_Sendbyte('0'+7);
      Sci0Write_string(feedback2);
      Sci0_Sendvalue(temp);
      break;
    
  }
}




⌨️ 快捷键说明

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