main.lst

来自「基于51单片机实现UART通信 SPI通信 和IIC通信」· LST 代码 · 共 146 行

LST
146
字号
C51 COMPILER V8.02   MAIN                                                                  06/01/2008 12:08:12 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: D:\ElectronicTools\KeilC51\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include        <reg52.h>
   2          #include        <intrins.h>
   3          #include        <string.h>
   4          
   5          sbit P0_0=P0^0;
   6          sbit P0_1=P0^1;
   7          sbit P0_2=P0^2;
   8          sbit P0_3=P0^3;
   9          sbit P0_4=P0^4;
  10          sbit P0_5=P0^5;
  11          sbit P0_6=P0^6;
  12          sbit P0_7=P0^7;
  13          
  14          
  15          void Delay_Xms(unsigned char x);
  16          unsigned char  keyscan(void);
  17          
  18          
  19          sfr SPCR = 0xd5;  //SPI控制寄存器 
  20          sfr SPSR = 0xaa;  //SPI状态寄存器 
  21          sfr SPDAT = 0x86; //SPI数据寄存器 */    
  22          
  23          
  24          sbit _cs = P1^4;//spi片选信号
  25           
  26          void main()
  27          {
  28   1              unsigned char key_flag;
  29   1      
  30   1              SPCR = 0x7c;//
  31   1              SPSR = 0x00;
  32   1              
  33   1              RCLK = 0;TCLK=0;
  34   1              TMOD = 0x20;//定时器1 ,模式2,自动加载 
  35   1              TH1  = 0xFD;//设定波特率为9600
  36   1              SCON = 0x50;//模式1
  37   1              IE   = 0x90;; //串行中断允许 
  38   1              TR1 = 1;//启动定时器1 */
  39   1      
  40   1      
  41   1              while(1){
  42   2                      key_flag = keyscan(); 
  43   2                      _cs = 0;
  44   2                      SPDAT =key_flag;
  45   2                      while(SPSR&0x80==0);
  46   2                      SPSR = 0x00;
  47   2                      _cs = 1;
  48   2                      Delay_Xms(20);
  49   2      
  50   2              }
  51   1              
  52   1      }
  53          
  54           //键盘扫描程序  
  55           unsigned char  keyscan(void){                    
C51 COMPILER V8.02   MAIN                                                                  06/01/2008 12:08:12 PAGE 2   

  56   1             unsigned char  co[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
  57   1                 unsigned char m[]={"press keys"},a=0x80,i,sum;
  58   1                 unsigned char v=0; 
  59   1             sum=0;                                           
  60   1        P0=0xFF;
  61   1        P0_0=0;
  62   1          if(P0_4==0){
  63   2          v='0'; co[0]=1;}
  64   1          if(P0_5==0){
  65   2          v='1'; co[1]=1;}
  66   1          if(P0_6==0){
  67   2          v='2'; co[2]=1;}
  68   1          if(P0_7==0){
  69   2          v='3'; co[3]=1;}    
  70   1        P0=0xFF;
  71   1        P0_1=0;
  72   1          if(P0_4==0){
  73   2          v='4'; co[4]=1;}
  74   1          if(P0_5==0){
  75   2          v='5'; co[5]=1;}
  76   1          if(P0_6==0){
  77   2          v='6'; co[6]=1;}
  78   1          if(P0_7==0){
  79   2          v='7'; co[7]=1;}
  80   1       P0=0xFF;
  81   1       P0_2=0;
  82   1          if(P0_4==0){
  83   2          v='8'; co[8]=1;}
  84   1          if(P0_5==0){
  85   2          v='9'; co[9]=1;}
  86   1          if(P0_6==0){
  87   2          v='A'; co[10]=1;}
  88   1          if(P0_7==0){
  89   2          v='B'; co[11]=1;}
  90   1       P0=0xFF;
  91   1       P0_3=0;
  92   1          if(P0_4==0){
  93   2          v='C'; co[12]=1;}
  94   1          if(P0_5==0){
  95   2          v='D'; co[13]=1;}
  96   1          if(P0_6==0){
  97   2          v='E'; co[14]=1;}
  98   1          if(P0_7==0){
  99   2          v='F'; co[15]=1;}           
 100   1       for(i=0;i<16;i++){
 101   2                         sum+=co[i]; 
 102   2                         co[i]=0;  
 103   2                                    }
 104   1         if(sum>1) v=0;
 105   1       return(v);
 106   1      }
 107          
 108          //x取值1~255;
 109          void Delay_Xms(unsigned char x)         
 110          {
 111   1              unsigned int i,j;
 112   1              for(i=0;i<x;i++)
 113   1              for(j=0;j<200;j++)
 114   1              {
 115   2                      _nop_();
 116   2                      _nop_();
 117   2              }
C51 COMPILER V8.02   MAIN                                                                  06/01/2008 12:08:12 PAGE 3   

 118   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    296    ----
   CONSTANT SIZE    =     27    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      28
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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