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

📄 dig_func.lst

📁 8051单片机结合BU2614的PLL程序
💻 LST
字号:
C51 COMPILER V8.02   DIG_FUNC                                                              06/07/2008 19:32:59 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE DIG_FUNC
OBJECT MODULE PLACED IN dig_func.OBJ
COMPILER INVOKED BY: C:\keil c51\C51\BIN\C51.EXE dig_func.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "c8051f020.h"
   2          #include "lcd.h"
   3          #include "digital_radio.h"
   4          //#include "string.h"
   5          
   6          #define T_3MS 0xf533    //定时器延时3ms(system clock=22118400/2,定时器12分频)
   7          #define T_0_8MS 0xfd1f  //定时器延时0.8ms(system clock=22118400/2,定时器12分频)
   8          #define CONFIG_2614 0x8300
   9          
  10          sbit CLK_2614  = P2^0;
  11          sbit DATA_2614 = P2^1;
  12          sbit EN_2614   = P2^2;
  13          
  14          extern unsigned char code tble[10]={48,49,50,51,52,53,54,55,56,57};//0-9 ascii code
  15          
  16          static bit Head_ok=0,Got=0;      //head_ok=1:帧头正确,got=1:收齐四字节
  17          
  18          static unsigned char val[4]=0;//四字节的红外键值
  19          
  20          
  21          void Timer3_Init()
  22          {
  23   1          TMR3CN   &=0xfb;    //关定时器3
  24   1          TMR3RL    = T_3MS;  //延时3ms
  25   1          TMR3      = T_3MS;
  26   1      }
  27          
  28          unsigned char   Wait_infrared()
  29          {               
  30   1                      unsigned char  keyvalue;
  31   1                  
  32   1            while(!Got);
  33   1            if(val[2]+val[3]==0xff)
  34   1            keyvalue=val[2];
  35   1            Got=0;
  36   1                      
  37   1                      return(keyvalue);       
  38   1      }
  39          
  40          /*即时输出并取出按键的实值*/
  41          /* void Get_Letter(unsigned char x,unsigned char y,unsigned char *letter)
  42          {
  43                  unsigned char m,ascii,temp;
  44                  unsigned char *let=letter;
  45                  for(m=0;m<7;m++) letter[m]=0;
  46                  clear1line(x);
  47                  LCD_Goto(x,y);
  48                  Delay1us(40);
  49                  for(m=0;m<5;m++)
  50                  {
  51                                  
  52                                  temp=Wait_infrared();
  53          
  54                                  ascii=tbel[temp];               
  55                                  if(temp==0x15)
C51 COMPILER V8.02   DIG_FUNC                                                              06/07/2008 19:32:59 PAGE 2   

  56                                  {
  57                                   clear1line(x);
  58                                   let-=1;
  59                                   *let='\0';
  60                                   LCD_Printf(x, y,letter);
  61                                  }
  62                                  else if(temp==0x14)     
  63                                  {
  64                                          *let='\0';
  65                                          break;
  66                                  }
  67                                  else if(ascii!=0x21)                    
  68                                  {
  69                                       clear1line(x);
  70                                           *let=ascii;
  71                                       LCD_Printf(x, y,letter);                           //向LCD发送
  72                                           let++;
  73                                   }
  74                  }
  75           } */
  76          
  77           void One_float_Dis(unsigned char x,unsigned char y,float flt_data)
  78           {
  79   1        unsigned char dec_data,dec[3],dp_data,i,temp_dec;
  80   1        temp_dec=dec_data=(unsigned char)flt_data;
  81   1        for(i=0;i<3;i++) 
  82   1           {
  83   2                dec[2-i]=dec_data%10;
  84   2                dec_data=dec_data/10;
  85   2               }
  86   1        if(dec_data<100) i=1;
  87   1        else i=0;
  88   1        LCD_Goto(x,y);
  89   1        for(;i<3;i++)  LCD_WriteData(tble[dec[i]]);
  90   1        Delay1us(40);
  91   1        LCD_WriteData(0x2e);
  92   1        dp_data=(unsigned char)((flt_data-temp_dec+0.01)*10);
  93   1        LCD_WriteData(tble[dp_data]);
  94   1       }
  95          
  96          void clear1line(unsigned char j)
  97          {
  98   1       unsigned char i;
  99   1       LCD_Goto(j,1);
 100   1       for(i=0;i<16;i++) LCD_WriteData(0x20);
 101   1       Delay1ms(1);
 102   1      }
 103          
 104          void Radio_Send(unsigned int num)
 105          {
 106   1       unsigned int conf=CONFIG_2614;
 107   1       unsigned char i,j,d;
 108   1       bit flag=0;
 109   1       CLK_2614=EN_2614=1;
 110   1       DATA_2614=1;
 111   1       for(d=0;d<200;d++) conf=num;
 112   1       for(j=0;j<2;j++)
 113   1        { 
 114   2         for(i=0;i<32;i++)
 115   2          {
 116   3           CLK_2614=~CLK_2614;
 117   3           if(flag==0) 
C51 COMPILER V8.02   DIG_FUNC                                                              06/07/2008 19:32:59 PAGE 3   

 118   3             {
 119   4                  DATA_2614=0x0001&conf;
 120   4                  conf=conf>>1;
 121   4                 }
 122   3               for(d=0;d<200;d++);
 123   3               flag=~flag;
 124   3           }
 125   2           conf=CONFIG_2614;
 126   2          }
 127   1       for(d=0;d<100;d++);
 128   1       EN_2614=0;
 129   1       for(d=0;d<200;d++) conf=CONFIG_2614;
 130   1      }
 131          
 132          
 133          void ex_interrupt() interrupt 19         //下降沿中断,收到低电平开始 
 134          {
 135   1      
 136   1      if(!Head_ok)
 137   1       {
 138   2       EIE2&=0xdf;//关中断7
 139   2        P3IF&=0x7f;//清中断7的中断标志
 140   2        Timer3_Init();//定时器3初始化
 141   2        TMR3CN|=0x04;  //开定时器3
 142   2        }
 143   1       else 
 144   1       {
 145   2        while(P37==0&&TMR3CN<0x80);  //等待变高
 146   2        if(TMR3CN<0x80)
 147   2        {
 148   3         P3IF&=0x7f;//清中断7的中断标志 
 149   3         TMR3      = T_0_8MS;//延时0.8ms
 150   3         TMR3CN|=0x04;  //开定时器3
 151   3        }
 152   2       }
 153   1      }
 154          
 155          void T3_inter() interrupt 14
 156          {
 157   1        static unsigned char i=0,n=0;
 158   1        static bit h=0; 
 159   1        unsigned int v;
 160   1        TMR3CN&=0x7f;  //清中断标志
 161   1      
 162   1       if(Head_ok==0&&h==0&&P37==0) h=1; //开始后第一个3ms处应为低
 163   1       else if(Head_ok==0&&h==1&&P37==1) // 开始后第二个3ms处应为高
 164   1       {
 165   2        EIE2|=0x20; //开中断7
 166   2        TMR3CN&=0xfb; //关定时器3
 167   2        h=0;Head_ok=1;return;
 168   2       }
 169   1       else if(Head_ok)
 170   1         {
 171   2            TMR3CN&=0xfb;     //关定时器3
 172   2            n=i++/8;
 173   2          if(P37)                                      //每0.8ms读一次数据
 174   2              {
 175   3               val[n]=val[n]>>1;
 176   3               val[n]|=0x80;
 177   3              }
 178   2          else 
 179   2               val[n]=val[n]>>1;
C51 COMPILER V8.02   DIG_FUNC                                                              06/07/2008 19:32:59 PAGE 4   

 180   2      //       n=++i/8;
 181   2          if(i==32)
 182   2             {
 183   3              i=0;n=0;Head_ok=0;
 184   3              EIE2&=0xdf;//关中断7
 185   3              for(v=0;v<60000;v++);    //避开重复码
 186   3              EIE2|=0x20; //开中断7
 187   3              Got=1;
 188   3             }
 189   2          } 
 190   1       else           //还原为最原始状态
 191   1       {
 192   2        EIE2|=0x20;//开中断7
 193   2        Timer3_Init();
 194   2        h=0;Got=0;Head_ok=0;
 195   2       } 
 196   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    571    ----
   CONSTANT SIZE    =     10    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      6      12
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      3       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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