打印
[PIC®/AVR®/dsPIC®产品]

pic单片机can通讯标示符寄存器设置的问题

[复制链接]
979|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
        TXB0CON= 0x03;        //发送优先级为最高优先级,TXPR1=11
        TXB0SIDH= 0x5e;        //设置发送缓冲器0的标准标示符2f1,本程序采用标准标示符
        TXB0SIDL= 0x20;
上述代码中,2f1是怎么计算出来的?如果标准标示符是2f2,2f3或者其他的呢?TXB0SIDH,TXB0SIDL这连个寄存器该设置什么数值呢?

使用特权

评论回复
沙发
allen135154|  楼主 | 2019-8-3 20:04 | 只看该作者
有没有大神帮忙解答一下 ,十分感谢!

使用特权

评论回复
板凳
lcczg| | 2019-8-5 10:37 | 只看该作者
ID的10到3位在TXB0SIDH里,2到0位在TXB0SIDL。这样把2f1放进去就得到5e和20了。注意2到0位是在TXB0SIDL的高三位,所以是0x20.

sid.JPG (238.99 KB )

sid.JPG

使用特权

评论回复
地板
zhuomuniao110| | 2019-8-6 00:05 | 只看该作者
楼主大神啊,膜拜

使用特权

评论回复
5
alternate| | 2019-8-6 10:16 | 只看该作者
对照寄存器定义去分析就懂了

使用特权

评论回复
6
allen135154|  楼主 | 2019-8-16 07:29 | 只看该作者
lcczg 发表于 2019-8-5 10:37
ID的10到3位在TXB0SIDH里,2到0位在TXB0SIDL。这样把2f1放进去就得到5e和20了。注意2到0位是在TXB0SIDL的高 ...

你好,这个标识符我弄明白了。主函数是TRID=0X00,当我在can初始化函数里面添加TRISD≡oxf0,后面写if((PORTD&0xf0)==0xe0 {TXB0SIDH=0x5e;TXB0SIDL=0x00}
else if....
.else...
这样的语句的时候,检测到的D端口,为什么是不停的变化的?在主函数里面写TRISD=0XF0,端口d的状态也是不断变化的

使用特权

评论回复
7
allen135154|  楼主 | 2019-8-16 16:43 | 只看该作者
找到原因了,没在函数里面写初始化程序

使用特权

评论回复
8
aoyi| | 2019-9-13 10:25 | 只看该作者
那要详细看看寄存器说明了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

9

帖子

0

粉丝