can汇编及C语言通讯程序.docx

上传人:b****8 文档编号:29446953 上传时间:2023-07-23 格式:DOCX 页数:23 大小:17.80KB
下载 相关 举报
can汇编及C语言通讯程序.docx_第1页
第1页 / 共23页
can汇编及C语言通讯程序.docx_第2页
第2页 / 共23页
can汇编及C语言通讯程序.docx_第3页
第3页 / 共23页
can汇编及C语言通讯程序.docx_第4页
第4页 / 共23页
can汇编及C语言通讯程序.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

can汇编及C语言通讯程序.docx

《can汇编及C语言通讯程序.docx》由会员分享,可在线阅读,更多相关《can汇编及C语言通讯程序.docx(23页珍藏版)》请在冰豆网上搜索。

can汇编及C语言通讯程序.docx

can汇编及C语言通讯程序

(汇编及语言)通讯程序

  调试好的(汇编及语言)程序,与大家分享!

  

  ************************************程序功能***************************************************

  节点向节点发送数据,数据的头两个字节分别是:

节点的和要求节点回复的数据长度

  节点收到节点的信息后,立即按照节点的要求回复数据

  ************************************************************************************************

  

  存储器定义头文件

  子程序文件

  显示头文件

  字符串函数

  ***************************头文件***************************************************

  ();初始化单片机

  ();初始化

  ************************************************************************************

  ;配置标志

  ;发送命令标志

  []{};显示""

  []{};显示""

  []{};显示""

  [][];发送和接收数组

  ;保存中断寄存器值

  ;延时记数用

  ^;接收中断标志

  ^;错误中断标志

  ***********************************************************************************

  ()

  {

  

  ;配置出现错误时,重新初始化

  {

  ();

  }();

  ();

  ;保存中断寄存器值清零

  ()

  {

  ()

  {

  ;接收标志位清零

  ();接收数据

  ();释放接收缓冲区

  ;发送命令置位

  }

  ()

  {

  ;发送位清零

  [][];接收到的"发送方"

  [][];接收到的"发送方"和要求的数据长度

  [];

  [];

  ();发送数据

  ();置位发送请求位

  (<)

  ();延时显示""

  }

  ()错误中断

  {

  (<)

  ();错误显示""

  ;错误标志位清零

  ();初始化

  

  }

  ();显示""

  }

  }

  

  

  ()外部中断

  {

  ;指针指向中断寄存器

  *;保持中断寄存器值

  }

  

  

  ()单片机初始化,开放外部中断

  {

  ;

  ;

  ;

  }

  

  ()

  {

  ();自测

  ();进入复位

  ();设置波特率

  ();设置地址

  ();设置输出方式,禁止输出

  ();退出复位模式

  ;地址指针指向控制寄存器

  *;开放错误\接收\发送中断

  }

  ******************以下为汇编程序*********************************************************************

  

  系统地址为,用于系统测试,应用定时器每隔向总线发送一组数据:

数据长度为个字节,

  首字节为,第二个字节为累加变量,每秒钟数值增加,

  *********************************************************************************************************

  的片选地址

  

  ;成功的接收一帧标志

  ;一秒到标志

  ;监测到错误标志

  

  ;保存中断寄存器的内容

  

  ;发送缓冲区

  

  

  

  

  

  

  

  

  

  

  ;接收缓冲区

  

  

  

  

  

  

  

  

  

  

  ;错误状态表示

  ;测试发送数据

  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  ;程序开始

  

  ;运行主程序

  

  

  ;中断方式访问程序

  

  

  ;定时器中断

  

  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  

  ;程序开始

  :

  

  

  

  ,$

  

  ;设置

  退出硬件复位模式

  

  ;初始化

  

  ;点亮指示灯

  

  

  

  

  

  

  

  :

  成功接收一帧,通知处理

  

  

  :

  ;一秒时间到,每秒发送一次

  

  ;点亮指示灯

  

  :

  ;错误标志,错误处理

  

  

  :

  

  

  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;初始化;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  

  :

  ;调用接口测试函数

  ,

  ;设置波特率为

  ,0A;设置接收报文

  ,

  

  ,;设置输出控制、时钟分频;正常输出模式

  ,;使能内部比较器、禁止

  ;

  ;退出复位状态

  ;开放内部功能中断

  ;中断开放

  

  

  

  

  ;;;;;;;;;;;;;;;;;;;;;;错误信息处理;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  :

  ;进入复位模式

  ;

  

  

  

  ;;;;;;;;;;;;;;;;;;;;;;;接收数据处理部分;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  :

  ;微处理器接收首地址

  ;调用接收数据子程序

  ;释放接收缓冲区

  ;

  

  ;;;;;;;;;;;;;;;;;;控制向总线发送数据处理部分;;;;;;;;;;;;;;;

  :

  ,

  ,

  

  ,

  

  ,

  ,

  

  ,

  ,

  ;将要发送的数据送入发送缓冲区

  ,

  

  

  

  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;定时器初始化;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  :

  

  0F

  

  工作在方式

  ;定时周期

  

  

  

  

  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;外部中断;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  :

  

  

  入栈

  

  ;应用寄存器第组

  ;读中断寄存器

  ;

  ;保存中断寄存器的内容

  ;接收中断

  ;置位接收标志

  

  :

  

  ;错误中断

  ;置位错误标志

  :

  

  

  

  

  

  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;定时器中断;;;;;;;;;;;;;;;;

  :

  

  

  、入栈

  

  

  ;设置定时周期

  

  

  

  ;判断秒时间是否到

  

  ;测试发送的数据,每秒加

  ;置位秒到标志

  :

  

  

  

  

  

  

  

  

  

  

  :

  ,;控制寄存器访问

  ,;

  ,;置位复位请求

  ,;

  

  ,;验证复位是否写入

  ,

  ;复位不成功

  :

  

  

  

  

  :

  ,;控制寄存器访问

  ,;

  ,;清零复位请求,进入工作状态

  ,

  

  ,

  ,;验证是否退出复位状态

  

  :

  

  

  

  

  

  

  

  :

  ,;读取状态寄存器

  ,;判断上次发送是否完成

  

  ,;正在发送退出

  

  ,;判断发送缓冲区是否锁定,

  

  ,;锁定则跳出

  

  

  ;

  ,号的低位\位\数据长度

  ;恢复指针指向发送数据的首地址

  ,;发送缓冲区首地址

  

  ,;远程帧

  ;数据帧

  ,;计算发送数据的长度

  ,

  ,

  ;

  

  :

  ,;写入发送缓冲区数据长度为

  

  :

  ,;开始写入

  ,

  

  ,;校验写入的是否正确

  ,

  ;写入错误退出

  ;正确写入继续

  

  

  ,;没有写完继续

  

  :

  

  

  

  

  :

  ,

  ,

  

  ,;判断报文是否有效

  

  

  ,;接收报文的号的低位\位\数据长度

  ,

  ,;接收缓冲区的首地址

  ,;接收到的是远程帧

  ;数据帧

  ,;计算接收到的数据长度

  ,;计算报文的长度

  ,

  

  

  :

  ,;远程帧

  

  :

;开始读取数据

  ,

  ,

  

  

  ,

  

  :

  

  

  

  :

  ,;判断波特率的值是否存在

  

  ,;

  

  ;输入的值大于则不正确

  

  ,

  

  ,;查表找出相应的预设第一个值

  ,

  ,;将数据保存

  ,;找出第二个值

  

  

  ,

  ,;保存值

  

  ,;装入波特率预设值,同步跳转宽度

  ;位宽度

  ,

  ,

  

  ,

  ,;判断写入是否正确

  ;不正确

  

  

  ,

  ,

  

  ,

  ,;判断写入是否正确

  

  

  :

  

  

  

  :

  ,的预设值

  ,的预设值

  ,的预设值

  ,的预设值

  ,的预设值

  ,的预设值

  ,的预设值

  ,的预设值

  ,的预设值

  ,的预设值

  ,的预设值

  ,的预设值

  ,的预设值

  

  

  :

  ,;写寄存器

  ,

  ,

  ,

  

  ,;检验写入是否正确

  

  

  ;写寄存器

  ,

  ,

  ,

  

  ,;检验写入是否正确

  

  

  :

  

  

  

  

  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  :

  ,

  ,,

  ;发送请求命令

  ,;地址指向命令寄存器

  ,;写入命令字

  

  

  

  :

  ,,

  夭折发送命令

  ,;地址指向状态寄存器

  ,;判断是否有正在发送的状态

  

  ,

  

  :

  

  

  :

  ,,

  ;释放接收缓冲区

  ,;地址指向命令寄存器

  ,;写入命令字

  

  

  ,;判断是否释放成功

  ,

  

  ,;不成功跳转

  

  :

  

  

  :

  ,,

  ;清除超载状态

  ,;地址指向命令寄存器

  ,;写入命令字

  

  

  ,;判断清除超载是否成功

  ,

  

  ,;不成功跳转

  

  :

  

  

  :

  ,,

  ;进入睡眠状态命令

  ,;地址指向命令寄存器

  ,;写入命令字

  

  :

  

  

  

  *********************************************************************

  本人同时提供实验开发板给初学者

  控制器为,驱动器为,电源隔离;

  提供详尽的源程序,可根据用户需求编写程序

  联系我:

(短信联系详谈)

  :

  

  

  

  

  

  说明

  

  、实验板分为主节点和从节点通讯波特率设置为;最高可设置为1M,用户根据自己的需要进行设置.

  、从节点每隔秒钟向主节点发送一组个字节的数据,数据格式为;其中变量的范围是,他随着每发送一次数据而累加递增;从节点指示灯表示实验板工作正常,指示灯以的频率闪烁,表示发送数据正常.

  、主节点的为,每当收到从节点发送的数据后,主节点便以波特率把收到的数据通过串口发送给计算机,计算机上安装的用户界面可以实时显示接收到的数据,此数据用户可以存储于计算机上.主节点指示灯表示实验板工作正常,指示灯以的频率闪烁,表示接收和串口发送数据正常.

  、单片机为89c,适用于实验板;主控单片机为,适用于工程应用通过自带的位精度的采集传感器信号后,将采集结果通过总线传输到“主控节点”,主控节点将数据通过串口传输给计算机;指示灯显示状态;可以通过串口给主控节点发送指令,来完成对某一节点的控制;通过串口下载程序到单片机(详见用户手册),可以不用编程器

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1