9S08串口编程.doc
上传人:qw****27 上传时间:2024-09-12 格式:DOC 页数:5 大小:147KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

9S08串口编程.doc

9S08串口编程.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

9S08系列单片机串口编程该文档内容及代码使用的单片机为9S08LG32。串口使用基本步骤初始化SCI的IO口,RX设置为输入,TX设置为输出。初始化BUSCLK演示代码:/*==================================================**函数:Init_Bus20M*功能:初始化总线频率BUSCLK为20MHz,使用内部振荡器32.768KHz*参数:无*返回值:*备注:系统频率40MHz,总线频率20MHz**==================================================*/voidInit_Bus20M_Internal(void){ICSC2_BDIV=0;//到总线频率不分频ICSC2_RANGE=1;ICSC2_HGO=1;//1ICSC2_EREFS=1;ICSC2_EREFSTEN=1;ICSC2_ERCLKEN=0;ICSTRM=153;//若要获取精准的BUSCLK,需对ICSTRM进行校准ICSSC_DMX32=1;//2011.12.4ICSSC_DRST_DRS=1;//2011.12.4ICSSC_IREFST=1;ICSSC_CLKST=1;ICSC1_IRCLKEN=1;//1ICSIRCLKactiveTheIREFSbitselectsthereferenceclocksourcefortheFLL.ICSC1_CLKS=0;//01Internalreferenceclockisselected.ICSC1_RDIV=0;ICSC1_IREFS=1;//1InternalreferenceclockselectedSOPT1_COPE=1;//使能看门狗LCDC0_SOURCE=0;}初始化ICS相关寄存器简单的代码演示:voidInit_SCI1(void){SCGC1_SCI1=1;//把BUSCLK给SCI1SCI1C2_TE=1;//发送允许SCI1C2_RE=1;//接受允许SCI1C2_RIE=1;//允许接收中断SCI1C1=0;SCI1BDH=0x0;//setbaudrate9600,对应20M的BUSCLKSCI1BDL=0X82;}这此例中,把SCI1初始化为最简单的使用方法,接受/发送数据流为:STOP|M|DATA[7:0]|START写中断函数SCIvoidinterruptVectorNumber_Vsci1rxISR_SCI1_RX(void){SCI1S1_RDRF=0;//必须清楚RDRF标志staticunsignedinti=0;unsignedcharRx_buf[i++]=SCI1D;//赋值接收到的DATA到变量//addcode。。。。。}该函数需要在.h头文件中申明,VectorNumber_Vsci1rx为中断向量,此处对应SCI1的接受中断。interrupt为中断处理函数关键字。关于串口数据调试读取字符解析,这里图片以485口读上位机指令为例:发送指令为:EB04;其二进制代码:1110101100000100电脑发送的字符为:STOP|M|DATA[7:0]|START。此格式为:M——bit8为0STOP——停止为1;START——开始位1;DATA数据位从右向左发出。对比图片中的1,0解析。(注意:此段仅作参考——间隔的位置到数据DATA位有一个上升沿,用作数据开始点)。