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

📄 series to p.lst

📁 THE USE OF74LS164 74LS16474LS16474LS16474LS164
💻 LST
字号:
C51 COMPILER V8.09   SERIES_TO_P                                                           03/18/2009 22:53:45 PAGE 1   


C51 COMPILER V8.09, COMPILATION OF MODULE SERIES_TO_P
OBJECT MODULE PLACED IN Series To P.OBJ
COMPILER INVOKED BY: C:\Keil C51\C51\BIN\C51.EXE Series To P.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*本设计主要在按键设计的基础构思而来的,实验74LS164来实现简单的并串转换
   2          大大节省了单片机的IO口线
   3          char bdata  tmp1;
   4          bit tmp2;
   5          ...
   6          tmp2=tmp1^7;这样是取不出tmp1的第七位的
   7          */
   8          #include<reg51.h>
   9          #include<stdio.h>
  10          #include<intrins.h>
  11          #define uchar unsigned char
  12          #define uint unsigned int
  13          #define _Nop_() _nop_()
  14          uchar code ncode[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  15          uchar code ncode_2[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//取位时候用的,分别取到第零位到最高位
  16          sbit P32=P3^2;
  17          sbit P20=P2^0;
  18          sbit P22=P2^2;
  19          sbit P23=P2^3;
  20          sbit P24=P2^4;
  21          
  22          void delay(uint t)
  23          {
  24   1              while(t>1){t--;}
  25   1      }
  26          
  27          unsigned char scan_key()//最通用的4*4键盘扫描程序
  28          {
  29   1         uchar key_1;
  30   1         uchar key_2;
  31   1         
  32   1         P1=0x0f;
  33   1         key_2=P1;
  34   1         key_2&=0x0f;
  35   1         P1=0xf0;
  36   1         key_1=P1;
  37   1         key_1&=0xf0;
  38   1         key_1|=key_2;
  39   1         return(key_1);
  40   1      }
  41          
  42          
  43          void deal_2(uchar i)
  44          {
  45   1              uchar counter=0;
  46   1              uchar a=0x3f;
  47   1              
  48   1              while(counter<8)
  49   1              {               
  50   2                              P20=(bit)(ncode[i]&ncode_2[counter]);//这是该设计的核心部分,在此用了强制类型转换,等效为if(ncode[i]&nc
             -ode_2[counter]!=0)P22=1;else P22=0;
  51   2                              P22=1;//在此要强调一点,先送数据,然后再把CLK拉高
  52   2                              _Nop_();//不管在高电平还是低电平都需要保持一定时间,时间长度根据不同的器件而定
  53   2                              _Nop_();
  54   2                              _Nop_();
C51 COMPILER V8.09   SERIES_TO_P                                                           03/18/2009 22:53:45 PAGE 2   

  55   2                              _Nop_();
  56   2                              _Nop_();
  57   2                              
  58   2                              P22=0;
  59   2                              _Nop_();
  60   2                              _Nop_();
  61   2                              _Nop_();
  62   2                              _Nop_();
  63   2                              _Nop_();
  64   2                              counter++;
  65   2                               
  66   2                               delay(20000);
  67   2                               delay(20000);
  68   2               }
  69   1               P20=0;
  70   1               P24=1;
  71   1               _Nop_();
  72   1               _Nop_();
  73   1               _Nop_();
  74   1               _Nop_();
  75   1               _Nop_();
  76   1               P24=0;
  77   1      }
  78          
  79          
  80          void deal(uchar code_)
  81          {
  82   1          
  83   1              switch(code_)
  84   1              {
  85   2                  case 0xe7:deal_2(0);break;
  86   2                      case 0xeb:deal_2(1);break;
  87   2                      case 0xed:deal_2(2);break;
  88   2                      case 0xee:deal_2(3);break;
  89   2                      case 0xd7:deal_2(4);break;
  90   2                      case 0xdb:deal_2(5);break;
  91   2                      case 0xdd:deal_2(6);break;
  92   2                      case 0xde:deal_2(7);break;
  93   2                      case 0xb7:deal_2(8);break;
  94   2                      case 0xbb:deal_2(9);break;
  95   2               }
  96   1               
  97   1      }
  98          
  99          void in_i(void) interrupt 0 using 0
 100          {
 101   1          uchar t;
 102   1              EA=0;
 103   1              t=200;
 104   1              while(t--);
 105   1              if(P32){EA=1;return;}
 106   1              deal((scan_key()));
 107   1              P1=0xf0;
 108   1              EA=1;
 109   1              return ;
 110   1      }
 111          
 112          void main()
 113          {
 114   1          P1=0xf0;
 115   1              P20=0;
 116   1              P22=0;
C51 COMPILER V8.09   SERIES_TO_P                                                           03/18/2009 22:53:45 PAGE 3   

 117   1              P23=0;
 118   1              P24=0;
 119   1              _Nop_();
 120   1              _Nop_(); 
 121   1              _Nop_();
 122   1              _Nop_();
 123   1              _Nop_();
 124   1              _Nop_();
 125   1              P23=1;
 126   1              EX0=1;
 127   1              IT0=1;
 128   1              EA=1;
 129   1              while(1);
 130   1      }
 131          
 132          
 133          
 134          
 135          
 136          
 137          
 138          
 139          
 140          
 141          
 142          
 143          
 144          
 145          
 146          
 147          
 148          
 149          
 150          
 151          
 152          
 153          
 154          
 155          
 156          
 157          
 158          
 159          
 160          
 161          
 162          
 163          
 164          
 165          
 166          
 167          
 168          
 169          
 170                          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    266    ----
   CONSTANT SIZE    =     18    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       1
C51 COMPILER V8.09   SERIES_TO_P                                                           03/18/2009 22:53:45 PAGE 4   

   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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