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

📄 main.lst

📁 基于AT89C51的三相方波
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   MAIN                                                                  08/08/2008 17:59:50 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /****************************************************************************************************
   2          * 文件名:       main.c                                                                                                                                                                  *
   3          * Copyright (c) 2008 *********武汉理工大学信息工程学院电信系                                                                            *
   4          * 创建人:       王康                                                                                                                                                                    *
   5          * 日 期:       2008.8.8                                                                                                                                                                *
   6          * 修改人:       王康                                                                                                                                                                    *
   7          * 日 期:                                                                                                                                                                                       *
   8          * 描 述:       本工程完成了相位发生器的作用,能产生频率和相位均步进可调的两相方波信号,并对频率和相位进  *
   9          *                       行数码管显示.用定时计数器0来产生方波的频率值,用定时计数器1来产生相位值,4个按键用来调    *
  10          *                       频率和相位,频率步进1Hz,相位步进1度                                                                                                              *       
  11          * 接口定义:     P1.0---frequency up                                                                                                                                             *
  12          *                       P1.1---frequency down                                                                                                                                   *
  13          *                       P1.2---phase up                                                                                                                                                 *
  14          *                       P1.3---phase down                                                                                                                                               *
  15          *                       P0---Data Bus                                                                                                                                                   *
  16          *                       P2---Bit choose                                                                                                                                                 *
  17          * 版 本:       KEIL uV2                                                                                                                                                                *
  18          ****************************************************************************************************/
  19          
  20          
  21          //头文件
  22          #include "reg52.h"
  23          
  24          
  25          //宏定义
  26          #define uchar   unsigned        char
  27          #define uint    unsigned        int
  28          #define ulong   unsigned        long
  29          
  30          
  31          //接口定义
  32          sbit    freq_up         =       P1^0;                                                           //频率增加      
  33          sbit    freq_down       =       P1^1;                                                           //频率减少
  34          sbit    phase_up        =       P1^2;                                                           //相位增加
  35          sbit    phase_down      =       P1^3;                                                           //相位减少
  36          sbit    OUT0            =       P3^0;                                                           //波形输出1
  37          sbit    OUT1            =       P3^1;                                                           //波形输出2
  38          
  39          
  40          //变量声明
  41          bit             g_KeyFlg;                                                                                       //有键按下标志位
  42          
  43          uchar   g_KeyVal;                                                                                       //键值
  44          uint    g_FreqVal;                                                                                      //方波的频率值
  45          uint    g_PhsVal;                                                                                       //相位值
  46          uchar   g_TH0;                                                                                          //频率值缓存
  47          uchar   g_TL0;
  48          uchar   g_TH1;                                                                                          //相位值缓存
  49          uchar   g_TL1;
  50          uchar   g_cor;                                                                                          //计数器校正值
  51          uchar   dis_buf[8];                                                                                     //显示缓冲
  52          
  53          uchar   code    num[]   =                                                                       //数码管数据定义
  54          {0x28,0x7E,0xA2,0x62,0x74,0x61,0x21,0x7A,0x20,0x60,0x30,0x25,0xA7,0x26,0xA1,0xB1,0xFF};
  55          // 0    1        2        3        4    5    6    7        8    9    a    b        c    d        e        f   空显
C51 COMPILER V7.50   MAIN                                                                  08/08/2008 17:59:50 PAGE 2   

  56          
  57          
  58          //延时子函数,1ms
  59          void Delay(uchar z)
  60          {
  61   1              uchar   x;
  62   1              uchar   y;
  63   1              for(x = z; x > 0; x--)
  64   1                      for(y = 72; y > 0 ; y--);       
  65   1      }
  66          
  67          
  68          //初始化子函数
  69          void Initiate(void)
  70          {
  71   1              g_KeyFlg = 1;                                                                                   //有键按下标志位
  72   1              g_KeyVal = 0;                                                                                   //键值
  73   1              g_FreqVal = 100;                                                                                //方波的初始频率值
  74   1              g_PhsVal = 45;                                                                                  //初始相位值
  75   1              OUT0 = 0;
  76   1              OUT1 = 0;
  77   1              TMOD = 0x11;                                                                                    //T0,T1均工作在定时方式1
  78   1              IE = 0x8a;                                                                                              //开T0,T1和总中断
  79   1              TR0 = 1;                                                                                                //打开T0定时
  80   1      }
  81          
  82          
  83          //显示子函数
  84          void Display(void)
  85          {
  86   1              uchar   i;
  87   1              for(i = 0; i < 8; i++)
  88   1              {
  89   2                      P2 = 0xff;
  90   2                      P2 = ~(0x01 << i);
  91   2                      P0 = num[dis_buf[i]];
  92   2                      Delay(5);
  93   2                      P2 = 0xff;
  94   2              }
  95   1      }
  96          
  97          
  98          //键盘扫描子函数
  99          void ScanKey()
 100          {
 101   1              uchar   key;
 102   1              P1 = 0xff;
 103   1              key = P1;
 104   1              if((P1 & 0x0f) < 0x0f)
 105   1              {
 106   2                      Delay(5);
 107   2                      if((P1 & 0x0f) < 0x0f)
 108   2                      {
 109   3                              g_KeyFlg = 1;
 110   3                              while(P1 != 0xff)
 111   3                              {
 112   4                                      Display();      
 113   4                              }
 114   3                              switch(key & 0x0f)
 115   3                              {
 116   4                                      case 0x0e:      g_KeyVal = 1;
 117   4                                                              break;
C51 COMPILER V7.50   MAIN                                                                  08/08/2008 17:59:50 PAGE 3   

 118   4                                      case 0x0d:      g_KeyVal = 2;
 119   4                                                              break;
 120   4                                      case 0x0b:      g_KeyVal = 3;
 121   4                                                              break;
 122   4                                      case 0x07:      g_KeyVal = 4;
 123   4                                                              break;
 124   4                                      default:        break;                                                  
 125   4                              }               

⌨️ 快捷键说明

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