软件开发MC9S08EL3飞思卡尔汽车单片机芯片
软件开发串口接收ASCII字符,最大允许接收 Uart1_MaxString 个字符到Uart1_Data字符组,其中可包括回车
、换行符号,当接收到字0x00后,字符数组标示为可读,在字符串接收满后如果未接收到字0x00,所有
后续接收全部被忽略,直到接收到0x00,字符数组标示为可读。
使用22118400晶振,最大波特率19200bit/s
串口编程示范
//文件包含
#include "STC.H"
#include <stdio.h>
#include "Uart1.c"
//函数申明
void Uart1_setup(); //初使化串口函数申明,在函数中设定串口工作方式
//主函数
void main()
{
printf("Helloo Word"); //使用库函数向串口写数据,再使用printf前必须使用过Uart1_SendString函数
while(1) //主程序循环避免死机
{
if(Uart1.Read==1)
{ //如果串口1数据可读
Uart1_SendString(Uart1_Data); //串口1回送接收的数据
Uart1.Read=0; //串口1不可读(已读,为下次读出做准备)
}
}
}
//初使化串口函数 ,必须写在主函数尾,在主函数头部申明并引用
void Uart1_setup()
{
for(Uart1.Data_P=0;Uart1.Data_P<=Uart1_MaxString;Uart1.Data_P++)
{//清空串口1接收字串内容,写0x00
Uart1_Data[Uart1.Data_P]='\0';
}
Uart1.Data_P= 0; //串口1接收字串下标归0
Uart1.ParitySet= 0; //串口1使用9位可变波特率方式,校验方式为无校验, 0无校验,1:奇校验,2:偶校验,3:校验=1,4:校验=0
Uart1_Setup(19200,0); //串口1波特率为19200bps,时基源选择定时器1 , 0为定时器1,1为独立波特率发生器
}
=======================================================================================*/
//包含文件定义
//串口相关常量定义
#define FOSC 22118400L //系统频率11059200L 22118400L
#define Uart1_MaxString 64 //串口1最大接收缓冲区字符数量
//串口相关变量定义
char xdata Uart1_Data[Uart1_MaxString+1]; //串口1接收字串
struct Uart1
{//串口1结构数据类型
unsigned char Data_P; //串口1接收字串位置指针
unsigned char ParitySet; //串口1奇偶校验方式 0不校验 1奇校验 2偶校验 3始终1 4始终0
unsigned char Busy:1; //串口1正在发送标记,1,正在发送,0,发送完成 ,保留未使用
unsigned char Read:1; //串口1接受字符组可读标记
unsigned char Parity:1; //串口1接收到的奇偶校验状态 1,0
unsigned char Parity_out:1; //串口1验证接收到的奇偶校验状态 1,验证,0验证错误
}Uart1; //结构变量名
//Uart1包含函数申明
void Uart1_Setup(unsigned long Uart1_Baud,bit Uart1_Tx); //串口1波特率和时基源设置函数
void Uart1_chars_Int(); //串口1中断服务函数采用字符数组接收以'\0'为停止符的实际内容
void Uart1_SendData(unsigned char Uart1_dat); //串口1单字符发送函数
void Uart1_SendString(char *s); //串口1字符串发送函数
//非必要包含的函数申明
//void Time1_Isr() interrupt 3 using 1; //定时器1中断服务函数入口
//void Uart1_Isr() interrupt 4 using 1; //串口1中断服务函数入口

芯片解密