打印

(谢谢!!!)郁闷 !!!74HC166 驱动! 软件调试正确 脱机不行!!!!!!!

[复制链接]
6128|25
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
avocationA|  楼主 | 2009-2-4 18:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//定义特殊符号
#include<reg51.h>
sbit d_clk=P1^0;  //移位时钟
sbit d_cp=P1^1;   //串/并 锁定
sbit d_dat=P1^2;  //DATA OUT


/***************************
【函数】:delayms()
【功能】:延时函数 
***************************/
void delayms(unsigned char loop)    // about delay time=loop*1ms (little small)
{
      xdata unsigned char i;
      while(loop--)        // fosc=11.0592MHz
    for(i=0;i<210;i++);
}

/***************************
【函数】:read_hc166()
【功能】:函数 
***************************/
unsigned char read_hc166() 
{
     unsigned char i,hc66_data;
    d_cp=0;    //并行始能
    delayms(10);/////////////////////
    d_clk=0;//上升沿加载8位数据
    delayms(10);/////////////////////
    d_clk=1;
    delayms(10);/////////////////////
    d_cp=1;    //串行始能
     for (i=0,hc66_data=0;i<8;i++) 
     {

          hc66_data <<= 1;

          if (d_dat==0)
        {
            hc66_data|= 0X01;
        }

        delayms(10);/////////////////////
        d_clk=0;
        delayms(10);/////////////////////
        d_clk=1;//上升沿 
     }
    return  hc66_data;
}


/***************************
【函数】:main()
【功能】:函数 
***************************/
void main(void) 
{
    unsigned char temp;
    P0=0Xff;
      P2=0Xff;
     P3=0Xff;
    P1=0x00;
    
 while (1) 
 {

    temp=read_hc166();
    P3=temp;

    P0=0XFF;
      P2=0XFF;
    switch(temp) //读取扫描值 
    {
         case 0xFE: P0=0X00;P2=0xF9;  break; //1
        case 0xFD: P0=0X00;P2=0xA4;  break; //2
        case 0xFB: P0=0X00;P2=0xB0;  break; //3
        case 0xF7: P0=0X00;P2=0x99;  break; //4                           
        case 0xEF: P0=0X00;P2=0x92;  break; //5
        case 0xDF: P0=0X00;P2=0x82;  break; //6
        case 0xBF: P0=0X00;P2=0xF8;  break; //7
        case 0x7F: P0=0X00;P2=0x80;  break; //8

        case 0x80: P0=0X00;P2=0xF9;  break; //1
        case 0x40: P0=0X00;P2=0xA4;  break; //2
        case 0x20: P0=0X00;P2=0xB0;  break; //3
        case 0x10: P0=0X00;P2=0x99;  break; //4                           
        case 0x08: P0=0X00;P2=0x92;  break; //5
        case 0x04: P0=0X00;P2=0x82;  break; //6
        case 0x02: P0=0X00;P2=0xF8;  break; //7
        case 0x01: P0=0X00;P2=0x80;  break; //8

        case 0xFF: P0=0X00;P2=0x8E;  break; //F
        case 0x00: P0=0X00;P2=0xC0;  break; //0
        default :P0=0X00;P2=0x86;    break; //E
          
    }
    

 }





相关帖子

来自 2楼
avocationA|  楼主 | 2009-2-6 23:26 | 只看该作者

51还是 不行 但是 ARM上OK了 谢谢楼上各位!谢谢

//  基于《Stellaris外设驱动库》的例程扩展:按键控制LED


//  包含必要的头文件
#include  "LED.H"
#include  "KEY.H"
#include  <hw_types.h>
#include  <hw_memmap.h>
#include  <hw_sysctl.h>
#include  <hw_gpio.h>
#include  <sysctl.h>
#include  <gpio.h>

//  PA0    HC595_HC166_CLK
//  PA1    HC595_STR
//  PA2    HC595_DATA
//  PA3 HC166_S_L
//  PA4    HC166_Q_H

//  将较长的标识符定义成较短的形式
#define  SysCtlPeriEnable       SysCtlPeripheralEnable
#define  SysCtlPeriDisable      SysCtlPeripheralDisable
#define  GPIOPinTypeIn          GPIOPinTypeGPIOInput
#define  GPIOPinTypeOut         GPIOPinTypeGPIOOutput


//  定义KEY
#define  KEY_PERIPH             SYSCTL_PERIPH_GPIOG
#define  KEY_PORT               GPIO_PORTG_BASE
#define  KEY_PIN                GPIO_PIN_5

//  定义全局的系统时钟变量
unsigned long  TheSysClock  =  12000000UL;
/***************************
【函数】:seg[16]
【功能】:显示段码
【参数】:无
***************************/
unsigned char seg[16]=
{
  0xC0,0xF9,0xA4,0xB0, /* 0 1 2 3*/
  0x99,0x92,0x82,0xF8, /* 4 5 6 7 */
  0x80,0x90,0x88,0x83, /* 8 9 A B */
  0xC6,0xA1,0x86,0x8E  /* C D E F */
};

/***************************
【函数】:DigTab[6]
【功能】:LED位扫描
【参数】:无
***************************/
unsigned char DigTab[6] =                         //  定义数码管位选数据
{
  0x01, 0x02, 0x04, 0x08, 0x10, 0x00
};

/***************************
【函数】:JTAG_Wait(void)
【功能】:防止JTAG失效
【参数】:无
***************************/
void  JTAG_Wait(void)
{
    SysCtlPeriEnable(KEY_PERIPH);                               //  使能KEY所在的GPIO端口
    GPIOPinTypeIn(KEY_PORT , KEY_PIN);                          //  设置KEY所在管脚为输入

    if ( GPIOPinRead(KEY_PORT , KEY_PIN)  ==  0x00 )            //  如果复位时按下KEY,则进入
    {
        for (;;);                                               //  死循环,以等待JTAG连接
    }

    SysCtlPeriDisable(KEY_PERIPH);                              //  禁止KEY所在的GPIO端口
}

/***************************
【函数】:Delay()
【功能】:延时
【参数】:无
***************************/
void  Delay(unsigned long  ulVal)
{
  while ( --ulVal  !=  0 );
}

/***************************
【函数】:SystemInit()
【功能】:系统初始化
【参数】:无
***************************/
void  SystemInit(void)
{
    SysCtlLDOSet(SYSCTL_LDO_2_50V);                             //  设置LDO输出电压

    SysCtlClockSet(SYSCTL_USE_OSC |                             //  系统时钟设置,采用主振荡器
                   SYSCTL_OSC_MAIN |
                   SYSCTL_XTAL_6MHZ |
                   SYSCTL_SYSDIV_1);

/*
    SysCtlLDOSet(SYSCTL_LDO_2_75V);                             //  配置PLL前将LDO电压设置为2.75V

    SysCtlClockSet(SYSCTL_USE_PLL |                             //  系统时钟设置,采用PLL
                   SYSCTL_OSC_MAIN |                            //  主振荡器
                   SYSCTL_XTAL_6MHZ |                           //  外接6MHz晶振
                   SYSCTL_SYSDIV_10);                           //  分频结果为20MHz
*/

    TheSysClock  =  SysCtlClockGet();                           //  获取系统时钟,单位:Hz                                    
}

/***************************
【函数】:IoInit(void)
【功能】:IO初始化
【参数】:无
***************************/
void  IoInit(void)
{
    SysCtlPeriEnable(SYSCTL_PERIPH_GPIOA);                  //  使能GPIOA端口
    GPIOPinTypeOut(GPIO_PORTA_BASE , GPIO_PIN_0);           //  设置PA0为输入类型
    GPIOPinWrite(GPIO_PORTA_BASE , GPIO_PIN_0 , 0x00);      //  PA0输出低电平
        
    GPIOPinTypeOut(GPIO_PORTA_BASE , GPIO_PIN_1);           //  设置PA1为输出类型
    GPIOPinWrite(GPIO_PORTA_BASE , GPIO_PIN_1 , 0x00<< 1);  //  PA1输出低电平
        
    GPIOPinTypeOut(GPIO_PORTA_BASE , GPIO_PIN_2);           //  设置PA2为输出类型
    GPIOPinWrite(GPIO_PORTA_BASE , GPIO_PIN_2 , 0x00<< 2);  //  PA2输出低电平
    
    GPIOPinTypeOut(GPIO_PORTA_BASE , GPIO_PIN_3);           //  设置PA3为输出类型
    GPIOPinWrite(GPIO_PORTA_BASE , GPIO_PIN_3 , 0x00<< 3);  //  PA2输出低电平
    
    GPIOPinTypeIn(GPIO_PORTA_BASE , GPIO_PIN_4);            //  设置PA4输入类型
    
    SysCtlPeriEnable(SYSCTL_PERIPH_GPIOB);                  //  使能GPIOB端口
    GPIOPinTypeIn(GPIO_PORTB_BASE , GPIO_PIN_0);            //  设置PB0输入类型

    LED_Init(LED1 | LED2);                                  //  初始化LED1和LED2
    KEY_Init(KEY1 | KEY2); 
}

/***************************
【函数】:HC595_HC166_CLK_Hi(void)
【功能】:io设定
【参数】:无
***************************/
void  HC595_HC166_CLK_Hi(void)//PA0管脚输出高电平
{
  GPIOPinWrite(GPIO_PORTA_BASE , GPIO_PIN_0 , 0x01);      //  PA0输出高电平
}

/***************************
【函数】:HC595_HC166_CLK_Lo(void)
【功能】:io设定
【参数】:无
***************************/
void  HC595_HC166_CLK_Lo(void)//PA0管脚输出低电平
{
  GPIOPinWrite(GPIO_PORTA_BASE , GPIO_PIN_0 , 0x00);      //  PA0输出低电平
}

/***************************
【函数】:HC595_STR_Hi(void)
【功能】:io设定
【参数】:无
***************************/
void  HC595_STR_Hi(void)//PA1管脚输出高电平
{
  GPIOPinWrite(GPIO_PORTA_BASE , GPIO_PIN_1 , 0x01<< 1);  //  PA1输出高电平
}

/***************************
【函数】:HC595_STR_Lo(void)
【功能】:io设定
【参数】:无
***************************/
void  HC595_STR_Lo(void)//PA1管脚输出低电平
{
  GPIOPinWrite(GPIO_PORTA_BASE , GPIO_PIN_1 , 0x00<< 1);  //  PA1输出低电平
}

/***************************
【函数】:HC595_DATA_Hi(void)
【功能】:io设定
【参数】:无
***************************/
void  HC595_DATA_Hi(void)//PA2管脚输出高电平
{
  GPIOPinWrite(GPIO_PORTA_BASE , GPIO_PIN_2 , 0x01<< 2);  //  PA2输出高电平
}

/***************************
【函数】:HC595_DATA_Lo(void)
【功能】:io设定
【参数】:无
***************************/
void  HC595_DATA_Lo(void)//PA2管脚输出低电平
{
  GPIOPinWrite(GPIO_PORTA_BASE , GPIO_PIN_2 , 0x00<< 2);  //  PA2输出低电平


/***************************
【函数】:HC166_SL_Hi(void)
【功能】:io设定
【参数】:无
***************************/
void  HC166_SL_Hi(void)//PA3管脚输出高电平
{
  GPIOPinWrite(GPIO_PORTA_BASE , GPIO_PIN_3 , 0x01<< 3);  //  PA3输出高电平
}

/***************************
【函数】:HC166_SL_Lo(void)
【功能】:io设定
【参数】:无
***************************/
void  HC166_SL_Lo(void)//PA3管脚输出低电平
{
  GPIOPinWrite(GPIO_PORTA_BASE , GPIO_PIN_3 , 0x00<< 3);  //  PA3输出低电平
}        
 
/***************************
【函数】:HC166_read(void)
【功能】:io设定
【参数】:无
***************************/
unsigned char HC166_read(void)//HC166_read
{
  unsigned char i,set;
  HC166_SL_Lo();        //cp底电平
  
  HC595_HC166_CLK_Lo(); //CLK底电平
  //Delay(1);
  HC595_HC166_CLK_Hi(); //CLK高电平
  //Delay(1);
  HC166_SL_Hi();        //cp高电平
  //Delay(1);
  
  for(i = 0, set = 0; i < 8;i ++)//依次读取锁存的8位数据
  {
    set <<= 1;
    if ( GPIOPinRead(GPIO_PORTA_BASE , GPIO_PIN_4)  ==  0x00 )      //  如果PA4为低电平
    {
      set ++;
    }
    HC595_HC166_CLK_Lo(); //CLK底电平
    //Delay(1);
    HC595_HC166_CLK_Hi(); //CLK高电平//第8个脉冲将SER发送出来
  }
  return set;


/***************************
【函数】:DataOut(void)
【功能】:io设定
【参数】:无
***************************/
void DataOut(unsigned char nValue)
{
 int i;
 //int j;
 for(i = 0;i < 8;i++)
 {
    if ((nValue & 0x80) == 0x80)
    {
      HC595_DATA_Hi();//输出高电平
    }
    else
    {
      HC595_DATA_Lo();//输出低电平
    } 
  
  HC595_HC166_CLK_Hi();//时钟高电平,上升沿有效
  HC595_HC166_CLK_Lo();//时钟低电平
  nValue <<= 1;  
 }
 return;
}

/***************************
【函数】:Show_Led_Bit(void)
【功能】:io设定
【参数】:DigValue//显示位数, SegValue//显示值
***************************/
void  Show_Led_Bit(unsigned char DigValue,unsigned char SegValue)
{

  HC595_STR_Lo();//清除锁存信号
  //DigValue = 4;//输出高8位是 扫描数据
  DataOut(DigTab[DigValue]);
  //SegValue =0; //输出2 给段码
  DataOut(seg[SegValue]);
  HC595_STR_Hi();//给锁存信号,共送了16位数据  高8位是 扫描数据 低8位是段码   
}

/***************************
【函数】:Show_Led_5(void)//5位数码管
【功能】:io设定
【参数】:根据Led_Bit显示位数, 根据SegValue显示数据
***************************/
void  Show_Led_5(unsigned int Led_Bit,unsigned int Led_Value)

  unsigned char DispBuf[5];
  DispBuf[0] = Led_Value / 10000;
  DispBuf[1] = Led_Value % 10000 / 1000;
  DispBuf[2] = Led_Value % 1000 / 100;       
  DispBuf[3] = Led_Value % 100 / 10;
  DispBuf[4] = Led_Value % 10;
  
  switch(Led_Bit) //读取扫描值 
  {
    case 0: Show_Led_Bit(5,DispBuf[0]);break; //close show
    
    case 1: Show_Led_Bit(4,DispBuf[4]);break; //show1
    
    case 2: Show_Led_Bit(3,DispBuf[3]);
            Show_Led_Bit(4,DispBuf[4]);break; //show2
            
    case 3: Show_Led_Bit(2,DispBuf[2]);
            Show_Led_Bit(3,DispBuf[3]);
            Show_Led_Bit(4,DispBuf[4]);break; //show3
            
    case 4: Show_Led_Bit(1,DispBuf[1]);
            Show_Led_Bit(2,DispBuf[2]);
            Show_Led_Bit(3,DispBuf[3]);
            Show_Led_Bit(4,DispBuf[4]);break; //show4
            
    case 5: Show_Led_Bit(0,DispBuf[0]);
            Show_Led_Bit(1,DispBuf[1]);
            Show_Led_Bit(2,DispBuf[2]);
            Show_Led_Bit(3,DispBuf[3]);
            Show_Led_Bit(4,DispBuf[4]); break; //show5
    default : break;
  }
}

/***************************
【函数】:main(void)
【功能】:io设定
【参数】:主函数
***************************/
//  主函数(程序入口)
int  main(void)
{   
    unsigned char HC66_DATA;
    JTAG_Wait();                                                //  防止JTAG失效,重要!
    SystemInit();                                               //  系统初始化
    IoInit();                                                   //  IO始化
    
    //LED_On(LED1 | LED2);                                        //  点亮LED1和LED2
    //Delay(1000 * (TheSysClock / 4000));                         //  延时约1000ms
    //LED_Off(LED1 | LED2);                                       //  熄灭LED1和LED2
    
    for (;;)
    {
        HC66_DATA=HC166_read();//读键盘
        //Show_Led_5(0,0);
        switch(HC66_DATA) //读取扫描值 
        {
          case 0x01: Show_Led_5(1,1);  break; //点亮LED1
          case 0x02: Show_Led_5(1,2);  break; //点亮LED1
          case 0x04: Show_Led_5(1,3);  break; //点亮LED1 
          case 0x08: Show_Led_5(1,4);  break; //点亮LED1                            
          case 0x10: Show_Led_5(1,5);  break; //点亮LED1
          case 0x20: Show_Led_5(1,6);  break; //点亮LED1
          case 0x40: Show_Led_5(1,7);  break; //点亮LED1
          case 0x80: Show_Led_5(1,8);  break; //点亮LED1
          
          case 0xFF: Show_Led_5(2,88);  break; //点亮LED2
          case 0x00: Show_Led_5(3,888); break; //点亮LED2
          
          case 0x03: Show_Led_5(2,13); break; //点亮LED2
          
          //case 0xFE: LED_Off(LED2);  break; //1
          //case 0xFD: LED_On(LED1);  break; //2
          //case 0xFB: LED_On(LED1);  break; //3
          //case 0xF7: LED_On(LED1);  break; //4                           
          //case 0xEF: LED_On(LED1);  break; //5
          //case 0xDF: LED_On(LED1);  break; //6
          //case 0xBF: LED_On(LED1);  break; //7
          //case 0x7F: LED_On(LED1);  break; //8
          
          //case 0xFF: LED_On(LED2);  break; //点亮LED2
          //case 0x00: LED_On(LED2);  break; //点亮LED2
          
          default :  Show_Led_5(5,88888);  break; //点亮LED2
        }
        //Delay(10 * (TheSysClock / 4000));                       //  延时约10ms
        LED_Off(LED1 | LED2);                                       //  熄灭LED1和LED2
    }
}

使用特权

评论回复
板凳
simon21ic| | 2009-2-4 21:25 | 只看该作者

延时?

使用特权

评论回复
地板
NE5532| | 2009-2-4 21:35 | 只看该作者

所以推荐,不要用仿真了,真的很麻烦。

使用特权

评论回复
5
xhtxzxw| | 2009-2-5 02:19 | 只看该作者

嘿嘿

1.74HC66, ns级的速度, 你为什么加那么些延时?
2.????? if(d_dat == 0) 
        {
          hc66_data |= 0X01;
        }
3.CE=???  (CE: Clock Enable)

unsigned char read_hc166() 
{
     unsigned char i,  hc66_data;

     d_cp  = 0;         //并行使能
     d_clk = 0;         
     d_clk = 1;         //上升沿,加载8位并行数据

     hc66_data = 0;
     d_cp  = 1;         //串行使能
     for (i=0; i<8; i++) 
     {
          hc66_data <<= 1;
          if(d_dat) hc66_data |= 0X01;//刚开始已经有一位数据在d_dat上
          d_clk = 0;
          d_clk = 1;        //产生一个上升沿,移进下一位数据到d_dat上 
     }
     return  hc66_data;
}

使用特权

评论回复
6
avocationA|  楼主 | 2009-2-5 14:17 | 只看该作者

我是用51验证下HC166驱动.所以没有考虑延时.

我是用51验证下HC166驱动.所以没有考虑延时.

使用特权

评论回复
7
mohanwei| | 2009-2-5 15:24 | 只看该作者

用示波器观察一下波形就知道了,不外乎驱动能力、上拉…

使用特权

评论回复
8
avocationA|  楼主 | 2009-2-5 16:29 | 只看该作者

恩 但是条件有限!

使用特权

评论回复
9
avocationA|  楼主 | 2009-2-5 17:08 | 只看该作者

郁闷 还是老样子!



//定义特殊符号
#include<reg51.h>
sbit d_clk=P1^0;  //移位时钟
sbit d_cp=P1^1;   //串/并 锁定
sbit d_dat=P1^2;  //DATA OUT

/***************************
【函数】:delayms()
【功能】:延时函数 
***************************/
void delayms(unsigned char loop)    // about delay time=loop*1ms (little small)
{
      xdata unsigned char i;
      while(loop--)        // fosc=11.0592MHz
    for(i=0;i<50;i++);
}

/***************************
【函数】:read_hc166()
【功能】:函数 
***************************/
unsigned char read_hc166() 
{
     unsigned char i,  hc66_data;

     d_cp  = 0;         //并行使能
     d_clk = 0;
     delayms(1);         
     d_clk = 1;         //上升沿,加载8位并行数据

     hc66_data = 0;
     d_cp  = 1;         //串行使能
     delayms(1);

     for (i=0; i<8; i++) 
     {
          hc66_data <<= 1;
          if(d_dat) 
     hc66_data |= 0X01;//刚开始已经有一位数据在d_dat上

          d_clk = 0;
     delayms(1);
          d_clk = 1;                  //产生一个上升沿,移进下一位数据到d_dat上 
     delayms(1);
     }
     return  hc66_data;
}



/***************************
【函数】:main()
【功能】:函数 
***************************/
void main(void) 
{
    unsigned char temp;
    P0=0Xff;
      P2=0Xff;
     P3=0Xff;
    P1=0x00;
    
    
 while (1) 
 {
    temp=read_hc166(); //读HC166
    //P3=temp;//测试
    //P0=0XFF;//关LED
      //P2=0XFF;
    switch(temp) //读取扫描值 
    {
         case 0xFE: P0=0X00;P2=0xF9;  break; //1
        case 0xFD: P0=0X00;P2=0xA4;  break; //2
        case 0xFB: P0=0X00;P2=0xB0;  break; //3
        case 0xF7: P0=0X00;P2=0x99;  break; //4                           
        case 0xEF: P0=0X00;P2=0x92;  break; //5
        case 0xDF: P0=0X00;P2=0x82;  break; //6
        case 0xBF: P0=0X00;P2=0xF8;  break; //7
        case 0x7F: P0=0X00;P2=0x80;  break; //8


        case 0x80: P0=0X00;P2=0xF9;  break; //1
        case 0x40: P0=0X00;P2=0xA4;  break; //2
        case 0x20: P0=0X00;P2=0xB0;  break; //3
        case 0x10: P0=0X00;P2=0x99;  break; //4                           
        case 0x08: P0=0X00;P2=0x92;  break; //5
        case 0x04: P0=0X00;P2=0x82;  break; //6
        case 0x02: P0=0X00;P2=0xF8;  break; //7
        case 0x01: P0=0X00;P2=0x80;  break; //8

        case 0xFF: P0=0X00;P2=0x8E;  break; //F
        case 0x00: P0=0X00;P2=0xC0;  break; //0
        default :P0=0X00;P2=0x86;    break; //E
          
    }
    

 }




使用特权

评论回复
10
xhtxzxw| | 2009-2-6 04:04 | 只看该作者

嘿嘿

大约错误在这里:
P1=0x00;
应该改成:P1=0x07;
大约就没有问题了.

使用特权

评论回复
11
洪七公| | 2009-2-6 23:13 | 只看该作者

hc66_data |= 0X01;不如hc66_data ++;

使用特权

评论回复
12
洪七公| | 2009-2-6 23:29 | 只看该作者

晕~~~ARM行MCU就不行???没听说过~~~

使用特权

评论回复
13
avocationA|  楼主 | 2009-2-7 19:57 | 只看该作者

不管了 ,ARM行就OK

使用特权

评论回复
14
avocationA|  楼主 | 2009-2-7 20:07 | 只看该作者

用IAR 调试 LM3S1138的时候出了怪问题

1  代码A 包括了595 显示部分     

2  代码B包括了键盘(HC166)部分 

3 把代码B 的键盘部分 复制到  把代码A中  键盘+显示  键盘无效

但是 先调试下  <<2 代码B包括了键盘(HC166)部分 >> 在去调试

<<3 把代码B 的键盘部分 复制到  把代码A中  键盘+显示  键盘无效>>

则键盘和显示都0K  REST后又不行!!!

难道调试的时候 代码下载 只有  部分覆盖???????????










=

使用特权

评论回复
15
avocationA|  楼主 | 2009-2-7 20:10 | 只看该作者

哦! 有可能 是RAM里的 数据 没有清掉???

使用特权

评论回复
16
avocationA|  楼主 | 2009-2-7 20:42 | 只看该作者

TO: 10楼

 洪七公 发表于 2009-2-6 23:13 侃单片机 ←返回版面    

10楼: hc66_data |= 0X01;不如hc66_data ++;
===============================================================

当判断组合键的时候 hc66_data ++;怕不行吧????

使用特权

评论回复
17
洪七公| | 2009-2-8 13:01 | 只看该作者

8楼把俺雷倒了~~~

     for (i=0; i<8; i++) 
     {
          hc66_data <<= 1;
          if(d_dat) 
     hc66_data |= 0X01;//刚开始已经有一位数据在d_dat上

难道
hc66_data <<= 1;
hc66_data |= 0X01;

hc66_data <<= 1;
hc66_data ++;

不一样???和组合键有什么关系,实在把俺雷倒了~~~


avocationA 发表于 2009-2-7 20:42 侃单片机 ←返回版面    

16楼: TO:  10楼 

 洪七公 发表于 2009-2-6 23:13 侃单片机 ←返回版面    

10楼: hc66_data |= 0X01;不如hc66_data ++;
===============================================================

当判断组合键的时候 hc66_data ++;怕不行吧????

 
 

使用特权

评论回复
18
avocationA|  楼主 | 2009-2-8 14:23 | 只看该作者

tu

使用特权

评论回复
19
avocationA|  楼主 | 2009-2-8 14:28 | 只看该作者

是一样的.

使用特权

评论回复
20
avocationA|  楼主 | 2009-2-8 14:29 | 只看该作者

换成 hc66_data ++;是效率高一点吧?

使用特权

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

本版积分规则

123

主题

935

帖子

0

粉丝