登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | 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
第二种比第一种效率高一点,要是51用进位位做,效率更高。
第二种比第一种效率高一点,要是51用进位位做,效率更高。

3楼: >>参与讨论
赤铸
不完全一样
第一个代码尺寸和速度都更优化,而且每位时钟宽度是固定的(也就是时钟频率固定)
第二个较臃肿,而且时钟频率不固定,总执行时间也不固定

4楼: >>参与讨论
AIRWILL
看看编译的结果,再做对比吧
 
5楼: >>参与讨论
liaozhihua
事实上第二种写法能得出正确结果!
 
参与讨论
昵称:
讨论内容:
 
 
相关帖子
求助ad421
反射红外光的反射板哪个公司做?
请教一个参数,关于压电方面的
我想读8051IO口寄存器值而是是IO管脚值,该怎样做谢谢
Keil uVision3,总是出现错误怎么回事
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号