|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
两种写法结果是否一样? |
作者:liaozhihua 栏目:技术交流 |
1.fun1 sbit SDAT = P1^0; sbit SCLK = P1^1; void Write(uint Data) { uchar t_a; Data<<=2; for (t_a=0; t_a<14; t_a++) { SCLK=0; SDAT=(bit)(Data&0x8000); SCLK=1; Data<<=1; } } 2.fun2 sbit SDAT = P1^0; sbit SCLK = P1^1; void Write(uint Data) { uchar t_a; uint TEMP; Data<<=2; TEMP=Data; for (t_a=0; t_a<14; t_a++) { SCLK=0; TEMP&=0x8000; if (TEMP == 0x8000) { SDAT=1; } else { SDAT=0; } SCLK=1; Data<<=1; TEMP=Data; } } |
2楼: | >>参与讨论 |
作者: sd325 于 2006/3/18 10:51:00 发布:
第二种比第一种效率高一点,要是51用进位位做,效率更高。 第二种比第一种效率高一点,要是51用进位位做,效率更高。 |
3楼: | >>参与讨论 |
作者: 赤铸 于 2006/3/18 17:53:00 发布:
不完全一样 第一个代码尺寸和速度都更优化,而且每位时钟宽度是固定的(也就是时钟频率固定) 第二个较臃肿,而且时钟频率不固定,总执行时间也不固定 |
4楼: | >>参与讨论 |
作者: AIRWILL 于 2006/3/18 19:16:00 发布:
看看编译的结果,再做对比吧 |
5楼: | >>参与讨论 |
作者: liaozhihua 于 2006/3/23 11:07:00 发布:
事实上第二种写法能得出正确结果! |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |