- 1、本文档共149页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.1 MCS-51汇编指令概述 第3章 MCS-51单片机指令系统及编程技术 3.8.4 MCS-51单片机的C语言编程举例 void initINT(void) // 中断初始化子程序 { //add your code here } void initTimer(void) // 定时器初始化子程序 { //add your code here } void initUART(void) // UART初始化子程序 { //add your code here } 3.8.4 MCS-51单片机的C语言编程举例 void int0(void) interrupt 0 // 外部中断0 中断服务程序 { //add your code here } void timer0(void) interrupt 1 // 定时/计数器0中断服务程序 { //add your code here } void int1(void) interrupt 2 // 外部中断1 中断服务程序 { //add your code here } 3.8.4 MCS-51单片机的C语言编程举例 void timer1(void) interrupt 3 // 定时/计数器1 中断服务程序 { //add your code here } void uart(void) interrupt 4 // UART中断服务程序 { if(RI) { // 接收中断 RI=0; //add your code here } else // 发送中断 TI=0; } 3.8.4 MCS-51单片机的C语言编程举例 在C51的通用框架中,使用了中断服务程序,它是一种特殊的函数,其说明形式为: void 函数名(void) interrupt n using m { 函数体语句 } 其中,interrupt和using是C51中断服务程序的关键字。interrupt表示该函数是一个中断服务函数;其后的整数n表示该中断服务函数对应的中断源编号,各中断源编号下表所示。using指定该中断服务程序要使用的工作寄存器组号,m为0~3;若不使用关键字using,则编译系统将当前工作寄存器组的8个寄存器都压入堆栈。 3.8.4 MCS-51单片机的C语言编程举例 C51的中断编号 5 定时器T2 4 串行口中断 3 定时器T1 2 外部中断1 1 定时器T0 0 外部中断0 中断编号 中断源 3.8.4 MCS-51单片机的C语言编程举例 (2) CAN转RS232通信程序 在串行通信系统中,CAN总线和RS232是两种常用的通信协议,实际系统中经常要进行这两种协议之间的转换。本例基于AT89C51单片机设计一个协议转换器。 3.8.4 MCS-51单片机的C语言编程举例 AT89C51有一个全双工的UART口,其信息传输格式与RS232相同,在做好TTL电平和RS232电平之间的转换后,即可完成RS232数据的收发。AT89C51没有CAN通信口,故需扩展一个CAN控制器SJA1000,来完成单片机并行数据与CAN总线数据之间的转换。所设计的协议转换器的逻辑框图见下图所示。 3.8.4 MCS-51单片机的C语言编程举例 CAN-RS232协议转换器的结构框图 3.8.4 MCS-51单片机的C语言编程举例 协议转换器的软件框架设计为:单片机以中断方式接收RS232和CAN总线数据,分别添加到232接收队列和CAN接收队列;在主程序中,依次查询这两个队列是否为空,以及所需的发送设备是否空闲,在条件允许时,将232接收队列的数据发给CAN总线,以及将CAN接收队列的数据发给RS232。软件流程见下图所示。 3.8.4 MCS-51单片机的C语言编程举例 CAN-RS232协议转换器的软件流程图 3.8.4 MCS-51单片机的C语言编程举例 CAN接收缓冲区数据的数目 CanNum CAN接收缓冲的写指针 CanTail CAN接收缓冲的读指针 CanHead CAN接收缓冲区 CanBuf[32] UART发送状态:1-在发送,0-发送空闲 SciSta UART接收缓冲区数据的数目 SciNum UART接收缓冲的写指针 SciTail UART接收缓冲的读指针 SciHead UART接收缓冲区 SciBuf[32] 含义 变量 程序变量定义 3.8.4 MCS-51单片机的C语言编程举例 // CAN-RS
您可能关注的文档
- X3D三维立体网页设计 张金钊 X3D立体网页设计 第3讲新.ppt
- X3D三维立体网页设计 张金钊 X3D立体网页设计 第5讲新.ppt
- X3D三维立体网页设计 张金钊 X3D立体网页设计 第7讲新.ppt
- X3D三维立体网页设计 张金钊 X3D立体网页设计 第8讲新.ppt
- X3D三维立体网页设计 张金钊 X3D立体网页设计 第9讲新.ppt
- X3D三维立体网页设计 张金钊 X3D立体网页设计 第10讲新.ppt
- XML技术及应用 古凌岚 第1章_XML基础知识新.ppt
- XML技术及应用 古凌岚 第5章_利用XSL实现XML文档多种格式化显示新.ppt
- XML技术及应用 古凌岚 第7章_XML的高级应用新.ppt
- XML技术及应用 古凌岚 第9章_XML在Web2.0技术中的应用新.ppt
文档评论(0)