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

📄 51

📁 51单片机大量源码
💻
字号:
C51 COMPILER V8.09   S51YK                                                                 07/12/2010 09:54:26 PAGE 1   


C51 COMPILER V8.09, COMPILATION OF MODULE S51YK
OBJECT MODULE PLACED IN s51yk.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE s51yk.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg51.h>
   2          #define c(x) (x*110592/120000) 
   3          
   4          sbit Ir_Pin=P3^7;
   5          sbit beep=P3^6;
   6          
   7          unsigned char code Led_Tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
   8                0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf};                        //共阳极数码显示码0-F.
   9          unsigned char code Led_Sel[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  10          
  11          unsigned char Led_Buf[7]; //显示缓冲区
  12          char Led_Index;                   //位选         
  13          unsigned char Ir_Buf[4]; //用于保存解码结果
  14          
  15          
  16          void delay_50ms(unsigned int t)
  17          {
  18   1              unsigned int j;   
  19   1                      for(;t>0;t--) 
  20   1                              for(j=6245;j>0;j--) 
  21   1                                      {;}
  22   1      }
  23          
  24          //==============================================================
  25          //数码管扫描
  26          timer0() interrupt 1 using 1
  27          {
  28   1              TL0=65536-1000;
  29   1              TH0=(65536-1000)/256; //定时器0设定约1000us中断一次,用于数码管扫描
  30   1              P0=0xff;
  31   1              P2=Led_Sel[Led_Index];                            //位选
  32   1              P0=Led_Tab[Led_Buf[Led_Index]];                    //段选
  33   1              if(++Led_Index>7) 
  34   1                      Led_Index=0;                    //八个扫描完了,到第一个数码管
  35   1      
  36   1      }
  37          //==============================================================
  38          unsigned int Ir_Get_Low()
  39          {
  40   1              TL1=0;
  41   1              TH1=0;
  42   1              TR1=1;
  43   1              while(!Ir_Pin && (TH1&0x80)==0);                
  44   1              TR1=0;           
  45   1              return TH1*256+TL1;
  46   1      }
  47          //=============================================================
  48          unsigned int Ir_Get_High()
  49          {
  50   1              TL1=0;
  51   1              TH1=0;
  52   1              TR1=1;
  53   1              while(Ir_Pin && (TH1&0x80)==0);
  54   1              TR1=0;
  55   1              return TH1*256+TL1;
C51 COMPILER V8.09   S51YK                                                                 07/12/2010 09:54:26 PAGE 2   

  56   1      }
  57          //==============================================================
  58          main()
  59          {
  60   1              unsigned int temp;
  61   1              char i,j;
  62   1              Led_Index=0;
  63   1              TMOD=0x11;
  64   1              TL0=65536-1000;
  65   1              TH0=(65536-1000)/256; //定时器0设定约1000us中断一次,用于数码管扫描
  66   1              EA=1;
  67   1              ET0=1;
  68   1              TR0=1;
  69   1      
  70   1              do{
  71   2                      restart:
  72   2              while(Ir_Pin);
  73   2      
  74   2              temp=Ir_Get_Low();
  75   2              if(temp<c(8500) || temp>c(9500)) 
  76   2                      continue;//引导脉冲低电平9000
  77   2              temp=Ir_Get_High();
  78   2      
  79   2              if(temp<c(4000) || temp>c(5000)) 
  80   2                      continue;//引导脉冲高电平4500
  81   2      
  82   2              for(i=0;i<4;i++){ //4个字节
  83   3                      for(j=0;j<8;j++) //每个字节8位
  84   3                      {
  85   4                              temp=Ir_Get_Low();
  86   4                              if(temp<c(200) || temp>c(800)) goto restart;
  87   4                                      temp=Ir_Get_High();
  88   4      
  89   4                              if(temp<c(200) || temp>c(2000)) goto restart;
  90   4                                      Ir_Buf[i]>>=1;
  91   4      
  92   4                              if(temp>c(1120)) Ir_Buf[i]|=0x80;
  93   4                      }
  94   3              }
  95   2                      Led_Buf[0]=(Ir_Buf[0]/16)&0xf;//显示结果
  96   2                      Led_Buf[1]=Ir_Buf[0]&0xf;          //显示结果
  97   2                      Led_Buf[2]=(Ir_Buf[1]/16)&0xf; //显示结果
  98   2                      Led_Buf[3]=Ir_Buf[1]&0xf;                //显示结果
  99   2                      Led_Buf[4]=(Ir_Buf[2]/16)&0xf; //显示结果
 100   2                      Led_Buf[5]=Ir_Buf[2]&0xf;                //显示结果
 101   2                      Led_Buf[6]=(Ir_Buf[3]/16)&0xf; //显示结果
 102   2                      Led_Buf[7]=Ir_Buf[3]&0xf;                //显示结果
 103   2                      beep=0;
 104   2                      delay_50ms(2);
 105   2                      beep=1;
 106   2              }while(1);
 107   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    507    ----
   CONSTANT SIZE    =     25    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     12       2
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
C51 COMPILER V8.09   S51YK                                                                 07/12/2010 09:54:26 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 + -