12056|9

57

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

-50000&0x00ff是什么意思啊 [复制链接]

谢谢  你们进来  

我进入盲区了  -50000&0x00ff 是什么意思啊

此帖出自51单片机论坛

最新回复

可是前面的-50000我不明白呀 #define AUX1 TIMER_TICKS_PER_MS*LED_TOGGLE_RATE //不能超过65535 #define AUX2 -AUX1 #define AUX3 AUX2&0x00ff //赋初值 放入TLX #define AUX4 (AUX2&0xff00)>>8 //赋初值 放入THX 这几句应该是这样子的。 TIMER_TICKS_PER_MS 这是指没毫秒所用的计数次数 LED_TOGGLE_RATE 这是它要定时的定时频率,他这里应该是用来搞LED翻转的 AUXR2 AUXR1 这种蛋疼的写法,我表示我想打死它 它的本意应该是 #define AUXR1 (-AUXR2) 直接AUXR2 写成-50000,或者 65535-50000不更好?非要搞个负号,负号也就算了,定义宏最好加个括号,万一 替代进代码时惹出什么乱子,哭都有他哭的。 AUXR3 AUXR4不用看了,应该就是定时初值。 名字没起好,直接来个 TIMER_HIGH TIMER_LOW不更好? 滥用 XX1 XX2 XX3,,宏的本意就是为了把常数和意义对应上,他这样搞,干啥? 还AUXR,这是辅助寄存器还是啥意思?  详情 回复 发表于 2012-4-12 11:28
点赞 关注
 

回复
举报

192

帖子

0

TA的资源

纯净的硅(初级)

沙发
 
高字节为0,&0x00ff,就是只取低字节
&按位于
前面的-50000 是啥就看具体的吧
此帖出自51单片机论坛
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(高级)

板凳
 
恩  后面的&   我倒明白
可是前面的-50000我不明白呀  
#define AUX1                TIMER_TICKS_PER_MS*LED_TOGGLE_RATE                //不能超过65535
#define AUX2                -AUX1
#define AUX3                AUX2&0x00ff                //赋初值 放入TLX
#define AUX4                (AUX2&0xff00)>>8        //赋初值 放入THX

就是我把AUX1 赋值50000了   十进制能和十六进制相与吗    还是-50000有特殊含义
此帖出自51单片机论坛
 
 
 

回复

4008

帖子

0

TA的资源

版主

4
 
低八位
此帖出自51单片机论坛
 
 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

5
 

回复 板凳 wangdabo 的帖子

这种写法有点添乱。
它的本意应该是
(65535 - 50000) & 0xff

他也许以为 65535相当于0xffff,说白了就是65536 - 1
0xffff - 50000,和 直接 -50000......
好吧,我也被他绕进去了,开始我没仔细想的时候,我真以为这是等效的。

不管怎么说,这种写法都很蛋疼,不要盲目模仿。
此帖出自51单片机论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

6
 

回复 板凳 wangdabo 的帖子

十六进制和十进制只是形式上的区别,没有什么“十六进制和十进制能不能相与”的问题
此帖出自51单片机论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

7
 

回复 5楼 辛昕 的帖子

如果没猜错,最初这样写的人肯定在这里头犯了两个错误
1 他们以为 65536-100 和 -100的写法是等效的。
假设说,这两个数据都是 无符号的16位数,那,那还真是.,.....没问题

2 他们没有区分 65535 和 65536,不然他怎么会写出这样的-50000呢?

但还是一句话,这样的写法真的很蛋疼
此帖出自51单片机论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

8
 
哦,忘了补充一点。
这个-50000是定义成宏的吧,如果是这样子,等于说一个没有规定数据类型的数,那么,很自然的它会被默认为int或者unsigned int。
而且这玩意显然就是在51下用的吧,那么算他走运
因为,51里的int型那就是16位,要是换成别的,比如STM32我保证它死定了......

当然我也没确定51下的默认是int还是unsigned int

算,为了防止我又突然想起什么才发帖,我还是想想,如果真到了int为32位的系统里会出什么事
-5000,按照补码来算......最后的话,因为STM32里的定时器貌似也是16位的?
假如是吧,见过好些32位的16位的和8位的一样都是16位定时器
所以这个存储器是16位......不对,不对,这跟存储器多少位没关系,反正他还是要从这个 -5000里取结果......

如果没符号,倒是没什么问题。毕竟是直接截去高16位,低16位还在,也没啥影响
如果有符号。
这个,得确定一下才行。

但是,兄弟们,没事还是别写这个吧,写多几个数字真心不会死人的
此帖出自51单片机论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

192

帖子

0

TA的资源

纯净的硅(初级)

9
 

回复 8楼 辛昕 的帖子

辛哥,强大。。。。
我看楼主的程序是各种迷糊各种绕啊
此帖出自51单片机论坛
 
 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

10
 
可是前面的-50000我不明白呀
#define AUX1 TIMER_TICKS_PER_MS*LED_TOGGLE_RATE //不能超过65535
#define AUX2 -AUX1
#define AUX3 AUX2&0x00ff //赋初值 放入TLX
#define AUX4 (AUX2&0xff00)>>8 //赋初值 放入THX

这几句应该是这样子的。
TIMER_TICKS_PER_MS 这是指没毫秒所用的计数次数
LED_TOGGLE_RATE 这是它要定时的定时频率,他这里应该是用来搞LED翻转的
AUXR2 AUXR1 这种蛋疼的写法,我表示我想打死它
它的本意应该是
#define AUXR1 (-AUXR2)
直接AUXR2 写成-50000,或者 65535-50000不更好?非要搞个负号,负号也就算了,定义宏最好加个括号,万一 替代进代码时惹出什么乱子,哭都有他哭的。
AUXR3 AUXR4不用看了,应该就是定时初值。
名字没起好,直接来个 TIMER_HIGH TIMER_LOW不更好?
滥用 XX1 XX2 XX3,,宏的本意就是为了把常数和意义对应上,他这样搞,干啥?
还AUXR,这是辅助寄存器还是啥意思?
此帖出自51单片机论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表