打印

2f1是怎么计算出来的?

[复制链接]
292|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
stly|  楼主 | 2021-1-5 22:09 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
TXB0CON= 0x03;        //发送优先级为最高优先级,TXPR1=11
        TXB0SIDH= 0x5e;        //设置发送缓冲器0的标准标示符2f1,本程序采用标准标示符
        TXB0SIDL= 0x20;
上述代码中,2f1是怎么计算出来的?

使用特权

评论回复
沙发
stly|  楼主 | 2021-1-5 22:15 | 只看该作者
如果标准标示符是2f2,2f3或者其他的呢?

使用特权

评论回复
板凳
stly|  楼主 | 2021-1-5 22:22 | 只看该作者
TXB0SIDH,TXB0SIDL这连个寄存器该设置什么数值呢?

使用特权

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

使用特权

评论回复
5
pangb| | 2021-1-5 22:28 | 只看该作者

使用特权

评论回复
6
xxmmi| | 2021-1-5 22:31 | 只看该作者
对照寄存器定义去分析就懂了

使用特权

评论回复
7
stly|  楼主 | 2021-1-5 22:34 | 只看该作者
你好,这个标识符我弄明白了。主函数是TRID=0X00,当我在can初始化函数里面添加TRISD≡oxf0,后面写if((PORTD&0xf0)==0xe0 {TXB0SIDH=0x5e;TXB0SIDL=0x00}
else if....
.else...
这样的语句的时候,检测到的D端口,为什么是不停的变化的?在主函数里面写TRISD=0XF0,端口d的状态也是不断变化的

使用特权

评论回复
8
stly|  楼主 | 2021-1-5 22:38 | 只看该作者
找到原因了,没在函数里面写初始化程序

使用特权

评论回复
9
gongche| | 2021-1-5 22:44 | 只看该作者
那要详细看看寄存器说明了

使用特权

评论回复
10
stly|  楼主 | 2021-1-5 22:47 | 只看该作者

搞定了,呵呵,犯了低级错误……

使用特权

评论回复
11
木木guainv| | 2021-2-4 12:34 | 只看该作者
不同编码之间的转换吧

使用特权

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

本版积分规则

433

主题

7058

帖子

0

粉丝