原创经典:调试好的can总线程序(汇编2)
价格:200.00
原创经典:调试好的can总线程序(汇编2)(2007-07-1717:00:39)[编辑][删除]标签:can总线程序汇编sja1000提供can实验开发板给初学者大家需要的话联系我:nnyt@1CAN控制器为SJA1000,驱动器为TJA1050,电源隔离;2提供详尽的源程序,可根据用户需求编写程序联系我:13671387011(短信联系,***详谈)***:531706356接调试好的can总线程序(汇编1),构成完整的程序BCAN_DATA_WRITE:MOVDPTR,#REG_STATUS;读取状态寄存器MOVXA,@DPTR;判断上次发送是否完成SETBF0JNBACC.3,BCAN_DW_QUIT;正在发送退出CLRF0MOVXA,@DPTR;判断发送缓冲区是否锁定,SETBF0JNBACC.2,BCAN_DW_QUIT;锁定则跳出CLRF0INCR0;MOVA,@R0;ID号的低3位\RTR位\数据长度DLCDECR0;***指针指向发送数据的首地址MOVDPTR,#REG_TxBuffer1;发送缓冲区首地址JBACC.4,BCAN_WYB;远程帧;数据帧ANLA,#0FH;计算发送数据的长度ADDA,#02HMOVR7,AAJMPBCAN_WRTXBUF;BCAN_WYB:MOVR7,#02;写入发送缓冲区数据长度为2BCAN_WRTXBUF:MOVA,@R0;开始写入MOVX@DPTR,ASETBF0MOVXA,@DPTR;校验写入的是否正确XRLA,@R0JNZBCAN_DW_QUIT;写入错误退出CLRF0;正确写入继续INCR0INCDPTRDJNZR7,BCAN_WRTXBUF;没有写完继续BCAN_DW_QUIT:RETBCAN_DATA_RECEIVE:MOVDPTR,#REG_STATUSMOVXA,@DPTRSETBF0JNBACC.0,BCAN_DR_QUIT;判断报文是否有效CLRF0MOVDPTR,#REG_RxBuffer2;接收报文的ID号的低3位\RTR位\数据长度DLCMOVXA,@DPTRMOVDPTR,#REG_RxBuffer1;接收缓冲区的首地址JBACC.4,BCAN_RCVYB;接收到的是远程帧;数据帧ANLA,#0FH;计算接收到的数据长度ADDA,#02H;计算报文的长度MOVR6,AAJMPBCAN_RCVDATABCAN_RCVYB:MOVR6,#02;远程帧BCAN_RCVDATA:;开始读取数据MOVXA,@DPTRMOV@R0,AINCDPTRINCR0DJNZR6,BCAN_RCVDATABCAN_DR_QUIT:RETBCAN_SET_BANDRATE:MOVA,R7;判断波特率的值是否存在CLRCYSUBBA,#13;SETBF0JNCBCAN_SETBR_QUIT;输入的值大于12则不正确CLRF0MOVA,R7RLAMOVDPTR,#BCAN_SETBR;查表找出相应的预设***个值MOVCA,@A+DPTRMOVR5,A;将数据保存MOVA,R7;找出第二个值RLAINCAMOVCA,@A+DPTRMOVR6,A;保存值MOVDPTR,#REG_BTR0;装入波特率预设值,同步跳转宽度;位宽度MOVA,R5MOVX@DPTR,ASETBF0MOVXA,@DPTRXRLA,R5;判断写入是否正确JNZBCAN_SETBR_QUIT;不正确CLRF0INCDPTRMOVA,R6MOVX@DPTR,ASETBF0MOVXA,@DPTRXRLA,R6;判断写入是否正确JNZBCAN_SETBR_QUITCLRF0BCAN_SETBR_QUIT:RETBCAN_SETBR:DB053H,02FH;20KBPS的预设值DB087H,0FFH;40KBPS的预设值DB047H,02FH;50KBPS的预设值DB083H,0FFH;80KBPS的预设值DB043H,02fH;100KBPS的预设值DB03H,01cH;125KBPS的预设值DB081H,0faH;200KBPS的预设值DB01H,01cH;250KBPS的预设值DB080H,0faH;400KBPS的预设值DB00H,01cH;500KBPS的预设值DB080H,0b6H;666KBPS的预设值DB00H,016H;800KBPS的预设值DB00H,014H;1000KBPS的预设值BCAN_SET_OBJECT:MOVDPTR,#REG_ACR;写ACR寄存器MOVA,R7MOVX@DPTR,AMOVXA,@DPTRXRLA,R7;检验写入是否正确JNZBCAN_SETO_QUITINCDPTR;写AMR寄存器MOVA,R6MOVX@DPTR,AMOVXA,@DPTRXRLA,R6;检验写入是否正确JNZBCAN_SETO_QUITCLRF0BCAN_SETO_QUIT:RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;BCAN_CMD_PRG:MOVA,R7CJNEA,#01,BCAN_CMD1;发送请求命令MOVDPTR,#REG_COMMAND;地址指向命令寄存器MOVX@DPTR,A;写入命令字RETBCAN_CMD1:CJNEA,#02,BCAN_CMD2;;//夭折发送命令MOVDPTR,#REG_STATUS;地址指向状态寄存器MOVXA,@DPTR;判断是否有正在发送的状态SETBF0JBACC.5,BCAN_CMD_QUITCLRF0BCAN_CMD_QUIT:RET以下是几款can开发板:http://item./auction/item_detail-0db2-6e3c6f5717a53a6802d3068fd054ecf3.jhtml这是一款针对初学者的http://item./auction/item_detail-0db2-84528f10e90fcdcc97b99194d14201b3.jhtml这是一款带有8路12位adc采集功能的http://item./auction/item_detail-0db2-58cd65ef6489e9d4f22176c16a0f6be6.jhtml这是温度测量的http://item./auction/item_detail-db2-155e51885e39***bca4ffe21105e566b5.htm这是实现usb转can的同时本人接受can项目开发:设计、制作pcb板、焊接、编程、调试以及技术支持服务。需要的话,请联系我***:531706356手机:13106551527MSN:nnyt@邮箱:nnyt@博客网址:http://na./nnyt周一到周五我晚上六点到七点,***在线,其它时间请联系我手机,有时间我就上线,谢谢本博客作品采用版权所有,未经协议***禁止转载。)
北京智德科技有限公司
业务 QQ: 531706356