实验三:双节点通信                                                               
    1、实验要求                                                               
    can节点a(id:0x00)、b(id:0x01),要求a节点进行数据发送(标准数据帧),b节                                                               
流程图转换为ns图    点可以进行数据接收并显示接收到数据,同时反馈信息给a节点。                                2、实验目的                                                               
    (1)熟悉双can通信原理; (2)掌握双节点通信的设计。 3、所需设备 (1)cpu挂箱2  (2)接口挂箱2                                                               
    (3)cpu模块(80c31)2  (4)can总线模块2块 4、实验内容                                                               
    两个实验台运行程序can.asm,发送实验台全速运行程序,接收实验台要在程序中设置断点,查看30h~37h中的数与程序中发送的数据是否一致。 5、实验原理                                                               
    两个can节点通信,验收滤波设置正确后,可实现双节点通信。硬件原理图与图2.4类似,只不过将1个节点改为2个节点。图略。 附图2.4见下                                                                                                                                                                                                                                                                                                                                   
    (2)模块跳线接lcs0(can基址为0xde00); (3)模块上的a接canl,b接canh;                                                               
    (4)在各自试验台上,将cpu挂箱右侧的“data port”和“address port”                                                               
    分别用 5p、14p、20p连线与接口挂箱的相应插座连接. (5)将两个can节点的canl、canh直连。                                                               
    2、运行程序can.asm,在初始化结束、发送接收结束处各设置断点,查看两个模块的30h~37h中的数据是否一致。 7、实验结果                                                               
    两个模块的30h~37h中的数据一致。 8、1)程序流程图                                                   
                                                                                                                                               
    2)实验程序:                                                               
    mode equ 0de00h        ;模式寄存器 cmr equ 0de01h      ;命令寄存器 sr equ 0de02h  ;状态寄存器 ir equ 0de03h  ;中断寄存器 ier equ 0de04h      ;中断使能寄存器 btr0 equ 0de06h  ;总线定时寄存器一 btr1 equ 0de07h      ;总线定时寄存器二 ocr equ 0de08h      ;输出控制寄存器                                                               
    alc    equ    0de0bh          ;仲裁丢失捕捉寄存器 ecc    equ    0de0ch          ;错误代码捕捉寄存器 txerr  equ    0de0fh          ;发送错误计数器 acr0 equ 0de10h  ;验收代码寄存器0 acr1 equ 0de11h      ;              1 acr2 equ 0de12h  ;              2 acr3 equ 0de13h      ;              3                                                                                                                                                                                                                                                                   
    amr0 equ 0de14h  ;验收屏蔽寄存器0 amr1 equ 0de15h      ;        1 amr2 equ 0de16h      ;
              2 amr3 equ 0de17h      ;              3 fin    equ  0de10h        ;发送/接收帧信息 id1    equ 0de11h  ;发送/接收缓冲区之标示符一 id2    equ 0de12h      ;发送/接收缓冲区之标示符二 data1  equ 0de13h      ;发送/接收数据首址 rbsa equ 0de1eh      ;接收缓冲器起始地址寄存器    cdr    equ 0de1fh        ;时钟分频寄存器 org    4000h jmp    start org    4080h                                                               
    start:  mov    r1,#8        mov    r0,#27h fill:  mov    b,#10h        mov    a,r1        mul    ab        mov    @r0,a        dec    r0                                                               
    djnz    r1,fill        mov    r0,#0aah                                                               
    lcall  initcan            ;can初始化(can片选为cs0:0de00h) ;-------------------------发送------------------ retran: mov    dph, #0deh        mov    r0, #20h                                                               
    lcall  send                ;发送20h为首址的1桢数据(前三字节为:08h、bbh、ffh,后8字节任意)                                                               
    lcall  delay                                                               
    ;-----------------------接收数据--------------------------        mov    dph, #0deh            mov    r0, #30h        lcall  recv                                                               
    nop                        ;在此处设置断点,以观察结果        jmp    $ initcan:                                                               
    mov    dptr,#mode    ;初始化子程序,dph、r0为入口参数  mov    a,#01h                                                               
    movx  @dptr,a      ;模式寄存器,单验收滤波器,进入复位模式  mov dptr,#cdr  mov a,#88h                                                               
    movx @dptr, a ;时钟分频r,选择增强can模式,关闭clkout输出  mov dptr,#ier    mov a,#0dh                                                                                                                                   
    movx    @dptr,a  ;中断使能寄存器,开溢出、错误、接收中断  mov dptr,#btr0    mov a,#03h                                                               
    movx @dptr,a      ;总线定时寄存器一  mov dptr,#btr1  mov a,#0ffh                                                               

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。