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

📄 bh1415.lst

📁 数控调频发生器可在80.0~109.0M范围内任意设置发射频率
💻 LST
字号:
C51 COMPILER V7.00  BH1415                                                                 03/25/2005 11:07:34 PAGE 1   


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

stmt level    source

   1          /*********************************************************************/
   2          //                    BH1415F调频台控制C程序
   3          //                       使用keil C51
   4          //                     2005.3.16通过调试
   5          /*********************************************************************/
   6          //使用AT89C52单片机,12MHZ晶振,用共阳四位LED数码管
   7          //P0口输出段码,P2口扫描
   8          //#pragma src(d:\aa.asm)
   9          #include "reg52.h"
  10          #include "intrins.h"     //_nop_();延时函数用
  11          #define  Disdata    P0   //段码输出口
  12          #define  discan     P2   //扫描口
  13          #define  keyio      P1   //键盘接口
  14          #define uchar unsigned char
  15          #define uint  unsigned int
  16          sbit  DA=P3^0;          //数据输出
  17          sbit  CK=P3^1;          //时钟
  18          sbit  CE=P3^2;          //片选
  19          sbit  DIN=P0^7;         //LED小数点控制
  20          sbit  monolamp=P3^3;    //立体声指示灯
  21          uint   h;                //延时参量
  22          //
  23          //扫描段码表
  24          uchar code dis_7[12]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff,0xbf};
  25          /* 共阳LED段码表     "0"  "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9" "不亮" "-" */                
  26          uchar code  scan_con[4]={0xfe,0xfd,0xfb,0xf7};   // 列扫描控制字
  27          uint  data  f_data={0x00},f_data1;               // 频率数据,数据运算时暂存用
  28          uchar data  display[4]={0x00,0x00,0x00,0x00};    //显示单元数据,共4个数据
  29          uchar bdata condata=0x08;                        //1415控制字高5位,开机为立体声状态
  30          sbit mono=condata^3;                            //单声道/立体声控制位
  31          uchar data  concommand[2],keytemp;               //合成后的2个控制字,键值存放
  32          //
  33          /**********************************************************************/
  34          //
  35          //
  36          /***********11微秒延时函数**********/
  37          //
  38          void delay(uint t)
  39          {
  40   1      for(;t>0;t--);
  41   1      }
  42          //
  43          /***********LED显示动态扫描函数**********/
  44          scan()
  45          {
  46   1      char k;
  47   1          for(k=0;k<4;k++)         //四位LED扫描控制
  48   1           {
  49   2            Disdata=dis_7[display[k]];
  50   2            if(k==1){DIN=0;}
  51   2            discan=scan_con[k];delay(90);discan=0xff;
  52   2           }
  53   1       }
  54          //
  55          //
C51 COMPILER V7.00  BH1415                                                                 03/25/2005 11:07:34 PAGE 2   

  56          /***********频率数据转换为显示用BCD码函数**********/
  57          turn_bcd()
  58          {
  59   1      display[3]=f_data/1000;if(display[3]==0){display[3]=10;}//最高位为0时不显示
  60   1      f_data1=f_data%1000;
  61   1      display[2]=f_data1/100;//求显示十位数
  62   1      f_data1=f_data1%100;
  63   1      display[1]=f_data1/10; //求显示个位数
  64   1      display[0]=f_data1%10; //求显示小数位
  65   1      }
  66          /***********控制字合成函数**********/
  67          command()
  68          {
  69   1      concommand[1]=f_data/256;
  70   1      concommand[0]=f_data%256;
  71   1      concommand[1]=concommand[1]+condata;
  72   1      }
  73          /***********写入1个字节函数**********/
  74          write(uchar val)
  75          {
  76   1      uchar i;
  77   1      CE=1;
  78   1      for(i=8;i>0;i--)
  79   1      {
  80   2      DA=val&0x01;//
  81   2      _nop_();_nop_();_nop_();_nop_();
  82   2      CK=1;
  83   2      _nop_();_nop_();_nop_();_nop_();
  84   2      CK=0;
  85   2      val=val/2;
  86   2      }
  87   1      CE=0;
  88   1      }
  89          /***********控制字写入1415函数**********/
  90          w_1415()
  91          {
  92   1      write(concommand[0]);
  93   1      write(concommand[1]);
  94   1      }
  95          //
  96          //*************频率涮新*****************//
  97          fup()
  98          {
  99   1      turn_bcd();           //显示BCD码转换
 100   1      command();            //合成控制字
 101   1      w_1415();             //写入1415
 102   1      }
 103          //
 104          /***********查键函数**********/
 105          read_key()
 106          {
 107   1      keyio=0xf0;
 108   1      keytemp=(~keyio)&0xf0;
 109   1      if(keytemp!=0)
 110   1      {
 111   2      keytemp=keyio;
 112   2      keyio=0x0f;
 113   2      keytemp=keytemp|keyio;
 114   2      while(((~keyio)&0x0f)!=0);   //
 115   2      switch(keytemp)
 116   2      {
 117   3      case 238:{f_data++;if(f_data>1099){f_data=1099;}fup();break;}//加0.1MHZ
C51 COMPILER V7.00  BH1415                                                                 03/25/2005 11:07:34 PAGE 3   

 118   3      case 222:{f_data--;if(f_data<800){f_data=800;}fup();break;}  //减0.1MHZ
 119   3      case 190:{mono=~mono;if(mono){monolamp=0;}else monolamp=1;fup();break;}//立体声/单声道转换
 120   3      case 126:{f_data=1090;fup();break;}//预置109.0MHZ
 121   3      case 237:{f_data=1070;fup();break;}//预置107.0MHZ
 122   3      case 221:{f_data=1050;fup();break;}//预置105.0MHZ
 123   3      case 189:{f_data=1030;fup();break;}//预置103.0MHZ
 124   3      case 125:{f_data=1000;fup();break;}//预置100.0MHZ
 125   3      case 235:{f_data=970;fup();break;}//预置97.0MHZ
 126   3      case 219:{f_data=950;fup();break;}//预置95.0MHZ
 127   3      case 187:{f_data=930;fup();break;}//预置93.0MHZ
 128   3      case 123:{f_data=900;fup();break;}//预置90.0MHZ
 129   3      case 231:{f_data=870;fup();break;}//预置87.0MHZ
 130   3      case 215:{f_data=850;fup();break;}//预置85.0MHZ
 131   3      case 183:{f_data=830;fup();break;}//预置83.0MHZ
 132   3      case 119:{f_data=800;fup();break;}//预置80.0MHZ
 133   3      default:{break;}//
 134   3      }
 135   2      }
 136   1      keyio=0xff;
 137   1      }
 138          //
 139          //  
 140          //
 141          /**************主函数****************/
 142          main()
 143          {
 144   1      Disdata=0xff;    //初始化端口
 145   1      discan=0xff;
 146   1      keyio=0xff;
 147   1      DA=0;              //bh1415禁止
 148   1      CK=0;              //
 149   1      CE=0;              //
 150   1      for(h=0;h<4;h++){display[h]=8;}//开机显示"8888"
 151   1      for(h=0;h<500;h++)
 152   1         {scan();}          //开机显示"8888"2秒
 153   1      f_data=1000;           //预置1000MHZ
 154   1      monolamp=0;            //开机立体声灯点亮
 155   1      fup();                 //频率送入BH1415
 156   1      while(1)
 157   1       {
 158   2        read_key();         //查键按纽
 159   2        scan();             //显示4ms
 160   2        }
 161   1      }
 162          //
 163          //*********************结束**************************//
 164          
 165          
 166          
 167          
 168          
 169          
 170          
 171          
 172          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    571    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
C51 COMPILER V7.00  BH1415                                                                 03/25/2005 11:07:34 PAGE 4   

   DATA SIZE        =     14    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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