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

📄 anjian.lst

📁 595的应用与仿真 适合学习单片机的看哈
💻 LST
字号:
C51 COMPILER V7.50   ANJIAN                                                                10/25/2007 17:23:22 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE ANJIAN
OBJECT MODULE PLACED IN anjian.OBJ
COMPILER INVOKED BY: D:\常用软件\80C51\KeilC51v750a_Full\KeilC51v750a_Full\安装\C51\BIN\C51.EXE anjian.c DEBUG OBJECTEXT
                    -END

line level    source

   1          #include <reg51.h>
   2          #include <intrins.h>
   3          #define unchar unsigned char
   4          
   5          unsigned char code TAB[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7c,0x39,  
   6                                        0x5e,0x79,0x71}; //proteus里面CC数码管是共阴的
   7          
   8          unchar m,sz[6];
   9          
  10          sbit  SDATA_595 = P3^6 ;       /*串行数据输入14DS*/  
  11          sbit  SCLK_595  = P3^4;       /*移位时钟脉冲11SCH*/
  12          sbit  RCK_595   = P3^5;      /*输出锁存器控制脉冲12STCP*/
  13          
  14          static void  WR_595(unsigned char data num2 )
  15           {
  16   1         unsigned char data count1;
  17   1         
  18   1         for(count1=0;count1<=7;count1++)
  19   1         {
  20   2           if((num2&0x80)==0x80)  /*最高位为1,则向SDATA_595发送1*/
  21   2                  SDATA_595=1;        /*发出数据的最高位*/
  22   2               else  
  23   2                  SDATA_595=0;
  24   2               
  25   2               num2<<=1;         /*右移位*/
  26   2               SCLK_595=0;       /*产生上生沿*/
  27   2               SCLK_595=1;
  28   2          
  29   2              }  
  30   1      
  31   1       }
  32          /*-------------------------------------------------------------------------------
  33                               打开锁存,更新74595输出子程序
  34          ---------------------------------------------------------------------------------*/
  35          static void Out_595(void)
  36           {
  37   1         RCK_595=0;
  38   1         _nop_();
  39   1         _nop_();
  40   1         RCK_595=1;  /*上升沿锁存数据*/
  41   1      
  42   1       }
  43          
  44          //判断键值//
  45          unsigned char k;    //键值判断//
  46          void delay_10ms(void)    //延时//
  47          {
  48   1        unsigned char i,j;
  49   1        for(i=0;i>0;i--)
  50   1        for(j=248;j>0;j--);
  51   1      }
  52          void Getch()
  53          {
  54   1        unsigned char x,y,z;
C51 COMPILER V7.50   ANJIAN                                                                10/25/2007 17:23:22 PAGE 2   

  55   1        P2=0xff;   
  56   1        P2=0x0f;   //先对P2置数,进行行扫描//
  57   1        if(P2!=0x0f)   //判断是否有键按下//
  58   1       {
  59   2         delay_10ms();    //软件延时//
  60   2         if(P2!=0x0f)  //确认是否按下//
  61   2         {
  62   3           x=P2;
  63   3           P2=0xf0;    //列扫描//
  64   3           y=P2;
  65   3           z=x^y;      //用Z取出键值//
  66   3           switch(z)   //判断键值//
  67   3           {
  68   4             case 0x77: k=0; break;   //对按键附值//
  69   4             case 0x7b: k=1; break;  
  70   4             case 0x7d: k=2; break;  
  71   4             case 0x7e: k=3; break;  
  72   4             case 0xb7: k=4; break;  
  73   4             case 0xbb: k=5; break;  
  74   4             case 0xbd: k=6; break;  
  75   4             case 0xbe: k=7; break;  
  76   4             case 0xd7: k=8; break;  
  77   4             case 0xdb: k=9; break;  
  78   4             case 0xdd: k=10;break;  
  79   4             case 0xde: k=11;break;  
  80   4             case 0xe7: k=12;break;  
  81   4             case 0xeb: k=13;break;  
  82   4             case 0xed: k=14;break;  
  83   4             case 0xee: k=15;break;  
  84   4           }
  85   3          }
  86   2         }
  87   1        }
  88           
  89           //显示//
  90          void disp(void)
  91          { 
  92   1      WR_595(TAB[k]);
  93   1      WR_595(0x00);
  94   1       Out_595();
  95   1      
  96   1                      }
  97           
  98          void main(void)   //主程序
  99          {  
 100   1        while(1) 
 101   1       { P2=0x00; 
 102   2         Getch(); 
 103   2              disp();
 104   2        } 
 105   1      }
 106          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    232    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      8    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
C51 COMPILER V7.50   ANJIAN                                                                10/25/2007 17:23:22 PAGE 3   

END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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