⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c51中位运算的分析应用.txt

📁 总结C51中的位运算并分析了其用法
💻 TXT
字号:
汇编的移位操作很容易   RR   RRC   RL   RLC   
      C51中,移出很容易,<<   >>   ;移入操作中的左移入也容易,困难在右移入   
        
  一:IC读写应用   
  typedef   unsigned   char   uchar;       
  typedef   unsigned   int     uint;     
    
  1:送数   
  送两个单独字节的数据的程序,左送   &0x80             右送   &0x01           
                  bit   out;   
                  out   =   low   &   0x01;                   
                  low   >>=   1;   
                  low   |=   (high   &   0x01)<<7;   
                  high   >>=   1;   
                    
      2:取数                           //注意date为测试程序用的数据,实际情况是数据线上的位数据   
  a:如果是先接受高位后接受低位   (i2c总线)   
    
          uchar   i;   
          uchar   temp   =   0;   
          uchar     date   =   0x82;   
          for   (i   =   0;   i   <   8;   i++)                             
          {   
                  temp   <<=   1;                           //左移                       
                  temp   |=   (bit)(date   &   0x80);           
                  date   <<=   1;           
          }   
            
        b:如果是先接受低位,后接受高位     
          uchar   i;   
          uchar   temp   =   0;   
          uchar   date   =   0x82;   
          for   (i   =   0;   i   <   8;   i   ++)     //注意是先取数再移位   
          {                     
                  temp   |=   (bit)(date   &   0x01);   
                  date   >>=   1;                   
                  temp   =   _cror_(temp,1);     
                  //循环右移,应用_cror_()函数需要包含头文件<intrins.h>           
          }   
            
          如果不用_cror_()函数   
          则for循环应该这样写(相当于重写_cror_()函数)   
            
          for   (i   =   0;   i   <   8;   i   ++)//注意是先移位再取数   
          {                   
                  temp   >>=   1;   
                    temp   |=   (date   &   0x01)   <<   7;   
                  date   >>=   1;                         
                    
          }         
            
  三:任意一位的置位或者取反运算       
      置位运算     
  low   |=   0x01;     (置最低位为1)   
        
  取反运算   
                low   |=   ~low   &   0x01;   
    
    
  四:合并和拆分数据   
  1:合并两个单字节数据为一个双字节数据   
          uint   len;   
          uchar   low;   
          uchar   high;   
          Len   |=   high;   
          Len   <<=   8;   
          Len   |=   low;   
  2:   拆分一个双字节数据为两个单字节数据   
          uint   len;   
          uchar   low;   
          uchar   high;   
          low   |=   len;   
          high   |=   len   >>   8; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -