中国自动化学会专家咨询工作委员会指定宣传媒体
免费注册 登录 广告服务 | 客服中心
您现在所在的是:

现场总线

抖音 德嘉 泓格论坛 FLIR红外热像论坛
工控论坛首页 现场总线 → 浏览主题: 原创经典:调试好的can总线程序(汇编2)
发表新帖 回复该主题
回帖:1个,阅读:1361 [上一页] [1] [下一页]
* 帖子主题:

原创经典:调试好的can总线程序(汇编2)

分享到
814
nnyt369
文章数:9
年度积分:50
历史总积分:814
注册时间:2009/6/1
发站内信
发表于:2009/6/2 9:24:41
#0楼
更多请查看:http://user.qzone.qq.com/531706356


原创经典:调试好的can总线程序(汇编2)
提供can实验开发板给初学者
大家需要的话联系我:[email=[ft=#1b719b,,]nnyt@tom.com]nnyt@tom.com[/email] 1   CAN控制器为SJA1000,驱动器为
TJA1050,电源隔离;
2   提供详尽的源程序,可根据用户需求编写程序
联系我:13671387011(短信联系,QQ详谈)
      QQ: 531706356
接 调试好的can总线程序(汇编1),构成完整的程序 BCAN_DATA_WRITE:
     MOV            DPTR,   #REG_STATUS  ;读取状态寄存器
     MOVX           A,      @DPTR        ;判断上次发送是否完成
     SETB           F0
     JNB            ACC.3,  BCAN_DW_QUIT ;正在发送退出
     CLR            F0              
     MOVX           A,      @DPTR        ;判断发送缓冲区是否锁定,
     SETB           F0
     JNB            ACC.2,  BCAN_DW_QUIT ;锁定则跳出                    
     CLR            F0    
         
     INC            R0                   ;
     MOV            A,      @R0          ;ID号的低3位 \RTR位 \数据长度DLC
     DEC            R0                   ;恢复指针指向发送数据的首地址
     MOV            DPTR,   #REG_TxBuffer1;发送缓冲区首地址
     JB             ACC.4,  BCAN_WYB     ;远程帧
     ;数据帧
     ANL            A,      #0FH         ;计算发送数据的长度
     ADD            A,      #02H
     MOV            R7,     A
     AJMP           BCAN_WRTXBUF         ;
BCAN_WYB:
     MOV            R7,     #02          ;写入发送缓冲区数据长度为2
BCAN_WRTXBUF:    
     MOV            A,      @R0          ;开始写入
     MOVX           @DPTR,  A
     SETB           F0
     MOVX           A,      @DPTR        ;校验写入的是否正确
     XRL            A,      @R0
     JNZ            BCAN_DW_QUIT         ;写入错误退出
     CLR            F0                   ;正确写入继续
     INC            R0
     INC            DPTR
     DJNZ           R7,     BCAN_WRTXBUF ;没有写完继续
     
BCAN_DW_QUIT:    
     RET

BCAN_DATA_RECEIVE:
    MOV           DPTR,   #REG_STATUS
    MOVX          A,      @DPTR
    SETB          F0
    JNB           ACC.0,  BCAN_DR_QUIT   ;判断报文是否有效
    CLR           F0
    MOV           DPTR,   #REG_RxBuffer2 ;接收报文的ID号的低3位 \RTR位 \数据长度DLC
    MOVX          A,      @DPTR
    MOV           DPTR,   #REG_RxBuffer1 ;接收缓冲区的首地址
    JB            ACC.4,  BCAN_RCVYB     ;接收到的是远程帧
    ;数据帧
    ANL           A,      #0FH           ;计算接收到的数据长度
    ADD           A,      #02H           ;计算报文的长度
    MOV           R6,     A
    AJMP          BCAN_RCVDATA
BCAN_RCVYB:
    MOV           R6,     #02            ;远程帧
BCAN_RCVDATA:                             ;开始读取数据
    MOVX          A,      @DPTR
    MOV           @R0,    A
    INC           DPTR
    INC           R0
    DJNZ          R6,     BCAN_RCVDATA
BCAN_DR_QUIT:
     
    RET
BCAN_SET_BANDRATE:
   MOV      A,             R7          ;判断波特率的值是否存在
   CLR      CY
   SUBB     A,             #13        ;
   SETB     F0
   JNC      BCAN_SETBR_QUIT            ;输入的值大于12则不正确
   CLR      F0
   MOV      A,             R7
   RL       A
   MOV      DPTR,          #BCAN_SETBR ;查表找出相应的预设第一个值
   MOVC     A,             @A+DPTR
   MOV      R5,            A           ;将数据保存
   MOV      A,             R7          ;找出第二个值
   RL       A
   INC      A
   MOVC     A,             @A+DPTR
   MOV      R6,            A           ;保存值
   MOV      DPTR,          #REG_BTR0   ;装入波特率预设值,同步跳转宽度
                                       ;位宽度
   MOV      A,             R5          
   MOVX     @DPTR,         A
   SETB     F0
   MOVX     A,             @DPTR      
   XRL      A,             R5          ;判断写入是否正确
   JNZ      BCAN_SETBR_QUIT            ;不正确
   CLR      F0
   INC      DPTR
   MOV      A,             R6
   MOVX     @DPTR,         A
   SETB     F0
   MOVX     A,             @DPTR
   XRL      A,             R6          ;判断写入是否正确
   JNZ      BCAN_SETBR_QUIT
   CLR      F0
BCAN_SETBR_QUIT:
   RET

BCAN_SETBR:
   DB 053H,     02FH                     ;20KBPS的预设值
   DB 087H,     0FFH                     ;40KBPS的预设值
   DB 047H,     02FH                     ;50KBPS的预设值
   DB 083H,     0FFH                     ;80KBPS的预设值
   DB 043H,     02fH                     ;100KBPS的预设值
   DB 03H,      01cH                     ;125KBPS的预设值
   DB 081H,     0faH                     ;200KBPS的预设值
   DB 01H,      01cH                     ;250KBPS的预设值
   DB 080H,     0faH                     ;400KBPS的预设值
   DB 00H,      01cH                     ;500KBPS的预设值
   DB 080H,     0b6H                     ;666KBPS的预设值
   DB 00H,      016H                     ;800KBPS的预设值
   DB 00H,      014H                     ;1000KBPS的预设值
 
BCAN_SET_OBJECT:
   MOV      DPTR,      #REG_ACR      ;写ACR寄存器
   MOV      A,         R7
   MOVX     @DPTR,     A
   MOVX     A,         @DPTR
   XRL      A,         R7            ;检验写入是否正确
   JNZ      BCAN_SETO_QUIT
   INC      DPTR                     ;写AMR寄存器
   MOV      A,         R6
   MOVX     @DPTR,     A
   MOVX     A,         @DPTR
   XRL      A,         R6            ;检验写入是否正确
   JNZ      BCAN_SETO_QUIT
   CLR      F0
BCAN_SETO_QUIT:
   RET  

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BCAN_CMD_PRG:
    MOV           A,      R7
    CJNE          A,      #01,   BCAN_CMD1
    ;发送请求命令
    MOV           DPTR,   #REG_COMMAND; 地址指向命令寄存器
    MOVX          @DPTR,  A           ;写入命令字
    RET
BCAN_CMD1:
    CJNE          A,      #02,    BCAN_CMD2
    ;;//夭折发送命令
    MOV           DPTR,   #REG_STATUS ;地址指向状态寄存器
    MOVX          A,      @DPTR       ;判断是否有正在发送的状态
    SETB          F0
    JB            ACC.5,  BCAN_CMD_QUIT
    CLR           F0
BCAN_CMD_QUIT:
    RET
以下是几款can开发板:
http://item.taobao.com/auction/item_detail-0db2-6e3c6f5717a53a6802d3068fd054ecf3.jhtml
这是一款针对初学者的
http://item.taobao.com/auction/item_detail-0db2-84528f10e90fcdcc97b99194d14201b3.jhtml
这是一款带有8路12位adc采集功能的
http://item.taobao.com/auction/item_detail-0db2-58cd65ef6489e9d4f22176c16a0f6be6.jhtml
这是温度测量的
http://item.taobao.com/auction/item_detail-db2-155e51885e39c4bca4ffe21105e566b5.htm
这是实现usb转can的
同时本人接受can项目开发:设计、制作pcb板、焊接、编程、调试以及技术支持服务。
需要的话,请联系我qq:531706356  手机:13671387011  MSN:nnyt@tom.com 邮箱:nnyt@tom.com或531706356@qq.com 周
一到周五我晚上六点到七点,qq在线,其它时间请联系我手机,有时间我就上线,谢谢
本博客作品采用版权所有,未经协议授权禁止转载。  
表情表情表情表情表情


[此贴子已经被作者于2009-6-2 15:54:12编辑过]
814
nnyt369
文章数:9
年度积分:50
历史总积分:814
注册时间:2009/6/1
发站内信
发表于:2009/6/2 9:25:29
#1楼
大家支持一下
工控学堂推荐视频:

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

62.4004