📄 sci.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 + -