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

📄 信号发生器.lst

📁 本信号发生器能发出 矩型波
💻 LST
字号:
C51 COMPILER V7.20   _藕欧_蒧器                                                            06/06/2008 19:04:00 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE _藕欧_蒧器
OBJECT MODULE PLACED IN 信号发生器.OBJ
COMPILER INVOKED BY: G:\keil\keil\C51\BIN\C51.EXE 信号发生器.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //本信号发生器能发出    矩型波,三角,锯齿,及正弦,并能显示在实验设计中
   2          #include<reg51.h>
   3          #include<absacc.h>
   4          #define uchar unsigned char 
   5          #define DAC0832 XBYTE[0XFE00]
   6          uchar bdata  flag1=0;
   7          uchar waveno=0;         //选择信号类型   
   8          sbit start=flag1^0;  //用在遇外问中断时,结束原信号的标志
   9          uchar code duan_table[]={0xc0,0xcf,0xa4,0xb0};  //显示1,2,3,4
  10          void squarewave(void);  //方波0
  11          void  sawtoothwave(void);          //锯齿波1
  12          void  trianglewave(void);       //三角波2
  13          void   sinwave(void);//正弦波  3
  14          void main(void)
  15          {
  16   1              IT0=1;//用下降延触发方式比较好,经实验得操作键有效率大
  17   1              EA=1;
  18   1              EX0=1;//开外部0中断
  19   1              while(1)
  20   1          {   switch(waveno)
  21   2                      { case 0 :  squarewave();break;
  22   3                        case 1:   sawtoothwave();break;
  23   3                        case 2:   trianglewave();break;
  24   3                        case 3:    sinwave();  break;
  25   3                        default :   break;
  26   3                      }
  27   2          } 
  28   1      }
  29          void ex0_int() interrupt   0 using 1//外部0中断入口 
  30          {
  31   1         ++waveno;
  32   1         P1=duan_table[waveno];//模式显示
  33   1         if(waveno>=4) waveno=0;
  34   1         start=1;//使程序跳出原来一种模工的信号
  35   1      }
  36          void squarewave(void)
  37          {
  38   1         uchar i;
  39   1         start=0;
  40   1         while(~start)
  41   1         { DAC0832=0xff;
  42   2           P1=duan_table[waveno];
  43   2               for(i=0;i<255;i++);
  44   2               DAC0832=0X00;
  45   2               P1=duan_table[waveno];
  46   2               for(i=0;i<255;i++);
  47   2         }
  48   1      }
  49          void  sawtoothwave(void)
  50          {  unsigned char i;
  51   1         start=0;
  52   1              while(~start)
  53   1       {  for(i=0;i<255;i++)
  54   2              { DAC0832=i;
  55   3                 P1=duan_table[waveno];
C51 COMPILER V7.20   _藕欧_蒧器                                                            06/06/2008 19:04:00 PAGE 2   

  56   3              }
  57   2       } 
  58   1      }
  59          void trianglewave(void)
  60          {       uchar i;
  61   1          start=0;
  62   1          while(~start)
  63   1          {    P1=duan_table[waveno];
  64   2                       for(i=0;i<255;i++)
  65   2                       DAC0832=i;
  66   2               P1=duan_table[waveno];
  67   2                       for (i=0;i<255;i++)
  68   2                       DAC0832=i;
  69   2              }
  70   1      }
  71          void  sinwave(void)
  72          {
  73   1               uchar i;
  74   1               uchar code  sin_table[]={0x7f,0x89,0x94,0x9f,0xaa,0xb4,0xbe,0xc8,0xd1,0xd9,
  75   1                                          0xe0,0xe7,0xed,0xf2,0xf7,0xfa,0xfc,0xfe,0xff};
  76   1               start=0;
  77   1               while(~start)
  78   1               {  for(i=0;i<18;i++)
  79   2                      DAC0832=sin_table[i];
  80   2                      P1=duan_table[waveno];
  81   2                      for(i=18;i>0;i--)
  82   2                  DAC0832=sin_table[i];
  83   2                      for(i=0;i<18;i++) 
  84   2                      DAC0832=-sin_table[i];
  85   2              for(i=18;i>0;i--)
  86   2                      DAC0832=-sin_table[i];
  87   2               }
  88   1      }
  89          
  90          //实验总结:1 D/A转换问题,2单片机访问外部数据存,程序存,的地址问题,P0口做低8位数据,
  91          //地址分时复用,P2口做高8位地址线,在用MOVX @r0 指今时,P0,P2锁存器,自动转换 ,WR,写
  92          //允许端也自动转换,高变低,- ,应将其与D/A//转换的WR端相连;当然也可以将被 控制端直接接地2:
  93          //按键问题,对于利用中断口的按键,应选用下降延触发方式,即//IT=1;这样更灵敏
  94          
  95          
  96          
  97          
  98           
  99           


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    298    ----
   CONSTANT SIZE    =     23    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2    ----
   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 + -