| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2286 人关注过本帖
标题:[求助]SJA1000接受和发送流程图 (有程序)
只看楼主 加入收藏
etionsun
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-6-6
收藏
 问题点数:0 回复次数:0 
[求助]SJA1000接受和发送流程图 (有程序)
小弟对汇编不是很熟也是出来乍到 希望各位前辈门能指点小弟
我在期刊网上找到的一段程序 汇编看不是太懂 希望大哥门能提供简单流程图给小弟参考 不然真不理不清思路在这先谢谢各位大哥门了
发送数据帧
TDATA:
MOV DPTR , # SR ;状态寄存器
MOVX A ,DPTR ;从SJA1000读入状态寄存器值
JB ACC.4,TDATA ;判断是否正在接受,正在接受则等待
TS0: MOVX A , @ DPTR
JNB ACC.3 , TS0 ;判断上次发送是否完成,未完成则等待发送
TS1: MOVX A,@ DPTR
JNB ACC.2 , TS1 ;判断发送缓冲区是否锁定,锁定则等待
TS2: MOV DPTR , CANTXB ;SJA1000发送缓存区首址
MOV A , #88H ;发送扩展帧格式数据帧,数据场长度为8个字节
MOVX @ DPTR ,A
INC DPTR
MOV A , #ID0 ;4个字节标示符(ID0~ID3,共29位),根据实际情况赋值
MOVX @ DPTR ,A
INC DPTR
MOV A , #ID1
MOVX @ DPTR ,A
INC DPTR
MOV A , #ID2
MOVX @ DPTR ,A
INC DPTR
MOV A , #ID3
MOVX @ DPTR ,A
MOV R0 , #TRDATA ;单片机片内RAM发送数据区首址,数据内容由用户定义
MTBF :MOV A , @R0
INC DPTR
MOVX @DPTR , A
INC R0
CJNE R0 , #TRDATA+8 , MTBF ;向发送缓冲区写8个字节
MOV DPTR , #CMR ;命令寄存器地址
MOV A , #01H
MOVX @DPTR , A ;启动SJA1000发送
RET
查询接受方式。
SEARCH:
MOV DPTR,#SR ;状态寄存器地址
MOVX A,@DPTP
ANL A,#0C3H ;读取总线关闭、错误状态、接受溢出、有数据等位状态
JNZ PROC
RET ;无上述状态,结束
PROC: JNB ACC.7,PROCI
BUSERR: MOV DPTR,#IR ;IR中断寄存器,出现总线关闭
MOVX A,@DPTR ;读中断寄存器,清除中断位
MOV DPTR,#MODE ;方式寄存器地址
MOV A,#08H
MOVX @DPTR,A ;将方式寄存器复位请求位清0
LCALL ALARM ;调用报警子程序
RET
NOP
PROCI: MOV DPTR,#IR ;总线正常
MOVX A,@DPTR ;读取中断寄存器,清除中断位
JNB ACC.3,OTHER
OVER: MOV DPTR,#CMR ;数据溢出
MOV A,#0CH
MOVX @DPTR,A ;在命令寄存器中清除数据溢出和释放接受缓冲区
RET
NOP
OTHER: JB ACC.0,RECE ;IR.0=1,接受缓冲区有数据
LJMP RECOUT ;IR.0=0,接受缓冲区无数据,退出接受
NOP
RECE: MOV DPTR,#CANRXB ;接受缓冲区首地址(16),准备读取数据
MOVX A,@DPTR ;读取数据帧格式字
JNB ACC.6,RDATA ;RTR=1是远程请求帧,远程帧无数据场
MOV DPTR,#CMR
MOV A,#04H ;CMR.2=1释放接受缓冲区
MOVX @DPTR,A ;只有接受了数据才能释放接受缓冲区
LCALL TRDATA ;发送对方请求数据
LJMP RECOUT ;退出接受
NOP
RDATA: MOV DPTR,#CANRXB ;读取并保存接受缓冲区的数据
MOV R1,#CPURBF ;CPU片内接受缓冲区首址
MOVX A,@DPTR ;读取数据帧格式字
MOV @R1,A ;保存
ANL A,#0FH ;截取低4位是数据场长度(0~8)
ADD A,#4 ;加4个字节的标示符(ID)
MOV R6,A
RDATA0: INC DPTR
INC R1
MOVX A,@DPTR
MOV @R1,A
DJNZ R6,RDATA0 ;循环读取与保存
MOV DPTR,#CMR
MOV A,#04H ;释放CAN接受缓冲区
MOVX @DPTR,A
RECOUT: MOV DPTR,#ALC ;释放仲裁丢失捕捉寄存器和错误捕捉寄存器
MOVX A,@DPTR
MOV DPTR,#ECC
MOVX A,@DPTR
NOP
RET
各位大哥只需给出简单的流程说明就非常感谢了 跪谢了。。。。。。。
搜索更多相关主题的帖子: 流程图 寄存器 DPTR ACC 
2007-06-06 17:46
快速回复:[求助]SJA1000接受和发送流程图 (有程序)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026431 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved