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

📄 main.lst

📁 基于AT89C51的三相方波
💻 LST
📖 第 1 页 / 共 2 页
字号:
 126   3                      }
 127   2              }
 128   1              else
 129   1              {
 130   2                      g_KeyFlg = 0;   
 131   2              }
 132   1      }
 133          
 134          
 135          //按键处理子函数
 136          void Process(void)
 137          {
 138   1              switch(g_KeyVal)
 139   1              {
 140   2                      case 1:         g_FreqVal++;                                                    //频率加
 141   2                                              if(g_FreqVal == 0xffff)
 142   2                                              {
 143   3                                                      g_FreqVal = 0;
 144   3                                              }
 145   2                                              break;
 146   2                      case 2:         g_FreqVal--;                                                    //频率减
 147   2                                              if(g_FreqVal == 0xffff)
 148   2                                              {
 149   3                                                      g_FreqVal = 1000;
 150   3                                              }
 151   2                                              break;
 152   2                      case 3:         g_PhsVal++;                                                             //相位加
 153   2                                              if(g_PhsVal == 360)
 154   2                                              {
 155   3                                                      g_PhsVal = 0;
 156   3                                              }
 157   2                                              break;
 158   2                      case 4:         g_PhsVal--;                                                             //相位减
 159   2                                              if(g_PhsVal == 0xffff)                                  //减到0后,继续减
 160   2                                              {
 161   3                                                      g_PhsVal = 359; 
 162   3                                              }
 163   2                                              break;
 164   2                      default:        break;
 165   2              }
 166   1              
 167   1              //以下是向定时计数器T0,T1计数缓存中存数
 168   1              g_TH0 = (uint)(65536 - 500000 / g_FreqVal + g_cor) / 256;
 169   1              g_TL0 = (uint)(65536 - 500000 / g_FreqVal + g_cor) % 256;
 170   1      
 171   1              g_TH1 = (uint)(65536 - g_PhsVal % 180 * 2777.778 / g_FreqVal) / 256;
 172   1              g_TL1 = (uint)(65536 - g_PhsVal % 180 * 2777.778 / g_FreqVal) % 256;
 173   1      
 174   1              //8为数码管高四位显示当前方波的频率值,低三位显示当前波形的相位值
 175   1              dis_buf[0] = g_FreqVal / 1000;
 176   1              dis_buf[1] = g_FreqVal / 100 % 10;
 177   1              dis_buf[2] = g_FreqVal / 10 % 10; 
 178   1              dis_buf[3] = g_FreqVal % 10;
 179   1              dis_buf[4] = 0x10;                                                                              //空显,分隔符
C51 COMPILER V7.50   MAIN                                                                  08/08/2008 17:59:50 PAGE 4   

 180   1              dis_buf[5] = g_PhsVal / 100;
 181   1              dis_buf[6] = g_PhsVal % 100 /10;
 182   1              dis_buf[7] = g_PhsVal % 10;
 183   1      }
 184          
 185          
 186          //主函数
 187          void main(void)
 188          {
 189   1              Initiate();
 190   1              while(1)
 191   1              {
 192   2                      if(g_KeyFlg == 1)
 193   2                      {
 194   3                              Process();
 195   3                      }
 196   2                      ScanKey();
 197   2                      Display();
 198   2              }
 199   1      }
 200          
 201          
 202          //定时计数器0中断函数
 203          void Timer0_int() interrupt 1
 204          {
 205   1              TH0 = g_TH0;
 206   1              TL0 = g_TL0;
 207   1              if(OUT0 == 1 )
 208   1              {
 209   2                      TH1 = g_TH1;
 210   2                      TL1 = g_TL1;
 211   2                      OUT1 = 1;
 212   2                      TR1 = 1;
 213   2              }
 214   1              else
 215   1              {
 216   2                      TH1 = g_TH1;
 217   2                      TL1 = g_TL1;
 218   2                      TR1 = 1;
 219   2              }
 220   1      
 221   1              OUT0 = !OUT0;
 222   1      }
 223          
 224          
 225          //定时计数器1中断函数
 226          void Timer1_int() interrupt 3
 227          {
 228   1              if(OUT1 == 1)
 229   1              {
 230   2                      OUT1 = 0;
 231   2                      TR1 = 0;
 232   2              }
 233   1              else
 234   1              {
 235   2                      OUT1 = 1;
 236   2                  TR1 = 0;
 237   2              }
 238   1      }
 239          
 240          
 241          
C51 COMPILER V7.50   MAIN                                                                  08/08/2008 17:59:50 PAGE 5   

 242          
 243          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    586    ----
   CONSTANT SIZE    =     17    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     18    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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