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

📄 key.lst

📁 全数字高清电视数字调谐器
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.01  KEY                                                                    08/17/2003 17:24:41 PAGE 1   


C51 COMPILER V7.01, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN .\key.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE .\key.c LARGE MODDP2 DEBUG OBJECTEXTEND

stmt level    source

   1          #include <w77e58.h>
   2          #include <stdio.h>
   3          #include "struct.h"
   4          #include "china_ch.h"
   5          #include<intrins.h>
   6          
   7          #define ch_64 128//存储频道地址
   8          #define ch_cun 10//存储总频道数地址
   9          
  10          #define DEBUG 1
  11           char menu_cr1;//菜单位置1
  12           char menu_cr2;//菜单位置2
  13           
  14          
  15          unsigned char chanle;//当前使用频道值
  16          unsigned char chan_le;//存储总频道数
  17           extern unsigned char pos;//当前节目
  18           extern unsigned char sound;//当前节目声音中频
  19           extern unsigned char tv_av;//tv/av
  20           extern unsigned char slep;//静音
  21           extern unsigned char band;////波段 
  22          
  23          void daya1(unsigned long i);
  24          extern void menu_main( char r);
  25          extern void av_menu( char r);//tv/av1/av2/av3
  26          extern void vol_main( char r);//
  27          extern void vol_av( char r);
  28          extern void jintu(unsigned int r,unsigned int l,
  29                            unsigned int h, unsigned int op);//进度条
  30                            
  31          extern void osd_start0();
  32          extern void osd_start1();
  33          extern void osd_start2();//无信号时  小字符
  34          extern void osd_start3();//有信号时 小字符
  35          
  36          extern void delay1(unsigned int i);
  37          extern void wirte_24c64(unsigned int address,unsigned char fb[],unsigned char su);
  38          extern void wirte_24c64a(unsigned int address,unsigned char fb);
  39          extern void read_24c64(unsigned int address,unsigned char fb[],unsigned char su);//多字节读
  40          extern unsigned char i2c_reada(unsigned int address);//单字节读
  41          extern void tuning_start();//调谐器初始化
  42          extern void tuning_freq(tv ch);//调到频道
  43          extern void tda9886_set(av sou);
  44          void  ret_ch(ret_s dv,unsigned char xh);//保存有信号频道
  45          void tuning_cun(unsigned char i);//调谐到预定频道
  46          
  47          void key_menu();
  48          bit key1();//菜单
  49          bit key2();//-
  50          bit key3();//+
  51          bit key4();//开关机
  52          
  53          extern bit pal_ntsc();
  54          extern bit p_n;//P/N标志
  55          extern void osd_starta();
C51 COMPILER V7.01  KEY                                                                    08/17/2003 17:24:41 PAGE 2   

  56          extern void osd_startb();
  57          extern void tongxin_rxd();//接收下传命令
  58          void tune_a();//进入自动选台
  59          void tune_b();//进入手动选台 
  60          void  weitiao();//进入微调
  61          void  exit();//退出菜单
  62          void band_s();//波段
  63          void vol_off();//进入静音 
  64          void posa();//节目
  65          void sound_select();//进入声音中频调节
  66          void tv_av_select();//进入TV/AV1/AV2
  67          
  68          
  69          
  70          
  71          sbit key1_menu=P3^4;
  72          sbit key2_up=P3^5;
  73          sbit key3_np=P3^6;
  74          sbit key4_pow=P3^7;
  75          sbit signal= P1^2;//信号检测
  76          
  77          void key_menu()
  78          {
  79   1      if(key1())//进入1级设置菜单--图象
  80   1           {  menu_cr1=0;//菜单位置1
  81   2               menu_cr2=0;//菜单位置2          
  82   2               chanle=0;
  83   2               if(signal) 
  84   2               {
  85   3               pal_ntsc();
  86   3               if(p_n)
  87   3               osd_start3();
  88   3               else osd_startb();
  89   3               }
  90   2               else osd_start2();
  91   2               
  92   2               menu_main(0);//显示菜单
  93   2               vol_main(0);
  94   2                jintu(chanle,china_ch.vhf_l,china_ch.vhf_h,china_ch.opn);
  95   2               #if(DEBUG)
  96   2               printf("菜单 1\n");
  97   2               #endif
  98   2              while(1)
  99   2                  {             
 100   3                       if(key3())//+
 101   3                         { 
 102   4                         menu_cr1++;
 103   4                         if(menu_cr1>4)
 104   4                            menu_cr1=0;
 105   4                            menu_main(menu_cr1);
 106   4                            vol_main(menu_cr1);
 107   4                            jintu(chanle,china_ch.vhf_l,china_ch.vhf_h,china_ch.opn);
 108   4                         }
 109   3                       if(key2())//-
 110   3                          {
 111   4                           menu_cr1--;
 112   4                          if(menu_cr1<0)
 113   4                             menu_cr1=4;
 114   4                              menu_main(menu_cr1);
 115   4                             vol_main(menu_cr1);
 116   4                             jintu(chanle,china_ch.vhf_l,china_ch.vhf_h,china_ch.opn);
 117   4                          }       
C51 COMPILER V7.01  KEY                                                                    08/17/2003 17:24:41 PAGE 3   

 118   3                          
 119   3                      if(key4())//选择运行调节
 120   3                        { 
 121   4                         switch(menu_cr1)
 122   4                            {    
 123   5                              case 0:  posa();break;//节目
 124   5                              case 1:  band_s();break;//波段
 125   5                              case 2:  tune_a();exit();return;//进入自动选台
 126   5                                                    break;
 127   5                              case 3:  tune_b();  break;//  进入手动选台                 
 128   5                              case 4:  weitiao();//进入微调
 129   5                                                    break;                     
 130   5                              default:;                   
 131   5                             }    
 132   4                           }
 133   3                          
 134   3                          /**********************/
 135   3                        if(key1())//第2级菜单
 136   3                           {
 137   4                              if(signal) 
 138   4                                 {
 139   5                                  pal_ntsc();
 140   5                                  if(p_n)
 141   5                                    osd_start3();
 142   5                                  else osd_startb();
 143   5                                 }
 144   4                            else osd_start2();
 145   4                            av_menu(0);
 146   4                            vol_av(0);
 147   4      
 148   4                            while(1)
 149   4                            {
 150   5                              if(key3())//+
 151   5                                  { 
 152   6                                    menu_cr2++;
 153   6                                    if(menu_cr2>2)
 154   6                                         menu_cr2=0;
 155   6                                   av_menu(menu_cr2);
 156   6                                   vol_av(menu_cr2);
 157   6                                  }
 158   5                              if(key2())//-
 159   5                                  {
 160   6                                    menu_cr2--;
 161   6                                   if(menu_cr2<0)
 162   6                                       menu_cr2=2;
 163   6                                   av_menu(menu_cr2);
 164   6                                   vol_av(menu_cr2);
 165   6                                    }   
 166   5                              if(key4()) 
 167   5                                {
 168   6                                switch(menu_cr2)
 169   6                                    {                    
 170   7                                       case 0:  sound_select();//进入声音中频调节
 171   7                                                                            break;
 172   7                                       case 1:  tv_av_select();//进入TV/AV1/AV2
 173   7                                                                            break;
 174   7                                       case 2:  vol_off();//进入静音    
 175   7                                                                            break;                              
             -                          
 176   7                                      default:;                    
 177   7                                    }
 178   6                                 }   
C51 COMPILER V7.01  KEY                                                                    08/17/2003 17:24:41 PAGE 4   

 179   5                                if(key1())//退出菜单
 180   5                                    {
 181   6                                     exit();
 182   6                                     return;
 183   6                                     }
 184   5                             }
 185   4                           }
 186   3                           /**********************/
 187   3      
 188   3                           
 189   3                       }
 190   2                                       
 191   2               }       
 192   1         }
 193          
 194          void tune_a()//进入自动选台
 195          {   
 196   1        unsigned char i;
 197   1        unsigned int h;
 198   1        tv ac;  
 199   1        ret_s hv;
 200   1        av as;
 201   1        
 202   1        chanle=0;
 203   1        chan_le=0;//储存频道数清除
 204   1        as.f_vif=china_ch.pic_if;
 205   1        as.off_audio=slep;
 206   1        as.sound_freq=sound; 
 207   1        tda9886_set(as);
 208   1      for(i=0;i<china_ch.opn;i++)
 209   1          {      
 210   2            jintu(i,china_ch.vhf_l,china_ch.vhf_h,china_ch.opn);
 211   2         ac.f_if2=china_ch.cen_if2;
 212   2         ac.f_step=china_ch.fsteps;
 213   2         ac.fif_bw=china_ch.f_ifbwith;
 214   2         ac.rf=china_ch.chan[i].cennter_freq;   
 215   2        tuning_freq(ac);//调到频道
 216   2        daya1(10000);
 217   2         #if(DEBUG)
 218   2         h=i;
 219   2          printf("自动选台 i=%u\n",h);
 220   2       
 221   2               #endif
 222   2        if(signal)
 223   2               {
 224   3               if(pal_ntsc())
 225   3                      {
 226   4                       hv.country=1;
 227   4                       hv.chh=i;
 228   4                       hv.sound_freqf=sound;
 229   4                         
 230   4                       hv.rff=china_ch.chan[i].cennter_freq;
 231   4                       hv.low_freqf=china_ch.chan[i].low_freq;
 232   4                       hv.up_freqf=china_ch.chan[i].up_freq;
 233   4                       
 234   4                       hv.pic_if=china_ch.pic_if;
 235   4                       hv.f_iff2=china_ch.cen_if2;               
 236   4                       hv.fif2_bw=china_ch.f_ifbwith;   
 237   4                       hv.f_stepf=china_ch.fsteps;
 238   4                       ret_ch(hv,chanle);//保存有信号频道
 239   4                        #if(DEBUG)               
 240   4                     printf("有信号 i=%u,中心频率=%f\n",h,hv.rff);
C51 COMPILER V7.01  KEY                                                                    08/17/2003 17:24:41 PAGE 5   

 241   4       
 242   4                        #endif
 243   4                       chanle++;
 244   4                       }
 245   3               }
 246   2                }
 247   1                chan_le=chanle;
 248   1               wirte_24c64a(ch_cun,chan_le);//保存有信号总频道数        
 249   1               chanle=0;
 250   1               tuning_cun(chanle);//调谐到预定频道   
 251   1      
 252   1      
 253   1        #if(DEBUG)
 254   1               printf("自动选台完成\n ");
 255   1               #endif
 256   1      }
 257          
 258          void tune_b()//进入手动选台 
 259          {
 260   1       unsigned char i;
 261   1       unsigned int f;
 262   1       tv ac;
 263   1       i=0;
 264   1      while(1)
 265   1      {
 266   2       if(key3())//+
 267   2         {
 268   3         i++;
 269   3         if(i>china_ch.opn)
 270   3            i=0;
 271   3         jintu(i,china_ch.vhf_l,china_ch.vhf_h,china_ch.opn);
 272   3         ac.f_if2=china_ch.cen_if2;
 273   3         ac.f_step=china_ch.fsteps;
 274   3         ac.fif_bw=china_ch.f_ifbwith;
 275   3         ac.rf=china_ch.chan[i].cennter_freq;
 276   3         tuning_freq(ac);//调到频道 
 277   3          
 278   3        #if(DEBUG)
 279   3        f=i;
 280   3               printf("手动选台 i=%u, 中心频率=%f\n",f,china_ch.chan[i].cennter_freq);
 281   3               #endif
 282   3         }
 283   2       if(key2())//-
 284   2         {  
 285   3         i--;  
 286   3          if(i>china_ch.opn)
 287   3            i=china_ch.opn;
 288   3        jintu(i,china_ch.vhf_l,china_ch.vhf_h,china_ch.opn);
 289   3        ac.f_if2=china_ch.cen_if2;
 290   3         ac.f_step=china_ch.fsteps;
 291   3         ac.fif_bw=china_ch.f_ifbwith;
 292   3         ac.rf=china_ch.chan[i].cennter_freq;
 293   3        tuning_freq(ac);//调到频道
 294   3        #if(DEBUG)
 295   3               f=i;
 296   3               printf("手动选台 i=%u, 中心频率=%f\n",f,china_ch.chan[i].cennter_freq);
 297   3               #endif
 298   3         }
 299   2        if(key4())
 300   2         return;
 301   2         }
 302   1        }
C51 COMPILER V7.01  KEY                                                                    08/17/2003 17:24:41 PAGE 6   

 303          void  weitiao()//进入微调
 304            { 
 305   1        av as;
 306   1      #if(DEBUG)
 307   1               printf("key 3\n");

⌨️ 快捷键说明

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