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

📄 aaa.lst

📁 用51单片机编译成的频率计的源程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
C51 COMPILER V7.50   AAA                                                                   09/12/2005 06:33:21 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE AAA
OBJECT MODULE PLACED IN aaa.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE aaa.c OPTIMIZE(0,SPEED) BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <upsd3300.h>
   2          #include <intrins.h>
   3          #include <string.h>
   4          #include <absacc.h>
   5          //#include "upsd33_adc.h"
   6          //#include <Turbo_adc.h>
   7          //#include <Turbo_timer.h>
   8          //#include <Turbo_PCA-PWM.h>
   9          //#include <test.h>
  10          
  11          #define uchar unsigned char
  12          #define uint unsigned int
  13          
  14          //#define PSD_REG_ADDR 0x0800            //PSD寄存器IO基址       
  15          #define  scan  P3                                        //键扫
  16          #define POWK P1_7                                        //交流接触器开关,0有效
  17          #define POWZ P4_7                                        //电阻短接,0有效
  18          #define ST   P4_6                                        //脉冲使能
  19          
  20          #define RS  P1_6                                 //液晶命令口
  21          #define RW  P1_5
  22          #define  E  P1_4
  23          #define PSD_REG_ADDR 0x0200
  24             
  25          /*********管脚定义****************/
  26          //#define  lcdport  PSD33_reg.DATAOUT_A  //P4        //P4液晶数据口,必须用双通道IO
  27          
  28          
  29          xdata PSD_REGS PSD33_reg _at_ PSD_REG_ADDR ;
  30          
  31          uchar bdata temp;                   //判忙用字节
  32          sbit busy = temp^7;
  33          uchar  keyv ;
  34          uchar  pinlv[3] = {0,0,0};                 //频率值
  35          uchar  dianya[2] = {0,0};                  //电压值
  36          //uchar  mm[3] = {1,6,0};                          //调制度,30-210
  37          uchar code OK[]={"OK"};
  38          
  39           uchar i;
  40          /******************************************************************************
  41          *                PWM变量定义
  42          
  43          ******************************************************************************/
  44          /*------------------------------------------------------------------------------
  45                                    Local Variable Declarations
  46          ------------------------------------------------------------------------------*/
  47          //时钟周期为30ns,(板上33.1776M晶振)
  48          //固定频率采样,载波频率5K,周期200us,计数值=200us/(30ns*12)=556 
  49          //采样周期 = 1/2载波周期 = 278 
  50          
  51          
  52          
  53          //long Fc;                                      
  54          long idata F;
  55          long idata F_min;
C51 COMPILER V7.50   AAA                                                                   09/12/2005 06:33:21 PAGE 2   

  56          uint data N;                            //载波比
  57          long data M;                            //调制系数
  58          
  59                                                          
  60          
  61          
  62          uint data Ts;                                   //采样周期 = 1/2 载波周期
  63          long data Half_Ts;                      //1/2采样周期
  64          
  65          long idata K_M;                                 //调制系数放大倍数
  66          long idata K_F;                                 //输入频率放大倍数
  67          
  68          //uint idata K_sin;                             //sin表放大倍数
  69          //uint idata K_coe;                             //总放大倍数,K_M * K_sin;
  70                                                                  
  71          
  72          
  73          
  74          //int idata dead_time;          
  75          uint data U_angle;
  76          uint data V_angle;
  77          uint data W_angle;
  78          
  79          uint data K;                            //采样个数,偶数为顶点采样,奇数为底点采样
  80          uint data U_Toff;                       //顶点采样开通延时
  81          uint data U_Ton;                //底点采样关断延时
  82          uint data V_Toff;
  83          uint data V_Ton;
  84          uint data W_Toff;
  85          uint data W_Ton;
  86          
  87          uint Tm;
  88          code uint u36 = 0x125;
  89          
  90          
  91          unsigned char data P_flag,aa;            //奇偶采样点标志
  92          
  93          static unsigned int idata timer0_tick;
  94          static unsigned int idata timer0_value;
  95          
  96          static unsigned int idata timer1_tick;
  97          static unsigned int idata timer1_value;
  98          
  99          
 100          int data M_angle;
 101          
 102          unsigned long idata Fm;
 103          
 104          
 105          unsigned int data PCA0;
 106          
 107          
 108          //0--180度正弦表
 109          
 110          //unsigned long code sin_table[181] = {    0,286/64,572/64,857/64,1143/64,1428/64,1713/64,1997/64,2280/64,
             -2563/64,2845,
 111          //                                                3126,3406,3686,3964,4240,4516,4790,5063,5334,5604,
 112          //                                                5872,6138,6402,6664,6924,7182,7438,7692,7943,8192,
 113          //                                                8438,8682,8923,9162,9397,9630,9860,10087,10311,10531,
 114          //                                                10749,10963,11174,11381,11585,11786,11982,12176,12365,12551,
 115          //                                                12733,12911,13085,13255,13421,13583,13741,13894,14044,14189,
 116          //                                                14330,14466,14598,14726,14849,14968,15082,15191,15296,15396,
C51 COMPILER V7.50   AAA                                                                   09/12/2005 06:33:21 PAGE 3   

 117          //                                                15491,15582,15668,15749,15826,15897,15964,16026,16083,16135,
 118          //                                                16182,16225,16262,16294,16322,16344,16362,16374,16382,16384,
 119          //                                            16382,16374,16362,16344,16322,16294,16262,16225,16182,16135,
 120          //                                                16083,16026,15964,15897,15826,15749,15668,15582,15491,15396,
 121          //                                                15296,15191,15082,14968,14849,14726,14598,14466,14330,14189,
 122          //                                                14044,13894,13741,13583,13421,13255,13085,12911,12733,12551,
 123          //                                                12365,12176,11982,11786,11585,11381,11174,10963,10749,10531,
 124          //                                                10311,10087,9860,9630,9397,9162,8923,8682,8438,8192,
 125          //                                                7943,7692,7438,7182,6924,6664,6402,6138,5872,5604,
 126          //                                                5334,5063,4790,4516,4240,3964,3686,3406,3126,2845,
 127          //                                                2563,2280,1997,1713,1428,1143,857,572,286,0};
 128          
 129          unsigned char code sin_table[181] = { 0,4,9,13,18,22,27,31,35,40,
 130                                    44,49,53,57,62,66,70,75,79,83,
 131                                    87,91,96,100,104,108,112,116,120,124,
 132                                    128,131,135,139,143,146,150,153,157,160,
 133                                    164,167,171,174,177,180,183,186,190,192,
 134                                    195,198,201,204,206,209,211,214,216,219,
 135                                    221,223,225,227,229,231,233,235,236,238,
 136                                    240,241,243,244,245,246,247,248,249,250,
 137                                    251,252,253,253,254,254,254,255,255,255,
 138                                    255,255,255,255,254,254,254,253,253,252,
 139                                    251,250,249,248,247,246,245,244,243,241,
 140                                    240,238,236,235,233,231,229,227,225,223,
 141                                    221,219,216,214,211,209,206,204,201,198,
 142                                    195,192,190,186,183,180,177,174,171,167,
 143                                    164,160,157,153,150,146,143,139,135,131,
 144                                    128,124,120,116,112,108,104,100,96,91,
 145                                    87,83,79,75,70,66,62,57,53,48,
 146                                    44,40,35,31,27,22,18,13,9,4,0 };
 147          
 148          /********************************************************************
 149          *键盘码
 150          ********************************************************************/
 151          uchar code key_tab[] =
 152          {
 153                  0x01,0x02,0x03,0x0a,
 154                  0x04,0x05,0x06,0x0b,
 155                  0x07,0x08,0x09,0x0c,
 156                  0x0f,0x00,0x0e,0x0d,
 157          };
 158          
 159          
 160          /********************************************************************/
 161          /*******************************函数声明*****************************/
 162          /********************************************************************/
 163          
 164          /*---------------------------------------------------------------
 165          *          LCD函数声明
 166          *---------------------------------------------------------------*/
 167          void lcdbusytest();
 168          void writelcdcom(uchar com);
 169          void writelcddat(uchar dat);
 170          void mdelay(uchar j);                                                    //upsd 40M延时
 171          void initlcd();                                                              //初始化
 172          void clrlcd();                                                               //清屏
 173          void printchar(uchar xpos,uchar ypos,uchar str); //写一个字符
 174          void printstr(uchar xpos,uchar ypos,uchar *str); //写字符串
 175          /*-------------------------------------------------------------
 176          *        键盘扫描
 177          *-------------------------------------------------------------*/
 178          uchar getkey (void);
C51 COMPILER V7.50   AAA                                                                   09/12/2005 06:33:21 PAGE 4   

 179          
 180          /*-------------------------------------------------------------
 181          *    ADC 程序声明
 182          -------------------------------------------------------------*/
 183          void ADC_EnableAll(void) ;
 184          void ADC_Init (unsigned char channel);
 185          unsigned int ADC_Read( unsigned char channel );
 186          
 187          /*-------------------------------------------------------------
 188          *    得到电压电压值,并在液晶上显示
 189          -------------------------------------------------------------*/
 190          void getVA (uchar channel);
 191          
 192          /*-------------------------------------------------------------
 193          *   得到功率和频率
 194          -------------------------------------------------------------*/
 195          void  getPf  (void);
 196          
 197          /*******************************************************************
 198          ************************PWM部分声明*********************************
 199          *******************************************************************/
 200          
 201          /*-------------------------------------------------------------
 202          //定时器0中断服务程序,PWM
 203          //定时器0用于产生采样周期的定时中断,采样周期Ts =1/2载波周期 = 278 时钟周期
 204          -------------------------------------------------------------*/
 205          static void timer0_isr (void); //interrupt TF0_VECTOR using 1
 206          
 207          /*-------------------------------------------------------------
 208          *    int sin_angle(long angle )
 209          *功能描述:角度换算函数,使角度值控制在180以内
 210          *
 211          -------------------------------------------------------------*/
 212          int sin_angle(long angle );
 213          
 214          /*-------------------------------------------------------------
 215          *             void first(void )
 216          *第一个采样点计算函数,在K=0时计算
 217          -------------------------------------------------------------*/
 218          void first(void );
 219          
 220          /*-------------------------------------------------------------
 221          *定时器0初始化
 222          -------------------------------------------------------------*/
 223          void timer0_init (void);
 224          
 225          
 226          /*--------------------------------------------------------------------
 227          *PCA中断服务程序
 228          ---------------------------------------------------------------------*/
 229          
 230          static void PCA_isr (void); //interrupt PCA_VECTOR using 1   
 231          
 232          /*-------------------------------------------------------------------
 233          *  PCA0初始化
 234          --------------------------------------------------------------------*/
 235          void PCA_init() ;
 236          void pwmwork();
 237          /***********************PWM声明结束***********************************/
 238          
 239          /*********************************************************************
 240          ***************************函数声明结束*******************************
C51 COMPILER V7.50   AAA                                                                   09/12/2005 06:33:21 PAGE 5   

 241          **********************************************************************/
 242          
 243          
 244          /****************************************************************
 245          *延时子程序,1ms
 246          ****************************************************************/
 247          
 248          void delay1ms(uint x)
 249          {
 250   1          uint i;
 251   1          while(x--)                          //((11+7*i)*x+5 )T
 252   1            {  i= 450;                
 253   2              while((i--)>0);                 //i=141,x=1,t=1003T
 254   2            }
 255   1      }
 256          /******************************************************************
 257          *              uchar  keyscan()
 258          *功能:键盘扫描程序
 259          *说明: 4*4键盘,无上拉电阻。P0~P3为行输出,P4~P7为列输入
 260          *返回值:0x(lie)(hang)
 261          ******************************************************************/
 262          
 263          
 264          uchar getkey (void)
 265          {   
 266   1           
 267   1           static uchar kn;
 268   1               uchar lie=0,hang,x=0;
 269   1               //E = 0;
 270   1               //RS = 0;
 271   1               scan = 0xf0;
 272   1               if((scan & 0xf0) !=0xf0)               
 273   1           {  delay1ms(10);                             
 274   2              if((scan & 0xf0) !=0xf0)          
 275   2                { hang = 0xfe;                     
 276   3                  for(i=0;i<4;i++ )                
 277   3                  { scan = hang;
 278   4                    if((scan & 0xf0) != 0xf0)        
 279   4                     {
 280   5                                   lie = ~(scan | 0x0f );        
 281   5                       switch (lie)
 282   5                                        { case 0x10:kn = *(key_tab + i);break;
 283   6                                          case 0x20:kn = *(key_tab+i+4) ;break;
 284   6                                          case 0x40:kn = *(key_tab+i+8) ;break;
 285   6                                          case 0x80:kn = *(key_tab+i+12) ;break;
 286   6                                              default:break;
 287   6                                         } 
 288   5                                         return( kn);
 289   5                     } 
 290   4                    else hang = (hang<<1)|0x01;
 291   4                  }
 292   3                }   
 293   2           }
 294   1         return(kn);  
 295   1      }
 296          

⌨️ 快捷键说明

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