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

📄 main.lst

📁 信号发生器界面菜单程序,有串和并口两种源程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.20   MAIN                                                                  09/10/2005 16:29:02 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN F:\菜单(并行)\MAIN.OBJ
COMPILER INVOKED BY: D:\Program\C51\BIN\C51.EXE F:\菜单(并行)\MAIN.C DB SB OE

line level    source

   1          #include<reg51.h>
   2          #include <stdlib.h>
   3          #include <intrins.h>
   4          #define uchar unsigned char
   5          #define uint unsigned int
   6          #define ulong unsigned long
   7          void lcd_write_ins(uchar i);
   8          sbit data_in=P2^3;
   9          sbit data_clk=P2^4;
  10          sbit comtrol_oe=P2^5;
  11          sbit comtrol_in=P2^6;
  12          sbit comtrol_clk=P2^7;
  13          sbit key_port0=P1^0;
  14          sbit key_port1=P1^1;
  15          sbit key_port2=P1^2;
  16          sbit key_port3=P1^3;
  17          sbit key_port4=P1^4;
  18          sbit lcd_da=P1^5;
  19          sbit lcd_clk=P1^6;
  20          bit main_make=1;
  21          uchar data line[9];
  22          uchar p;
  23          uchar up_down=1;
  24          uchar all=0;
  25          uchar code fre[]={"1.频率调节"};
  26          uchar code am[]={"2.AM幅度调制"};
  27          uchar code pa_sk[]={"3.产生psk,ask"};
  28          uchar code fm[]={"4.FM频率调制"};
  29          uchar code fre_mode_tab1[]={"请输入频率后按确"};
  30          uchar code fre_mode_tab2[]={"定输出或按返回重"};
  31          uchar code fre_mode_tab3[]={"新输入!"};
  32          uchar code fre_mode_tab4[]={"        (Hz)"};
  33          uchar code am_mode_tab1[]={"请选择调制度Ma"};
  34          uchar code am_mode_tab2[]={"10%"};
  35          uchar code pa_sk_mode_tab1[]={"选择ASK/PSK.模式"};
  36          uchar code pa_sk_mode_tab2[]={"  ASK  PSK  "};
  37          uchar code pa_sk_mode_tab3[]={"输入基带序列编码"};
  38          uchar code pa_sk_mode_tab4[]={""};
  39          uchar code fm_mode_tab1[]={"按左右键选择频偏"};
  40          uchar code fm_mode_tab2[]={" 5K  10K"};
  41          uchar code fm_mode_tab3[]={"请输入载波频率"};
  42          uchar code fm_mode_tab4[]={"        (Hz)"};
  43          /******************************送控制DDS_AD9851控制字*************************************/
  44          void rx_74164(unsigned char a)             //通过74164把数据传给FPGA
  45          {unsigned char i;
  46   1      
  47   1       for (i=0;i<8;i++)
  48   1        { a<<=1;  data_in=CY;
  49   2          data_clk=0;
  50   2          data_clk=1;
  51   2          data_clk=0;
  52   2        }
  53   1      }
  54          void comtrol(unsigned char b)
  55          { unsigned char i;
C51 COMPILER V7.20   MAIN                                                                  09/10/2005 16:29:02 PAGE 2   

  56   1      
  57   1         for (i=0;i<8;i++)
  58   1          {b<<=1;comtrol_in=CY;
  59   2           comtrol_clk=0;
  60   2           comtrol_clk=1;
  61   2           comtrol_clk=0;
  62   2          }
  63   1         comtrol_oe=1;
  64   1         comtrol_oe=0;
  65   1         comtrol_oe=1;
  66   1      }
  67          //--------------------------------------------------------------
  68          void send_fre_data(void)
  69          {
  70   1       float y;
  71   1       ulong z;
  72   1       uchar i,b;
  73   1       uchar x0,x1,x2,x3;
  74   1       y=atof(line);
  75   1       z=y*35.7913941;
  76   1       x0=z/16777216;
  77   1       x1=(z%16777216)/65536;
  78   1       x2=((z%16777216)%65536)/256;
  79   1       x3=(((z%16777216)%65536)%256)/1;b=0x0f;
  80   1       comtrol(0x00);
  81   1       rx_74164(x3);
  82   1       lcd_write_ins(0x01);
  83   1       comtrol(0xff);
  84   1       rx_74164(x2);
  85   1        lcd_write_ins(0x01);
  86   1       comtrol(0x02);
  87   1       comtrol(0xff);
  88   1       rx_74164(x1);
  89   1       comtrol(0x03);
  90   1       comtrol(0xff);
  91   1       rx_74164(x0);
  92   1       comtrol(4);
  93   1       comtrol(0xff);
  94   1       rx_74164(1);
  95   1       comtrol(5);
  96   1       comtrol(0xff);
  97   1       comtrol(6);
  98   1       comtrol(7);
  99   1       comtrol(0xff);
 100   1       _nop_();
 101   1      }
*** WARNING C280 IN LINE 72 OF F:\菜单(并行)\MAIN.C: 'i': unreferenced local variable
 102          /**************************以下为液晶显示子程序***********************/
 103          void lcd_delay(void)                       //显示延时1MS
 104          {
 105   1       uint i;
 106   1       for(i=0;i<50;i++);
 107   1       _nop_();
 108   1      }
 109          //------------------------------------发数据
 110          void lcd_send_data(uchar mun)
 111          {
 112   1       uchar i;
 113   1       for(i=0;i<8;i++)
 114   1       {
 115   2          lcd_clk=0;
 116   2        if((mun&0x80)!=0)lcd_da=1;
C51 COMPILER V7.20   MAIN                                                                  09/10/2005 16:29:02 PAGE 3   

 117   2          else lcd_da=0;
 118   2          lcd_clk=1;
 119   2        mun=mun<<1;
 120   2       }
 121   1      }
 122          //-----------------------------------------------写指令
 123          void lcd_write_ins(uchar num)
 124          {
 125   1       uchar hdata,ldata;
 126   1       hdata=num&0xf0;
 127   1       ldata=((num<<4)&0xf0);
 128   1       lcd_send_data(0xf8);
 129   1       lcd_delay();
 130   1       lcd_send_data(hdata);
 131   1       lcd_delay();
 132   1       lcd_send_data(ldata);
 133   1       lcd_delay();
 134   1      }
 135          //-----------------------------------写数据
 136          void lcd_write_da(uchar num)
 137          {
 138   1       uchar hdata,ldata;
 139   1       hdata=num&0xf0;
 140   1       ldata=((num<<4)&0xf0);
 141   1       lcd_send_data(0xfa);
 142   1       lcd_delay();
 143   1       lcd_send_data(hdata);
 144   1       lcd_delay();
 145   1       lcd_send_data(ldata);
 146   1       lcd_delay();
 147   1      }
 148          //-------------------------------------X表示第几个字,Y表示第几行,Z表示字符;
 149          void lcd_show(uchar x,uchar y,uchar *z)
 150          {
 151   1        switch (y)
 152   1        {
 153   2          case 1:lcd_write_ins(0x80+x-1);break;
 154   2          case 2:lcd_write_ins(0x90+x-1);break;
 155   2          case 3:lcd_write_ins(0x88+x-1);break;
 156   2          case 4:lcd_write_ins(0x98+x-1);break;
 157   2              default:break;
 158   2        }
 159   1        while(*z)
 160   1        {
 161   2        lcd_write_da(*z++);
 162   2        }
 163   1       }
 164          //--------------------------------------------
 165          //12864液晶反白子程序
 166          //X第几个字(1~8),Y第几行(1~4行),width反白的宽度(1~16)(单位:字符)
 167          //若width==0则上次反白的位置变为正常显示,若width!=0,上次反白的位
 168          //置变为正常显示,则这次反白的位置反白。
 169          void fan(uchar lcd_x,uchar lcd_y,uchar width)
 170          {
 171   1       uchar xx,yy,i,j;
 172   1       yy=0x80;xx=0x80;       //下半屏绘图区X,y轴地址
 173   1       lcd_write_ins(0x36);        //扩展指令模式,形图开关开
 174   1       for (i=0;i<32;i++)     //上半屏处理显示空白
 175   1       {
 176   2         lcd_write_ins(yy++);lcd_write_ins(xx);
 177   2         for (j=0;j<16;j++)
 178   2         { lcd_write_da(0x00);}
C51 COMPILER V7.20   MAIN                                                                  09/10/2005 16:29:02 PAGE 4   

 179   2       }
 180   1       yy=0x80;xx=0x88;         //下半屏绘图区X,轴地址
 181   1       for (i=0;i<32;i++)     //下半屏处理显示空白
 182   1       {
 183   2         lcd_write_ins(yy++);  lcd_write_ins(xx);
 184   2         for (j=0;j<16;j++)
 185   2         { lcd_write_da(0x00); }
 186   2       }
 187   1       lcd_write_ins(0x30);       //基本指令模式
 188   1      
 189   1      //-------------------------------------------
 190   1       if(width!=0)                  //如果width不等0,则反白选中区域并存此次的参数

⌨️ 快捷键说明

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