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

📄 bh1415_new.lst

📁 基于单片机的BH1415控制做的调频发射机控制系统源程序
💻 LST
字号:
C51 COMPILER V7.00  BH1415_NEW                                                             09/01/2007 23:04:36 PAGE 1   


C51 COMPILER V7.00, COMPILATION OF MODULE BH1415_NEW
OBJECT MODULE PLACED IN BH1415_new.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE BH1415_new.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #define uchar unsigned char
   2          #define uint  unsigned int
   3          #include "DS89C4xx.h"
   4          #include "BH1415.H"
   5          
   6          //按键定义
   7          sbit key_select=P1^6;//频率位数.选择  也是dat
   8          sbit key_add   =P1^7;//频率值加一       也是clk
   9          
  10          uchar code num[]={ 0x3F,0x06,0x5B,0x4F,
  11                                                           0x66,0x6D,0x7D,0x07,
  12                                                           0x7F,0x6F,0x77,0x7C,
  13                                                           0x39,0x5E,0x79,0x71};
  14          uchar fre[4];   //要设定的四位发射频率,如099.9MHz
  15          uchar key;              //频率的第几位数的选择
  16          bit flag;               //频率是否已更改
  17          uchar count,count2; //count2 用于brind()闪烁函数作延时是否到了的标志
  18                                                            //count 用于标志当前状态,为1则进入了频率设置
  19          
  20          void display(uchar *p);
  21          void delayms(uchar i);
  22          void scankey(void);
  23          void brind();
  24          
  25          //功能: 主程序
  26          void main(void)
  27          {
  28   1              fre[0]=0;
  29   1              fre[1]=9;
  30   1              fre[2]=6;
  31   1              fre[3]=7;
  32   1              en=0;
  33   1              clk=0;
  34   1              //while(1)
  35   1              writefrequency(fre);
  36   1              /////////////////////////////////////////////////////
  37   1              while(1)
  38   1              {
  39   2                      display(fre); //显示四位频率值
  40   2                      scankey();
  41   2                      //-----------------
  42   2                      if(flag==1)
  43   2                      {
  44   3                              writefrequency(fre);
  45   3                              flag=0;
  46   3                      }
  47   2                      //-----------------
  48   2                 if(count==1)//如果处于设置状态则设置位正在闪烁
  49   2                      brind();
  50   2              }
  51   1              /////////////////////////////////////////////////////
  52   1      
  53   1      }
  54          
  55          //功能: 显示四位频率值
C51 COMPILER V7.00  BH1415_NEW                                                             09/01/2007 23:04:36 PAGE 2   

  56          void display(uchar *p)
  57          {
  58   1              if( (((count==1)&&(key!=0)) || (count!=1))&&((*p)!=0) ){
  59   2              P3=0xfe;//数码管位选1
  60   2              P0=num[*(p+0)];
  61   2              delayms(2);
  62   2              P3=0xff;
  63   2        }
  64   1      
  65   1         if( ((count==1)&&(key!=1)) || (count!=1) ){
  66   2              P3=0xfd;//数码管位选2
  67   2              P0=num[*(p+1)];
  68   2              delayms(2);
  69   2              P3=0xff;
  70   2        }
  71   1      
  72   1         if( ((count==1)&&(key!=2)) || (count!=1) ){
  73   2              P3=0xfb;//数码管位选3
  74   2              P0=num[*(p+2)]|0x80;//显示小数点
  75   2              delayms(2);
  76   2              P3=0xff;
  77   2        }
  78   1      
  79   1         if( ((count==1)&&(key!=3)) || (count!=1) ){
  80   2              P3=0xf7;//数码管位选4
  81   2              P0=num[*(p+3)];
  82   2              delayms(2);
  83   2              P3=0xff;
  84   2        }
  85   1      }
  86          
  87          //功能: 选择中的频率位闪烁
  88          void brind()
  89          {
  90   1              uchar i;
  91   1              uchar temp;
  92   1              switch(key)
  93   1              {
  94   2                      case 0:temp=0xfe;break;
  95   2                      case 1:temp=0xfd;break;
  96   2                      case 2:temp=0xfb;break;
  97   2                      case 3:temp=0xf7;break;
  98   2                      default:break;
  99   2              }
 100   1              count2++;
 101   1              if(count2>40)
 102   1         {
 103   2                count2=0;
 104   2           ///////////
 105   2                for(i=20;i>0;i--)
 106   2                {
 107   3                 P3=temp;//数码管位选
 108   3                 P0=num[*(fre+key)];//当前正在操作的数据位闪烁
 109   3                      delayms(2);
 110   3                 P3=0xff;
 111   3                      display(fre);
 112   3                }
 113   2                //////////
 114   2         }
 115   1      }
 116          
 117          //功能: 通用延时程序
C51 COMPILER V7.00  BH1415_NEW                                                             09/01/2007 23:04:36 PAGE 3   

 118          void delayms(uchar i)
 119          {
 120   1              uchar n=10;
 121   1              while(i--)
 122   1              while(n--);
 123   1      }
 124          
 125          //功能: 按键扫描,执行后可能改变的值:flag,key,fre[key]
 126          void scankey(void)
 127          {
 128   1         //数码管位选择按键 key_select
 129   1              if(key_select==0)       //频率位选择
 130   1              {
 131   2                      delayms(5);
 132   2                      if(key_select==0)
 133   2                      {
 134   3                              while(key_select==0)
 135   3                          display(fre); //在按键未松开时进行显示,避免按下不放时没有显示数值
 136   3      
 137   3                              if(count==0) count=1; //这样可以识别key_select这个按键是否是第一次按下
 138   3                                                                                       //也提供了一个count==1的标志给其它函数指示
 139   3                              else
 140   3                              {
 141   4                                  key++;
 142   4                                  if(key>3)
 143   4                                 {
 144   5                                   key=0;
 145   5                                        flag=1;
 146   5                                   count=0;//当最后一位频率值设定后再按此键就标志完成一次频率修改
 147   5                                                               //这样就可以减少一个确定按键的使用
 148   5                                        if((fre[0]==1)&&(fre[1]==2)) fre[2]=fre[3]=0;
 149   5                                 }
 150   4                                       else
 151   4                                       switch(key)
 152   4                                       {
 153   5                                              case 1:if(fre[0]>1) fre[0]=1;break;
 154   5                                              case 2:if((fre[0]==1)&&(fre[1]>=2)) fre[1]=2;
 155   5                                                         else if((fre[0]==0)&&(fre[1]<7)) fre[1]=7;break;
 156   5                                              case 3:if((fre[0]==1)&&(fre[1]==2)) fre[2]=fre[3]=0;break;
 157   5                                              default:break;
 158   5                                       }
 159   4                              }
 160   3                      }
 161   2              }
 162   1      
 163   1              //频率值加一按键 key_add
 164   1              if(key_add==0) //频率值增加
 165   1              {
 166   2                      delayms(5);
 167   2                      if(key_add==0)
 168   2                      {
 169   3                              while(key_add==0) display(fre);
 170   3                              fre[key]++;
 171   3                              if(fre[key]>9) fre[key]=0;
 172   3                              if((key==0)&&(fre[key]>1)) fre[key]=0;
 173   3                      }
 174   2              }
 175   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    616    ----
C51 COMPILER V7.00  BH1415_NEW                                                             09/01/2007 23:04:36 PAGE 4   

   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      7       5
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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