串行通信接口(1)ppt课件_第1页
串行通信接口(1)ppt课件_第2页
串行通信接口(1)ppt课件_第3页
串行通信接口(1)ppt课件_第4页
串行通信接口(1)ppt课件_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第0位位第第1位位第第2位位第第3位位第第4位位第第5位位第第6位位第第7位位停顿位停顿位开场位开场位SCI数据格式4 41 12 23 35 56 67 78 89 99 9芯串行接口陈列芯串行接口陈列前往前往MAX232CPE16 15 14 13 12 11 10 916 15 14 13 12 11 10 91 2 3 4 5 6 7 81 2 3 4 5 6 7 851232232电平电平OUT INOUT IN+5V+5VTTLTTL电平电平OUT INOUT INTTLTTL电平电平转为转为232232电平电平14SCI编程模型SCI 数据存放器数据存放器MCU MCU 的的

2、内内 部部 总总 线线 Internal BusInternal Bus接纳移位存放器发送移位存放器接纳引脚接纳引脚RxDRxD发送引脚发送引脚TxDTxDSCI 控制存放器控制存放器SCI形状存放器形状存放器SCI波特率存放器波特率存放器前往前往循环方式循环方式选择位选择位SCI允许位允许位奇偶校验奇偶校验允许位允许位空闲线空闲线类型位类型位唤醒条件位唤醒条件位方式方式-字符字符长度选择位长度选择位发送反转发送反转标志位标志位奇偶校验类奇偶校验类型选择位型选择位发送中断发送中断允许位允许位 发送完成中发送完成中断允许位断允许位 接纳器唤接纳器唤醒位醒位发送器允许位发送器允许位 接纳中断接纳中

3、断允许位允许位 空闲线中空闲线中断允许位断允许位接纳器接纳器允许位允许位 发送终止位发送终止位 接纳位接纳位8 发送位发送位8 接纳器帧接纳器帧错误中断错误中断允许位允许位 接纳器噪接纳器噪声错误中声错误中断允许位断允许位 接纳器溢出接纳器溢出中断允许位中断允许位 DMA发送发送允许位允许位 DMA接纳接纳允许位允许位 接纳器奇偶错接纳器奇偶错误中断允许位误中断允许位 接纳器奇接纳器奇偶错误标偶错误标志位志位 发送缓冲区发送缓冲区空标志位空标志位 接纳器帧错接纳器帧错误标志位误标志位 接纳器噪接纳器噪声标志位声标志位 接纳器溢接纳器溢出标志位出标志位 接纳器满接纳器满标志位标志位 发送完成发送

4、完成标志位标志位 接纳器空接纳器空闲标志位闲标志位 未定义未定义 终止码标志位终止码标志位 接纳进展接纳进展标志位标志位 出、出、8位数据、无校验位数据、无校验第三步:写控制字到第三步:写控制字到SCI控制存放器控制存放器2SCC2。 LDA #%00001100 STA SCC2 ;设置允许发送、允许接纳,设置允许发送、允许接纳,查询方式收发查询方式收发前往前往串行通讯头文件串行通讯头文件 SCI.h SCI.h /SCI.h/SCI.h串行通讯头文件串行通讯头文件- - #include GP32C.h /GP32 MCU #include GP32C.h /GP32 MCU映像存放器名定

5、义映像存放器名定义#include Type.h /#include Type.h /类型别名定义类型别名定义#define ReSendStatusR SCS1 /SCI#define ReSendStatusR SCS1 /SCI形状存放器形状存放器#define ReTestBit 5 /#define ReTestBit 5 /接纳缓冲区满标志位接纳缓冲区满标志位#define SendTestBit 7 /#define SendTestBit 7 /发送缓冲区空标志位发送缓冲区空标志位#define ReSendDataR SCDR /#define ReSendDataR SCD

6、R /数据存放器数据存放器/串行通讯函数声明串行通讯函数声明void SCIinit(void); /void SCIinit(void); /串行口初始化串行口初始化void SCIsend1(INT8U o); /void SCIsend1(INT8U o); /发送发送1 1字节字节void SCIsendN(INT8U n, INT8U ch); /void SCIsendN(INT8U n, INT8U ch); /发送发送n n字节字节INT8U SCIre1(INT8U INT8U SCIre1(INT8U * *p); /p); /接纳接纳1 1字节字节INT8U SCIreN

7、(INT8U n, INT8U ch); /INT8U SCIreN(INT8U n, INT8U ch); /接纳接纳n n字节字节_串行通讯驱动文件包括串行通讯驱动文件包括SCISCI初始化、接纳初始化、接纳1 1字节、发送字节、发送1 1字节、接纳字节、接纳n n字节和发送字节和发送n n字节函数。读者可以直接运用这些函数进展字节函数。读者可以直接运用这些函数进展MCUMCU的串行通讯编程。的串行通讯编程。/SCI.c/SCI.c串行通讯串行通讯-* */本文件包含本文件包含: : * */ / 1 1SCIinit: SCIinit: 串行口初始化串行口初始化 * */ / 2 2SC

8、Isend1:SCIsend1:串行发送串行发送1 1个字节个字节 * */ / 3 3SCIsendN:SCIsendN:串行发送串行发送n n字节字节 * */ / 4 4SCIre1: SCIre1: 串行接纳串行接纳1 1字节字节 * */ / 5 5SCIreN: SCIreN: 串行接纳串行接纳n n字节字节 * */硬件衔接硬件衔接: : * */ MCU/ MCU的串口与的串口与PCPC方的串口相连方的串口相连 * */-/-* * /头文件头文件#include SCI.h#include SCI.h /SCIinit:/SCIinit:串行口初始化串行口初始化-* */功能

9、功能: :对串行口进展初始化对串行口进展初始化, ,默以为允许默以为允许SCI,SCI,正常码输出正常码输出,8,8位数位数 * * 据据, ,无校验无校验, , * */允许发送器允许发送器, ,允许接纳器允许接纳器. .查询方式收发查询方式收发, ,波特率为波特率为9600(9600(设设fBUS fBUS * * = 2.4576MHz) = 2.4576MHz) * */参数参数: :无无 * */前往前往: :无无 * */阐明阐明: :该函数与详细的芯片型号该函数与详细的芯片型号(MC68HC908GP32)(MC68HC908GP32)有关有关 * */-/-* *void SC

10、Iinit(void)void SCIinit(void) /1. /1.总线频率总线频率fBUS = 2.4576MHz,fBUS = 2.4576MHz,定义波特率定义波特率Bt = 9600Bt = 9600 SCBR = 0b00000010; SCBR = 0b00000010; /2. /2.设置允许设置允许SCI,SCI,正常码输出正常码输出,8,8位数据位数据, ,无校验无校验 SCC1 = 0b01000000; SCC1 = 0b01000000; /3. /3.设置允许发送设置允许发送, ,允许接纳允许接纳, ,查询方式收发查询方式收发 SCC2 = 0b00001100

11、; SCC2 = 0b00001100; /SCIsend1:/SCIsend1:串行发送串行发送1 1个字节个字节-* */功能功能: :串行发送串行发送1 1个字节个字节 * */参数参数: :要发送的数据要发送的数据 * */前往前往: :无无 * */-/-* *void SCIsend1void SCIsend1INT8U oINT8U o / /判别判别ReStatusRReStatusR的第的第SendTestBitSendTestBit位能否为位能否为1,1,是是1 1可以发送可以发送 while while 1 1 if if ReSendStatusR & ReSe

12、ndStatusR & 1SendTestBit1SendTestBit != 0 != 0 ReSendDataR = o; ReSendDataR = o; break; break; /SCIsendN:/SCIsendN:串行发送串行发送N N个字节个字节-* */功能功能: :发送数组中的发送数组中的N N个字节数据个字节数据 * */参数参数: :待发送数据的字节数及存放这些数据的数组首地址待发送数据的字节数及存放这些数据的数组首地址 * */前往前往: :无无 * */内部调用函数内部调用函数:SCIsend1 :SCIsend1 * */-/-* *void SCIse

13、ndNvoid SCIsendNINT8U n, INT8U chINT8U n, INT8U ch int i; int i; for fori=0; in; i+i=0; in; i+ SCIsend1 SCIsend1chichi; ; /SCIre1:/SCIre1:串行收一个字节数据串行收一个字节数据-* */功能功能: :从串行口接纳从串行口接纳1 1个字节的数据个字节的数据 * */参数参数: :标志指针标志指针p p * */前往前往: :接纳到的数据假设接纳失败,前往接纳到的数据假设接纳失败,前往0 xff0 xff * */阐明阐明: :参数参数* *p p带回接纳标志带回

14、接纳标志. .* *p = 0,p = 0,收到数据收到数据; ;* *p = 1,p = 1,未收到数据未收到数据 * */-/-* *INT8U SCIre1INT8U SCIre1INT8U INT8U * *p p INT16U k; INT16U k; INT8U i; INT8U i; /ReStatusR /ReStatusR第第ReTestBitReTestBit位为位为1 1表示可接纳数据表示可接纳数据 forfork=0; k 0 xfbbb; k+k=0; k 0 xfbbb; k+ if if ReSendStatusR & ReSendStatusR &

15、; 1ReTestBit1= 0 xfbbbk = 0 xfbbb i = 0 xff; i = 0 xff; * *p = 0 x01;p = 0 x01; return i; return i; /SCIreN:HC08/SCIreN:HC08串行接纳串行接纳N N个字节个字节-* */功能功能: :接纳接纳N N个字节数据个字节数据, ,并存放在并存放在chch数组中数组中 * */参数参数: :待接纳的数据字节数及其存放的数组首地址待接纳的数据字节数及其存放的数组首地址 * */前往前往: :接纳标志接纳标志 = 0 = 0 收到数据收到数据, = 1 , = 1 未收到数据未收到数据

16、 * */内部调用函数内部调用函数:SCIre1 :SCIre1 * */-/-* *INT8U SCIreNINT8U SCIreNINT8U n, INT8U chINT8U n, INT8U ch int m; int m; INT8U fp; INT8U fp; m = 0;m = 0; while while m nm n chm = SCIre1 chm = SCIre1&fp&fp; ; if if fp = 1fp = 1 return 1; return 1; m+; m+; return 0; return 0; 前往前往表表7-5 中断方式中断方式08C测

17、试工程文件测试工程文件工程文件名工程文件名SCI_INT.prj所在途径所在途径MC08Ex2007GP32GP32CC03_串行通讯中断方式串行通讯中断方式文件类型文件类型文件名文件名功能简述功能简述讲解章节讲解章节头文件头文件GP32C.h芯片头文件芯片头文件08C工程文件组织工程文件组织5.3Includes.h总头文件总头文件08C工程文件组织工程文件组织5.3EnDisInt.h开放或制止开放或制止MCUMCU模块中模块中断断08C工程文件组织工程文件组织5.3SCI.h串行通讯头文件串行通讯头文件本章本章Type.h数据类型头文件数据类型头文件08C工程文件组织工程文件组织5.3C

18、言语言语子函数文件子函数文件MCUinit.c芯片系统初始化函数芯片系统初始化函数定义定义初始化及初始化及PLL编程实编程实例例14.2.5SCI.cCI收发子函数定义收发子函数定义本章本章Vectors.c中断处置及中断向量中断处置及中断向量表表08C工程文件组织工程文件组织5.3C言语主函数言语主函数Main.c主函数主函数本章本章/-/-* */工工 程程 名名:SCI_Int.prj :SCI_Int.prj * */硬件衔接硬件衔接: : * */ (1)MCU/ (1)MCU的串口与的串口与PCPC方的串口相连方的串口相连 * */程序描画程序描画: :利用中断方式把收到的数据发送

19、回去利用中断方式把收到的数据发送回去 * */目目 的的: :初步掌握利用中断方式进展串行通讯的根本知识初步掌握利用中断方式进展串行通讯的根本知识 * */-/-清华清华20072007版版 实例实例-* */总头文件总头文件#include Includes.h#include Includes.h/主函数主函数void main()void main() DisableMCUint(); / DisableMCUint(); /制止总中断制止总中断 /1. /1. 芯片初始化芯片初始化 MCUinit(); MCUinit(); /2. /2. 模块初始化模块初始化 SCIinit();

20、/(1) SCIinit(); /(1) 串口初始化串口初始化 /3. /3. 开放各模块中断开放各模块中断 EnableSCIreInt(); /(1)EnableSCIreInt(); /(1)开放开放SCISCI接纳中断接纳中断 /4. /4. 开放总中断开放总中断 EnableMCUint(); EnableMCUint(); / /主循环主循环 while (1)while (1) /EnDisInt.h/EnDisInt.h开放或制止开放或制止MCUMCU各模块中断头文件各模块中断头文件-#include GP32C.h /GP32 MCU#include GP32C.h /GP3

21、2 MCU映像存放器名定义映像存放器名定义/开放或制止中断宏定义开放或制止中断宏定义#define EnableMCUint() asm(CLI) /#define EnableMCUint() asm(CLI) /开放总中断开放总中断#define DisableMCUint() asm(SEI) /#define DisableMCUint() asm(SEI) /制止总中断制止总中断#define EnableSCIreInt() SCC2 |= (1 5) /#define EnableSCIreInt() SCC2 |= (1 5) /令令SCC2.5=1,SCC2.5=1,开放开放

22、SCISCI接纳中断接纳中断#define DisableSCIreInt() SCC2 &= (1 5) /#define DisableSCIreInt() SCC2 &= (1 5) /令令SCC2.5=0,SCC2.5=0,制止制止SCISCI接纳中断接纳中断/Vectors08.c/Vectors08.c中断处置函数与中断向量表中断处置函数与中断向量表-* */功能功能: : * */ (1)/ (1)定义中断处置子程序定义中断处置子程序 * */ (2)/ (2)放置中断向量表放置中断向量表 * */本文件包含本文件包含: : / (1)SCI/ (1)SCI接纳中

23、断处置函数接纳中断处置函数 * */ (2)/ (2)未定义的中断处置函数未定义的中断处置函数 * */阐明阐明: :该文件与芯片详细型号有关该文件与芯片详细型号有关 * */ (1)/ (1)芯片型号芯片型号MC68HC908GP32 MC68HC908GP32 * */- /- * * #include Type.h /#include Type.h /类型别名定义类型别名定义#include EnDisInt.h /#include EnDisInt.h /开放或制止开放或制止MCUMCU各模块中断的宏定义各模块中断的宏定义#include SCI.h /#include SCI.h /该头文件包含串行通讯函数声明该头文件包含串行通讯函数声明 /isrSCIre:/isrSCIre:接纳中断处置函数接纳中断处置函数- - -* */功能功能: :接纳接纳1 1个字节数据个字节数据, , 发送接到

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论