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

📄 xh.lst

📁 这是一个用KEIL C编写的简易信号发生器的源码,可以自己动手做的简易发生器
💻 LST
字号:
C51 COMPILER V8.02   XH                                                                    10/23/2008 00:30:20 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE XH
OBJECT MODULE PLACED IN xh.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE xh.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg52.h>
   2          #include <stdio.h>
   3          #include <absacc.h>
   4          #define DA0832 XBYTE[0Xa000]
   5          #define uchar unsigned char
   6          #define S1 XBYTE[0X0000]
   7          #define S2 XBYTE[0X2000]
   8          #define S3 XBYTE[0X4000]
   9          uchar code tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  10          uchar code tosin[256]={0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb
             -1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5
  11          ,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,
             -0xf2,0xf4,0xf5
  12          ,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
             -0xff,0xfe,0xfd
  13          ,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,
             -0xde,0xdd,0xda
  14          ,0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,
             -0x9f,0x9c,0x99
  15          ,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,
             -0x57,0x55,0x51
  16          ,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,
             -0x1a,0x18,0x16
  17          ,0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,
             -0x00,0x00,0x00
  18          ,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02 ,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10
             -,0x11,0x13,0x15
  19          ,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,
             -0x48,0x4c,0x4e 
  20          ,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80 };
  21          uchar fun=0,b=0,c=0,d=0,tl,th;
  22          
  23          void key1(void);
  24          void key2(void);
  25          void key3(void);
  26          void key4(void);
  27          void judge(void);
  28          
  29          void main(void)
  30          {
  31   1       TMOD=0X01;
  32   1       TR0=1;
  33   1       th=0xff;
  34   1       tl=0xd0;
  35   1       TH0=th;
  36   1       TL0=tl;
  37   1       ET0=1;
  38   1       EA=1;
  39   1       while(1)
  40   1        {
  41   2         judge();
  42   2        }
  43   1      }
  44          
  45          void judge(void)
C51 COMPILER V8.02   XH                                                                    10/23/2008 00:30:20 PAGE 2   

  46          {
  47   1       uchar line,row,de1,de2,keym;
  48   1       P1=0x0f;
  49   1       keym=P1;
  50   1       if(keym==0x0f)return;
  51   1       for(de1=0;de1<200;de1++)
  52   1           for(de2=0;de2<125;de2++){;}
  53   1       P1=0x0f;
  54   1       keym=P1;
  55   1      if(keym==0x0f)return;
  56   1       P1=0x0f;
  57   1       line=P1;
  58   1       P1=0xf0;
  59   1       row=P1;
  60   1       line=line+row;/*存放特征键值*/
  61   1      
  62   1         if(line==0xde)key1();
  63   1        if(line==0x7e)key2();
  64   1        if(line==0xbd)key3();
  65   1        if(line==0x7d)key4();
  66   1      }
  67          
  68          void key1(void)             //1键选择发波类型,1为正弦波,2为三角波,3为方波
  69          {
  70   1       fun++;
  71   1       if(fun==4)fun=0x00;
  72   1       
  73   1      }
  74          
  75          void key2(void)            //2键加大频率
  76          {
  77   1       tl++;
  78   1       if(tl==0x1f)th++;
  79   1      }
  80          void key3(void)           //3键减小频率
  81          {
  82   1       tl--;
  83   1       if(tl==0x00)th--;
  84   1      }
  85          
  86          void key4(void)                     //4键显示频率
  87          {
  88   1       double t;
  89   1       int f;
  90   1       TR0=0;//ET0的区别
  91   1       t=(65535-th*256-tl)*0.4;
  92   1       f=(int)(1000/t);
  93   1       S3=tab[f%10];
  94   1       f=f/10;
  95   1       S2=tab[f%10];
  96   1       f=f/10;
  97   1       if(f==0)S1=0;
  98   1       else S1=tab[f];
  99   1       TR0=1;
 100   1      }
 101          
 102          void time0_int(void) interrupt 1   //中断服务程序
 103          {
 104   1       TR0=0;
 105   1       if(fun==1)
 106   1          {
 107   2              DA0832=tosin[b];             //正弦波
C51 COMPILER V8.02   XH                                                                    10/23/2008 00:30:20 PAGE 3   

 108   2          b++;
 109   2              }
 110   1       else if(fun==2)                //三角波
 111   1            {
 112   2                 if(c<128)DA0832=c;
 113   2             else DA0832=255-c;
 114   2               c++;
 115   2                       }
 116   1       else if(fun==3)                // 方波
 117   1            {
 118   2                 d++;
 119   2                 if(d<=128)DA0832=0x00;
 120   2             else DA0832=0xff;
 121   2                 }
 122   1       TH0=th;
 123   1       TL0=tl;
 124   1       TR0=1;
 125   1      }
 126          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    422    ----
   CONSTANT SIZE    =    266    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      6       1
   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 + -