基于can总线的蔬菜大棚温湿度检测节点设计课程设计论文.doc
本科生课程设计(论文)辽 宁 工 业 大 学 工业控制网络 课程设计(论文)题目: 基于CAN总线的蔬菜大棚温湿度检测节点设计 院(系): 电气工程学院 专业班级: 学 号: 学生姓名: 指导教师: (签字)起止时间: 课程设计(论文)任务及评语院(系):电气工程学院 教研室:自动化 学 号100302114学生姓名王佳斌专业班级自动化104课程设计(论文)题目基于CAN总线的蔬菜大棚温湿度检测节点设计课程设计(论文)任务课题完成的功能、设计任务及要求、技术参数实现功能检测大棚内某点的温湿度信号,传递给单片机,完成单片机最小系统设计,并把此系统作为CAN的节点,节点的硬件包括主单片机、总线驱动器、控制器、接口电路,以一路信号为例的模拟量信号连接在CAN总线上,实现远程通信。设计任务及要求1、选择单片机、总线控制器型号,确定设计方案;2、设计单片机最小系统(晶振、电源、复位等);3、设计实现系统功能的单片机外围电路,包括驱动电路、键盘、显示;4、设计CAN总线电路(包括控制器、驱动器、接口电路);5、软件设计(编写主程序、接收、发送程序及相应的流程图)6、要求认真独立完成所规定的全部内容;所设计的内容要求正确、合理。7、撰写、打印设计说明书一份;设计说明书应在4000字以上。技术参数1、符合CAN2.0B规范;2、总线范围在3000米内,速率最高可达20bit/s;3、温湿度信号变化范围05 V;4、单滤波接收数据。进度计划1、布置任务,熟悉课设题目,查找及收集相关书籍、资料。(1天)2、确定控制方案、选型。(2天)3、CAN节点框图、硬件电路设计。(3天)4、编写程序流程图、主程序、发送、接收程序。(2天)5、撰写设计说明书。(1天)6、验收及答辩。(1天)指导教师评语及成绩平时: 论文质量: 答辩: 总成绩: 指导教师签字: 年 月 日注:成绩:平时20% 论文质量60% 答辩20% 以百分制计算摘要 本文以AT89C51为控制器,设计了基于CAN总线的温湿度检测节点设计方案。详细的分析了基于CAN总线的温湿度检测和节点通信原理,设计了单片机最小系统、CAN通信接口电路、温度传感器电路、湿度传感器电路、键盘电路和显示电路等模块。本设计是通过温度传感器检测蔬菜大棚内的温湿度,并且传给单片机,通过单片机进行显示,把其作为CAN总线的节点,实现远程通信。基于CAN总线的温湿度检测节点实现了温湿度的检测和实时显示,并可以与其它节点通信以便于温室内大范围的温湿度监测和控制,节点结构简单,降低了劳动强度,提高系统的实时性和可靠性。关键词:CAN总线;单片机;温湿度检测;远程通信目录第1章 绪论1第2章 课程设计方案32.1概述32.2 系统的总体组成3第3章 硬件设计53.1 单片机最小系统53.2 键盘电路的设计63.3 温度检测电路63.4 AD转换电路73.5 湿度检测电路83.6 CAN总线接口电路的设计93.6.2 CAN收发器103.7 直流稳压电源的设计113.8 显示电路的设计12第4章 软件设计144.1 主程序流程图144.2 SJA1000初始程序154.3 报文的发送16第5章 课程设计总结18参考文献19附录20II第1章 绪论现场总线(Fieldbus)是近年来迅速发展起来的一种工业数据总线,它主要解决工业现场的智能化仪器仪表、控制器、执行机构等现场设备间的数字通信以及这些现场控制设备和高级控制系统之间的信息传递问题。由于现场总线简单、可靠、经济实用等一系列突出的优点,因而受到了许多标准团体和计算机厂商的高度重视。现场总线(Fieldbus)是20世纪80年代末、90年代初国际上发展形成的,用于过程自动化、制造自动化、楼宇自动化等领域的现场智能设备互连通讯网络。它作为工厂数字通信网络的基础,沟通了生产过程现场及控制设备之间及其与更高控制管理层次之间的联系。它不仅是一个基层网络,而且还是一种开放式、新型全分布控制系统。这项以智能传感、控制、计算机、数字通讯等技术为主要内容的综合技术,已经受到世界范围的关注,成为自动化技术发展的热点,并将导致自动化系统结构与设备的深刻变革。国际上许多有实力、有影响的公司都先后在不同程度上进行了现场总线技术与产品的开发。现场总线设备的工作环境处于过程设备的底层,作为工厂设备级基础通讯网络,要求具有协议简单、容错能力强、安全性好、成本低的特点 :具有一定的时间确定性和较高的实时性要求,还具有网络负载稳定,多数为短帧传送、信息交换频繁等特点。由于上述特点,现场总线系统从网络结构到通讯技术,都具有不同上层高速数据通信网的特色。一般把现场总线系统称为第五代控制系统,也称作FCS现场总线控制系统。人们一般把50年代前的气动信号控制系统PCS称作第一代,把420mA等电动模拟信号控制系统称为第二代,把数字计算机集中式控制系统称为第三代,而把70年代中期以来的集散式分布控制系统DCS称作第四代。现场总线控制系统FCS作为新一代控制系统,一方面,突破了DCS系统采用通信专用网络的局限,采用了基于公开化、标准化的解决方案,克服了封闭系统所造成的缺陷;另一方面把DCS的集中与分散相结合的集散系统结构,变成了新型全分布式结构,把控制功能彻底下放到现场。可以说,开放性、分散性与数字通讯是现场总线系统最显著的特征。CAN是控制网络Control Area Network的简称,最早由德国BOSCH公司推出,用于汽车内部测量与执行部件之间的数据通信。其总线规范现已被ISO国际标准组织制订为国际标准,得到了Motorola、Intel、Philips、Siemens、NEC等公司的支持,已广泛应用在离散控制领域。CAN协议也是建立在国际标准组织的开放系统互连模型基础上的,不过,其模型结构只有3层,只取OSI底层的物理层、数据链路层和顶上层的应用层。其信号传输介质为双绞线,通信速率最高可达 1Mbps/40m,直接传输距离最远可达 1 0km/kbps,可挂接设备最多可达 110个。CAN的信号传输采用短帧结构,每一帧的有效字节数为8个,因而传输时间短,受干扰的概率低。当节点严重错误时,具有自动关闭的功能以切断该节点与总线的联系,使总线上的其它节点及其通信不受影响,具有较强的抗干扰能力。CAN支持多主方式工作,网络上任何节点均在任意时刻主动向其它节点发送信息,支持点对点、一点对多点和全局广播方式接收/发送数据。它采用总线仲裁技术,当出现几个节点同时在网络上传输信息时,优先级高的节点可继续传输数据,而优先级低的节点则主动停止发送,从而避免了总线冲突。已有多家公司开发生产了符合CAN协议的通信芯片,如Intel公司的 82 52 7,Motorola公司的MC68HC05X4,Philips公司的82 C2 50等。还有插在PC机上的CAN总线接口卡,具有接口简单、编程方便、开发系统价格便宜等优点。第2章 课程设计方案 2.1概述随着我国新土地政策的实施,政府鼓励农民将承包的土地向专业大户、合作农场和农业园区流转,发展规模农业,实现农业产业化,并逐步调整产业结构。在此条件下,温室大棚种植、养殖业发展迅速,特别是无公害蔬菜大棚、花卉、育苗大棚在全国蓬勃发展,大棚质量不断提高,出现了机械强度高、抗风雪能力强、透光率高,操作管理方便,使用寿命长的玻璃棚、PC板棚等。为了提高管理水平,要求对大棚的管理实施自动化控制,以降低成本,提高生产效率。在对大棚的管理中,需要对棚内气体温度、湿度、浓度、土壤湿度等环境参数进行实时监控,以充分满足棚内作物生长的客观要求。随着大棚数量的增加,跨地区经营现象的增多,需要用传输能力强和通信距离远的监控系统来有效地对大棚进行监管。CAN总线技术具有先进的主网络结构,实时性好,通讯距离远,数据传输速率快,具有较好的差错控制能力,可靠性高、系统容量大、扩充容易、安装方便、维护费用低、性价比高等优点,特别适用控制节点多,分布较散的监控场所。因此,本设计采用CAN技术来实现对大棚内温、湿度等参数的监控。2.2 系统的总体组成现场数据的采集是以ATS89S52单片机为核心控制单元,外接数字温湿度传感器,从而获得现场环境的温湿度信号。通过CAN总线控制器SJA1000和CAN总线驱动器PCA82C250将数据发送到CAN总线上。另外,在单片机电路中,通过键盘和数码管显示器件,实现对温湿度的实时显示和控制功能。在CAN总线两端需要有120欧的终端电阻,用来抑制回路的反射信号。 CAN节点由微处理器、CAN控制器SJA1000、CAN驱动器PCA82C250构成。CAN控制器SJA1000执行在CAN规范中规定的完整的CAN协议,用于报文的缓冲和验收过滤,负责与微控制器进行状态、控制和命令等信息交换;在SJA1000下层是CAN收发器PCA82C250,是CAN控制器和总线接口,用于控制从CAN控制器到总线物理层或相反的逻辑电平信号,提供对总线的差动发送和对CAN控制器差动收功能。系统组成结构图如下图2.1所示。 图2.1 系统总体框图 第3章 硬件设计3.1 单片机最小系统单片机选择51系列单片机AT89S52,该单片机有8K字节Flash ROM,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。 片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统.对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路。单片机最小系统如下图所示。 图3.1 最小系统图AT89C52为8 位通用微处理器,采用工业标PDIP封装的准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40 脚)和GND(20 脚)为供电端口,分别接+5V电源的正负端。P0P3 为可编程通用I/O 脚,其功能用途由软件定义,12 脚、27 脚及28 脚定义为握手信号功能端口,连接主板CPU 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。3.2 键盘电路的设计本设计的键盘功能较少,可以选用3×2矩阵键盘,键盘用来设定温湿度的上下限值和控制通信。键盘电路如下图3.2所示。图3.2 键盘电路3.3 温度检测电路温度传感器是感知外部环境中温度变化的重要元件,它是外界与本系统的接口。它将外界温度的变化转化成电压的变化,这样通过对电压的处理与分析就可以间接地测量出外界温度。本系统采用的温度传感器为LM35,该温度传感器由美国国家半导体公司生产,在常温下,不需要额外的校正处理就可以到达0.25的准确率。其输出电压与摄氏温度成线性关系,并且这种关系可以表示为: 或者 式中,Vo为传感器的输出电压,单位V,T是外界环境中的温度,单位。由于LM35能够测量的最高温度是150,由式(1)可得其最大输出电压为1.5 V。为了能够与AD7812的输入进行匹配,故需要对传感器的输出电压进行放大,放大的倍数约为3.33倍。可采用集成运放连接成同向放大器来实现电压放大的功能。经过放大后的电压约为5 V,恰好能够与模数转换部分的输入相匹配。该部分电路设计如图3.3所示。 图3.3温度检测电路3.4 AD转换电路经过温度传感器转换后的输出电压值不能直接送入单片机中进行处理,还必须在它们之间增加AD转换装置。本文中选择AD7812作为AD转换器。AD7812是由Analog Devices公司生产的一种串行接口的10位8通道AD转换器。与一般的并行接口AD转换器相比,它的优点在于能够节省处理器的引脚资源。节省下来的引脚资源可以进一步的对系统进行扩展,以使其功能更加强大。在AD7812内部有8路模拟开关可以采集8路模拟信号,这里只需要将经放大的传感器输出信号输入到其中任意一路即可,为了简便起见,就取其中的第1路模拟开关作为输入信号的通道。由于AD7812内部具有转换时钟源,因而不需要外部提供时钟源。单片机只需要通过它的串行时钟输入、数据输出、数据输入、转换输入4根引脚就可以对其进行控制。该部分电路设计如图3.4所示。 图3.4 AD转换电路3.5 湿度检测电路控制电路由基准脉冲发生器、湿敏传感单稳延时电路、脉宽比较电路、积分电路和测量表头组成。湿度传感头采用湿敏电容Cs,它是用湿敏高分子薄膜作为电解质,利用该薄膜吸附水分的分子可逆性,使电介系数的变化反应到电容量的改变。湿敏电容抗干扰能力强,线性度好。IC1、IC2采用一块双时基电路556,一般做成为稳态的多谐震荡器,震荡频率由R1、RP1、C1决定,图示参数的震荡周期约为130uf,占空比为1:1。IC2和R3、湿敏传感电容组成单稳延时电路,单稳态时间,由于Cs的电容随环境湿度的变化而做出变化,因此暂稳宽度可反映湿度的大小。它将IC1输出的基准脉冲负微分脉冲作为触发计时的起点,输出的定时脉冲在D4相与、比较,将反映湿度变化的比较脉宽检出并且积分,得出与相对湿度对应的平均电流电压值。湿度传感器的电路图,如图3.5所示: 图3.5 湿度检测电路3.6 CAN总线接口电路的设计CAN总线接口电路主要包括:单片机、控制器接口、总线收发器等。采用Philips公司生产的SJA1000控制器和与其配套的82C250CAN收发器。按照CAN总线物理层协议选择总线介质,设计布线方案,连接成CAN网络。双绞屏蔽线可设两套,在两套介质上同时进行信息传输,接收方只用一个介质。在冗余和非冗余段的连接临界点处进行总线切换。 硬件电路的设计主要是CAN 通信控制器与微处理器之间和CAN总线收发器与物理总线之间的接口电路的设计。CAN通信控制器是CAN总线接口电路的核心,主要完成CAN的通信协议,而CAN总线收发器的主要功能是增大通信距离,提高系统的瞬间抗干扰能力,保护总线,降低射频干扰(RFI),实现热防护等。3.6.1 总线控制器SJA1000 在电路中是一个总线接口芯片,通过它实现上位机与现场微处理器之间的数据通信。该电路的主要功能是通过CAN总线接收来自上位机的数据进行分析组态然后下传给下位机的控制电路实现控制功能,当CAN总线接口接收到下位机的上传数据,SJA1000就产生一个中断,引发微处理器产生中断,通过中断处理程序接收每一帧信息并通过CAN总线上传给上位机进行分析。AT89C51是CAN总线接口电路的核心,其承担CAN控制器的初始化、CAN的收发控制等任务。PHILIPS公司的PCA82C200是符合CAN2.0A协议的总线控制器,SJA1000是它的替代产品,它是应用于汽车和一般工业环境的独立CAN总线控制器。具有完成CAN通信协议所要求的全部特性。经过简单总线连接的SJA1000可完成CAN总线的物理和数据链路层的所有功能。其硬件与软件设计和PCA82C200的基本CAN模式(BesicCAN)兼容。同时,新增加的增强CAN模式(PeliCAN)还可支持CAN2.0B协议。SJA1000的引脚图如下图所示: 图3.6 SJA1000引脚图3.6.2 CAN收发器82C250是CAN控制器与物理总线间的接口,可以提供对总线的差动发送和接收能力,与IS011898标准完全兼容,并具有抗汽车环境下的瞬间干扰、保护总线的能力。为了提高系统的可靠性和抗干扰能力,在CAN控制器和CAN收发器之间采用光耦6N137进行隔离 PCA82C250提供对物理总线的符合CAN电气协议的差动发送和接收功能,另外,它具有的电流限制电路,还提供了对总线的进一步的保护功能。通过82C250与物理总线进行连接,可使总线支持多达110个节点的挂接。上图给出PCA82C250的功能方框图。对于CAN控制器及带有CAN总线接口的器件,82C250并不是必须使用的器件,因为多数CAN控制器均具有配置灵活的收发接口并允许总线故障,只是驱动能力一般只允许2030个节点连接在一条总线上。而82C250支持多达110个节点,并能以1Mbps的速率工作于恶劣电气环境。 图3.7 82C250引脚图CAN接口电路如图3.10所示。 图3.8 CAN接口电路3.7 直流稳压电源的设计 设计中,对系统的电源都一致采用DC+5V电压,光耦部分电路所采用的两个电源Vcc和Vdd必须完全隔离。为此,设计电源如下所示: 图3.9 电源电路它由AH805升压模块及FP106升压模块组成。AH805是一种输入1.23V,输出5V的升压模块,在3V电池供电时可输出100mA电流。FP106是贴片式升压模块,输入46V,输出固定电压为29±1V,输出电流可达40mA,AH805及FP106都是一个电平控制的关闭电源控制端。两节1.5V碱性电池输出的3V电压输入AH805,AH805输出+5V电压,其一路作5V输出,另一路输入FP106使其产生2830V电压,经稳压管稳压后输出+12V电压。从图中可以看出,只要改变稳压管的稳压值,即可获得不同的输出电压,使用十分灵活。FP106的第脚为控制电源关闭端,在关闭电源时,耗电几乎为零,当第脚加高电平>2.5V时,电源导通;当第脚加低电平<0.4V时,电源被关闭。可以用电路来控制或手动控制,若不需控制时,第脚与第脚连接。3.8 显示电路的设计1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。1602采用标准的16脚接口,其中:第1脚:VSS为电源地第2脚:VCC接5V电源正极第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。第6脚:E(或EN)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令。第714脚:D0D7为8位双向数据端。第1516脚:空脚或背灯电源。15脚背光正极,16脚背光负极。 图3.8 显示电路第4章 软件设计CAN总线节点的软件主要包括节点初始化程序、报文发送程序、报文接收程序以及CAN总线出错处理程序等等。CAN控制器芯片SJA1000的内部寄存器是以作为微控制器的片外寄存器存在并作用的。微控制器和SJA1000之间状态、控制和命令的交换都是通过在复位模式或工作模式下对这些寄存器的读写来完成的。在初始化CAN内部寄存器时注意使得各节点的位速率必须一致,而且接、发双方必须同步。报文的接收主要有两种方式:中断和查询接收方式。为提高通信的实时性,文中采用中断接收方式,而且这样也可保证接收缓存器不会出现数据溢出现象。4.1 主程序流程图主程序要完成中断初始化,并调用SJA1000初始化程序,对矩阵键盘的扫描并存储设定的温湿度上下限及相应的控制信息,对温度信号进行采样,同时将节点采集的温湿度数据帧发送到总线上,并将温湿度值和报警信息送往LCD1602液晶显示器。主程序流程图如下图4.1所示。图4.1 主程序流程图4.2 SJA1000初始程序SJA1000的初始化只有在复位模式下才可以进行。初始化主要包括工作方式的设置、接收滤波方式的设置、接收屏蔽寄存器AMR和接收代码寄存器ACR的设置、波特率参数设置和中断允许寄存器IER的设置。在完成SJA1000的初始化设置后,SJA1000就可以回到工作状态正常的通信任务。初始化SJA1000的程序流程图入下图所示。 图4.2 SJA初始化流程图4.3 报文的发送报文的发送是CAN控制器SJA1000依据CAN协议规范自动进行的,主控制器将要发送的报文写入SJA1000的发送缓冲区,并将发送请求位置1,发送过程即可以采用中断方式,也可以采用查询方式。报文发送的流程图如图4.3所示。 图4.3 报文发送程序图4.3 报文发送程序流程图一旦报文开始发送,发送缓冲器写闭锁,因此主控制器要查询“发送缓冲器状态标志”,确定是否可以将一个新的报文版式TXButffer。若发送器写闭锁,循环查询状态寄存器,主控制器进入等待状态,直到发送缓冲器空闲。若发送缓冲器被释放,主控制器将新报文写入发送缓冲器TXBuffer,并置命令寄存器的发送请求标志TR=1,执行报文的发送。4.4报文的接收接收报文是CAN控制器依据CAN协议规范自动进行的,接收报文被放在RXBuffer中,一个报文是否可以传送给主控制器,由状态寄存器的接收缓冲器状态RBS和接收终端表明,主控制器要将有效数据读入其内存,并释入RXBuffer,并对报文进行处理,传送过程既可被中断控制,也可通过查询状态寄存器标志来完成。图4.4给出来查询方式接收过程流程,CAN控制器的接收中断应屏蔽,主控制器读SJA1000状态寄存器、查询接收缓冲器状态标志,是否接收缓冲器中有一个报文存在。 图4.4 报文接收程序流程图第5章 课程设计总结基于CAN总线的温湿度节点设计是由单片机最小系统、键盘电路、温度检测电路、A/D转换电路、湿度检测电路、电源电路、显示电路、CAN控制器、CAN收发器和光电耦合电路构成。本节点以单片机AT89S52为主控制器,利用LM35温度传感器检测温室内的温度并经A/D转换后送往单片机,湿度传感器检测湿度值转换为脉冲信号送往单片机,LCD实时显示室内的温湿度值及报警信息,单片机通过CAN总线控制器、光电耦合电路和CAN驱动器连接至CAN总线,与总线的其他节点通信,实现温湿度值的检测、处理及监控。基于CAN总线的温湿度检测系统可以有较大的检测范围,且传输速率较高,便于远程监控和信息汇总及控制,提高了温室变量检测的精度,降低了人工劳动强度,具有较高的效率。参考文献1 刘波. 单片机与液晶控制器的接口设计J. 机械工程与自动化. 2006(04)2 尹寄明,楼佩煌. 基于CAN总线系统的温度测量节点设计J. 计算机测量与控制. 2006(05)3 贺天柱,孙瑜. 现场总线的发展历史与未来发展趋势J. 渭南师范学院学报. 2005(05) 4 温江涛,焦书浩,杨文明. 基于铂电阻的宽量程高精度温度测量装置J. 电子测试. 2013(12)5 王文成,常发亮. 温室大棚温湿度无线测控系统J. 仪表技术与传感器. 2011(03)6 夏晓南. 基于单片机的温箱温度和湿度的控制J. 现代电子技术. 2005(24)7 马俊,刘晓林. 智能键盘字符输入及LCD显示系统设计J. 电子设计工程. 2009(01) 8 赵亮. 跟我学51单片机(七)LCD1602液晶显示模块J. 电子制作. 2011(07)9 于志赣,刘国平,张旭斌. 液显LCD1602模块的应用J. 机电技术. 2009(03)10 薛锦诚,陈祥光,姜波. 51单片机系统A/D、D/A转换电路的设计J. 电测与仪表. 1992(11)11 马立国. 单片机系统中的LED显示器应用与分析J. 集成电路通讯. 2005(01) 12 付亮,王星. 基于SJA1000的CAN总线控制系统的开发与设计J. 汽车电器. 2007(05)13 刘发慧,贺贵明. 基于SJA1000的CAN通信系统的设计J. 可编程控制器与工厂自动化. 2006(01)14 张伟,霍建振. 基于SJA1000的CAN总线通信模块设计J. 自动化技术与应用. 2007(12)15 韩党群. CAN控制器SJA1000及其应用J. 电子技术应用. 2003(01)16 杨红科,雷立英. 基于SJA1000的CAN总线接口电路的设计J. 南京工业职业技术学院学报. 2005(02)17 吴繁红. 基于AT89C51和SJA1000控制器实现CAN总线接口J. 电子工程师. 2003(07)附录INITIALIZE: 初始化子程序 LDB AL, #09H; 初始化模式寄存器进入复位模式 STB AL, MODE; 选择单滤波方式 LDB AL, #88H; 时钟分频器 STB AL, CDR; 选Peli CAN模式 LDB AL, #00H STB AL, ACR0; LDB AL, #60H STB AL, ACR1 LDB AL, #00H STB AL, AMR0; 初始化接屏蔽寄存器 LDB AL, #3FH; STB AL, AMR1 LDB AL, #8FH STB AL, IER; 中断使能寄存器 LDB AL, #01H; 总线定时寄存器0、1的设置 STB AL, BTR0; LDB AL, #1CH; STB AL, BTR1; 波特率设置为250 LDB AL, #0AAH STB AL, OCR; 输出控制器寄存器设置 LDB AL, #0H; STB AL, RBSA; LDB AL, #01H; ORB AL, MODE; STB AL, MODE; 返回工作模式 RET TRANSMIT:; 发送子程序 LDB AL, SR SRCVE: JBS AL,4, SRCVE;正接收 STRSV: JBC AL,3, STRSV;发送成功 STBF: JBC AL, 2, STBF; WID: LDB AL, #08H LD BX, #TXB; 发送缓存的首址 STB AL,BX+;LDB AL,#ID0 STB AL,BX+ LDB AL,#ID1 STB AL,BX+ LDB COUT,#08H; 8个字节数据 TDATA: LDB AL,DATA+ STB AL,BX+; DJNZ COUT,TDATA; LDB AL,#01H; STB AL,CMR; 发送 RETRECEIVE: ; 接收中断程序 PUSHF; 保护现场 LDB AL,IR JBC AL,0,OTHER; 接收中断否? LD BX,#RXB; 接收缓存器首址 LDB AL,BX+ JBC AL,6,RCDATA; 标识符的RTR=1? LDB AL,#04H; 是远程帧,释放接收缓存区 STB AL,CMR; LCALL TRANSMIT; 相应远程帧,发送相应数据 SJMP BACK RCDATA: ANDB AL,#0FH; 取低四位数据长度 ADDB AL,#03H; STB AL,R1; 该报文含有的字节数 LD BX,#RXB; 接收缓存器的首地址 LD CX,#CRBF; RECE: LDB AL,BX+ STB AL,CX+ INCB R1 DJNZ R1,RECE; 接收完否?LDB AL,#04H STB AL,CMR; 释放接收缓存区 BACK; POPF RET 21