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

📄 xinhao.lst

📁 计算实用教程adadad9851实用教程
💻 LST
📖 第 1 页 / 共 4 页
字号:
C51 COMPILER V7.06   XINHAO                                                                05/24/2007 21:19:42 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE XINHAO
OBJECT MODULE PLACED IN D:\MYDOCU~1\AD9851~1\XINHAO.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE D:\MYDOCU~1\AD9851~1\XINHAO.C DB SB OE

stmt level    source

   1          #include <reg52.h>
   2          #include <math.h>
   3          #include <stdio.h>
   4          #include <absacc.h>
   5          
   6          #define KEY      XBYTE[0x8000]
   7          #define DATAPORT XBYTE[0xb000]  //点阵数据口地址
   8          #define COMPORT  XBYTE[0xb200]  //点阵命令口地址
   9          #define FRE1_A XBYTE [0x9000]   //频率控制字一正弦波,调幅载波,FSK载波f1,ASK,PSK载波
  10          #define FRE1_B XBYTE [0x9001]
  11          #define FRE1_C XBYTE [0x9002]
  12          #define FRE1_D XBYTE [0x9003]
  13          #define FRE2_A XBYTE [0x9005]    //频率控制字二 FSK载波f2
  14          #define FRE2_B XBYTE [0x9006]
  15          #define FRE2_C XBYTE [0x9007]
  16          #define FRE2_D XBYTE [0x9008]
  17          #define MODE  XBYTE  [0x9004]     //功能切换控制:1.AM 与 Sin  2.FM  3.ASK 4.FSK 5.PSK
  18          #define DDS_D0 XBYTE [0xc000]     //AM调制波控制字
  19          #define DDS_D1 XBYTE [0xc001]
  20          #define DDS_D2 XBYTE [0xc002]
  21          #define DDS_D3 XBYTE [0xc003]
  22          #define DA0832 XBYTE [0xd000]     //AM调制波幅度控制端口
  23          
  24          #define uchar unsigned char
  25          #define uint  unsigned int
  26          #define ulong unsigned long int
  27          
  28          #define NUM 18
  29          /**************************************/
  30          /***************公用子程序声明***********************/
  31          void Init_Int(void);             //中断初始化
  32          void Delay(uint Time);           //延时子程序
  33          void L_delay(uchar T);           //长时间延时程序
  34          void Datas_dis(ulong Datas,uchar P_str,uchar P_end,uchar P_pon);//数字送显程序
  35          void Chars_dis(uchar *s);             //一整行英文字符显示送显程序
  36          void Chars_dis_s(uchar str,uchar end,uchar *s);   //更改一行中的几个字符
  37          void Out_data(uchar dat);             //向点阵数据口发数据
  38          void Check(void);                     //检查点阵读写状态
  39          void Out_com(uchar com);              //写一个命令
  40          void Out_data_com(uchar dat1,uchar com1);//写一个数据和一个命令
  41          void Out_data2_com(uchar dat1,uchar dat2,uchar com1);//写两个数据和一个命令
  42          void Init_Dian(uchar l);              //点阵初始化 8:8*8字符, 6:6*8字符
  43          void Clear_Dian(uchar a);             //字符和图形显示清屏
  44          void Dis_line(uchar Line_num);        //点阵显示一行字符
  45          /**************功能子程序声明************/
  46          void DDS(ulong F);                       //DAC0800 DDS程序
  47          void AD9851_DDS(ulong frequence);        //AD9851 单频或AM模式
  48          void AD9851_FSK(ulong f1,ulong f2);
  49          /*
  50          void AD9851_FSK(ulong f1,ulong f2,ulong fsk);//fsk
  51          void AD600_WR(uint kp);               //AD600增益控制电压输出设置程序
  52          void OFFSET_WR(uchar kk);             //调制深度设置程序
  53          void AMPL_WR(uint la);                //DAC0800 幅度控制程序 */
  54          
  55          void Manu0_Dis(void);                 //0层菜单显示程序
C51 COMPILER V7.06   XINHAO                                                                05/24/2007 21:19:42 PAGE 2   

  56          void Freq_Dis(ulong ff);              //频率显示程序
  57          void Ampl_Dis(uint aa);               //幅度显示程序
  58          void Manu1_Dis(void);                 //1层菜单显示程序
  59          void Manu2_Dis(void);                 //2层菜单显示程序
  60          void Manu3_Dis(void);                 //3层菜单显示程序
  61          void Manu4_Dis(void);                 //4层菜单显示程序
  62          void Manu5_Dis(void);                 //5层菜单显示程序
  63          void Manu6_Dis(void);                 //6层菜单显示程序
  64          void Input_Dis(void);                 //输入缓冲显示
  65          
  66          /***********************************************************/
  67          ulong FREQ1=0;
  68          ulong FREQ2=0;
  69          ulong FSK=0;
  70          uchar DEEP=0;
  71          uint  AMP1=0;
  72          uint  AMP2=0;
  73          ulong Input_Temp=0;
  74          uchar Point=0;
  75          uchar Step=0;
  76          uint C_V=0;
  77          
  78          sbit ET_SIX=P1^7;                      //点阵字符大小选择,1:8*8  0:6*8
  79          sbit XSK_AM=P1^4;                     // 数字调制或调幅
  80          sbit MD_SIN=P1^2;               //正弦或调制 ,0:正弦,1:调制信号
  81          sbit FIVE_TEN=P1^3;                   //10K/5K最大角频偏选择  1:5K   ,0:10K
  82          sbit PSK_ASK=P1^1;                    //PSK/ASK选择  1:ASK  0:PSK
  83          
  84          uchar ten_five=0;                       //最大频偏标志位
  85          uint amp;
  86          /********************************/
  87          /*   程序状态转换               */
  88          /*  0:根菜单显示状态            */
  89          /*  1:正弦输出静态模式          */
  90          /*         11:频率设定          */
  91          /*         12:幅度设定          */
  92          /*                              */
  93          /*  2:AM输出静态模式            */
  94          /*         21:载波频率设定      */
  95          /*         22:调制深度设定      */
  96          /*                              */
  97          /*  3:FSK输出静态模式           */
  98          /*         31:载波频率设定      */
  99          /*         32:幅度设定          */
 100          /*         33:跳变频率设定      */
 101          /*         34:FSK跳变频率设定   */
 102          /*  4:FM输出静态模式            */
 103          /*         41:中心频率设定      */
 104          /*         42:幅度设定          */
 105          /*         43:频偏选择          */
 106          /*  5:PSK输出静态模式           */
 107          /*  6:ASK输出静态模式           */
 108          /********************************/
 109          
 110          /****************特殊存储区*****************/
 111          /*****************************/
 112          uchar Disp_Buff[21];                 //显示缓冲区
 113          /*****************************/
 114          
 115          /*****************************/
 116          /**********中   断   设   定***********************/
 117          /**********************************************************************/
C51 COMPILER V7.06   XINHAO                                                                05/24/2007 21:19:42 PAGE 3   

 118          void Init_Int(void)
 119          {
 120   1         EX0=1;   //开外部中断0
 121   1         IT0=1;   //边沿触发
 122   1         EX1=1;   //开外部中断1
 123   1         IT1=1;   //边沿触发
 124   1         EA=1;    //开全局中断
 125   1      }
 126          
 127          /**********************************************************************/
 128          /****************数据显示程序******************/
 129          /*Datas:The data to be displayed;P_str:Starting display position;
 130            P_end:Ending display position; P_pon:Point display position;
 131            以上所述显示位置均为LCD上的绝对位置。
 132            P_end比P_pon小1,则无小数点,按整数方式显示,以此方式显示时不能显示到显示屏的最右边一位;
 133            所有的整型都化成ulong后送显,小数以整数表示以减少代码量   */
 134          void Datas_dis(ulong Datas,uchar P_str,uchar P_end,uchar P_pon)
 135          {
 136   1        ulong d_t;
 137   1      
 138   1        for(d_t=1;P_end>=P_str;P_end--)
 139   1          {
 140   2            if(P_end==P_pon)
 141   2              {
 142   3                Disp_Buff[P_end]='.';
 143   3              }
 144   2            else
 145   2              {
 146   3                Disp_Buff[P_end]=(Datas/d_t>0)?0x30+((Datas/d_t)%10):((P_end<P_pon-1)?0x20:0x30);
 147   3                d_t=d_t*10;
 148   3              }
 149   2          }
 150   1      }
 151          /***************字符显示程序*******************/
 152          /*整体刷以便显示缓冲区,在Data_dis();之前使用,将要显示数字的位用空格填充,
 153            用其他符号填充也可。
 154            入口为字符串首地址                                                    */
 155          void Chars_dis(uchar *s)
 156          {
 157   1        uchar w;
 158   1        for(w=0;w<21;w++)
 159   1          Disp_Buff[w]=s[w];
 160   1      }
 161          /************************************************************************/
 162          /****************更改一行中的几个字符子程序***********/
 163          void Chars_dis_s(uchar str,uchar end,uchar *s)
 164          /*S为要替换的字符,uchar str 为起始地址,uchar end 为结束地址*/
 165          {
 166   1        uchar w;
 167   1        for(w=0;str<=end;str++,w++)
 168   1            Disp_Buff[str]=s[w];
 169   1      }
 170          /******************软件延时子程序***************************************/
 171          /***********************************************************************/
 172          void Delay(uint Time)
 173          {
 174   1         while(Time--);    //软件短时间延迟
 175   1      }
 176          /***********************************************************************/
 177          void L_delay(uchar T)
 178          {
 179   1        uchar o;
C51 COMPILER V7.06   XINHAO                                                                05/24/2007 21:19:42 PAGE 4   

 180   1        for(o=0;o<T;o++)  //软件长时间延时
 181   1          Delay(40000);
 182   1      }
 183          /******************************************************************/
 184          /*****************************************/
 185          /*       点 阵 相 关 程 序               */
 186          /*****************************************/
 187          /*****************************************************************************/
 188          /************检查读写状态*******************/
 189          void Check(void)
 190          {
 191   1        uchar sta_1;
 192   1        do
 193   1        {
 194   2          sta_1=COMPORT;
 195   2          sta_1=sta_1&0x03;
 196   2        }
 197   1        while(sta_1!=0x03);
 198   1      }
 199          /************向数据口发数据*****************/
 200          void Out_data(uchar dat)
 201          {
 202   1        Check();
 203   1        DATAPORT=dat;
 204   1      }
 205          /***********写一个命令**********************/
 206          void Out_com(uchar com)
 207          {
 208   1        Check();
 209   1        COMPORT=com;
 210   1      }
 211          /*************写一个参数及命令**************/
 212          void Out_data_com(uchar dat1,uchar com1)
 213          {
 214   1        Out_data(dat1);
 215   1        Out_com(com1);
 216   1      }
 217          /************写两个参数及命令***************/
 218          void Out_data2_com(uchar dat1,uchar dat2,uchar com1)
 219          {
 220   1        Out_data(dat1);
 221   1        Out_data(dat2);
 222   1        Out_com(com1);
 223   1      }
 224          /**************点阵初始化程序*******************/
 225          void Init_Dian(uchar l)
 226          {
 227   1        if(l==6)                        //8*6型字符
 228   1          {
 229   2            Out_data2_com(0x00,0x00,0x40);
 230   2            Out_data2_com(0x15,0x00,0x41);
 231   2            Out_data2_com(0x00,0x04,0x42);
 232   2            Out_data2_com(0x15,0x00,0x43);
 233   2            //Out_com(0xa7);
 234   2          }
 235   1        Out_com(0x80);                   //逻辑或合成
 236   1        Out_com(0x9c);
 237   1      }
 238          /*************清RAM区*********************/
 239          void Clear_Dian(uchar a)        //0:清除文本区;1:清除图形区
 240          {
 241   1        uint l,i;
C51 COMPILER V7.06   XINHAO                                                                05/24/2007 21:19:42 PAGE 5   

 242   1        if(a==0)
 243   1         {

⌨️ 快捷键说明

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