2f1是怎么计算出来的?

[复制链接]
905|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.
pangb 发表于 2021-1-5 22:28 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
xxmmi 发表于 2021-1-5 22:31 | 显示全部楼层
对照寄存器定义去分析就懂了
 楼主| 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的状态也是不断变化的
 楼主| stly 发表于 2021-1-5 22:38 | 显示全部楼层
找到原因了,没在函数里面写初始化程序
gongche 发表于 2021-1-5 22:44 | 显示全部楼层
那要详细看看寄存器说明了
 楼主| stly 发表于 2021-1-5 22:47 | 显示全部楼层

搞定了,呵呵,犯了低级错误……
木木guainv 发表于 2021-2-4 12:34 | 显示全部楼层
不同编码之间的转换吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

433

主题

7058

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部