SJA1000程序

SJA1000程序


系统can地址为550,用于can系统测试,应用T0定时器每隔1s向can总线发送一组数据:数据长度为8个字节,
首字节为05H,第二个字节为累加变量,每秒钟数值增加1,
*********************************************************************************************************
CONTROLLER_BASE EQU 7E00H ;SJA1000的片选地址

RCV_GOOD BIT 0FH ;成功的接收一帧标志
SEC_FLAG BIT 010H ;一秒到标志
ERR_FLAG BIT 011H ;监测到错误标志

SAVE_INT_INFO DATA 032H ;保存SJA1000中断寄存器的内容

SEND_DATA_BUF1 DATA 040H ;发送缓冲区
SEND_DATA_BUF2 DATA 041H
SEND_DATA_BUF3 DATA 042H
SEND_DATA_BUF4 DATA 043H
SEND_DATA_BUF5 DATA 044H
SEND_DATA_BUF6 DATA 045H
SEND_DATA_BUF7 DATA 046H
SEND_DATA_BUF8 DATA 047H
SEND_DATA_BUF9 DATA 048H
SEND_DATA_BUF10 DATA 049H

RCV_DATA_BUF1 DATA 050H ;接收缓冲区
RCV_DATA_BUF2 DATA 051H
RCV_DATA_BUF3 DATA 052H
RCV_DATA_BUF4 DATA 053H
RCV_DATA_BUF5 DATA 054H
RCV_DATA_BUF6 DATA 055H
RCV_DATA_BUF7 DATA 056H
RCV_DATA_BUF8 DATA 057H
RCV_DATA_BUF9 DATA 058H
RCV_DATA_BUF10 DATA 059H

ERROR_STATUS DATA 07CH ;错误状态表示
TEST_DATA DATA 07FH ;测试发送数据
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;程序开始
ORG 0000H
LJMP MAIN ;运行主程序

ORG 0003H
LJMP BCAN_INT0 ;中断方式访问SJA1000程序

ORG 000BH
LJMP T0_INTERRUPT ;定时器0中断

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

ORG 0100H ;程序开始
MAIN:
MOV R0,#07fH
CLR A
MOV @R0,A
DJNZ R0,$-1
MOV @R0,A
MOV SP,#60H ;设置SP
CLR P2.0 ;SJA1000退出硬件复位模式

LCALL SJA1000_INT0 ;初始化SJA1000
LCALL T0_INIT
CLR P3.4 ;点亮指示灯
SETB PX0
SETB IT0
SETB EX0
SETB ET0
SETB TR0
SETB EA

LOOPER:
JNB RCV_GOOD,LOOPER2 ;sja1000成功接收一帧,通知CPU处理
CLR RCV_GOOD
LCALL RCVDATA_PRG
LOOPER2:
JNB SEC_FLAG,LOOPER3 ;一秒时间到,每秒发送一次
CLR SEC_FLAG
CLR P3.5 ;点亮指示灯
LCALL SENDDATA_PRG
LOOPER3:
JNB ERR_FLAG,LOOPER4 ;错误标志,错误处理
CLR ERR_FLAG
LCALL ERR_PRG
LOOPER4:
AJMP LOOPER

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

SJA1000_INT0:
LCALL BCAN_CREATE_COMMUNATION ;调用SJA1000接口测试函数

你可能喜欢

  • sja1000
  • CAN总线详细教程
  • can总线程序
  • PCA82C250
  • 模块控制器
  • 工程电路
  • CAN总线设计

SJA1000程序相关文档

最新文档

返回顶部