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

📄 pwm.lst

📁 利用VHDL语言实现FPGA的PWM输出波形
💻 LST
📖 第 1 页 / 共 2 页
字号:
 337   4                 if(yic==10)
 338   4                 {
 339   5                    yic=0;
 340   5                 }
 341   4                 ain1=yic;
 342   4                 DispT1=DispTab[yic];
 343   4                 Disp1();
 344   4             }
 345   3             if(shezhi==3)
 346   3             {
 347   4                 yec++;
 348   4                 if(yec==10)
 349   4                 {
 350   5                    yec=0;
 351   5                 }
 352   4                 Abb=yec;
 353   4                 DispT1=DispTab[Abb];
 354   4                 Disp1();
 355   4             }
 356   3          }
 357   2          if(keyci==2)
 358   2          {
 359   3            if(shezhi==1)
 360   3            {
 361   4                yjc++;
 362   4                if(yjc==10)
 363   4                {
 364   5                   yjc=0;
 365   5                }
C51 COMPILER V7.06   PWM                                                                   11/20/2007 10:10:04 PAGE 7   

 366   4                aim2=yjc;
 367   4                DispT2=DispTab[yjc];
 368   4                Disp2();
 369   4            }
 370   3            if(shezhi==2)
 371   3            {
 372   4                ykc++;
 373   4                if(ykc==10)
 374   4                {
 375   5                   ykc=0;
 376   5                }
 377   4                ain2=ykc;
 378   4                DispT2=DispTab[ykc];
 379   4                Disp2();
 380   4            }
 381   3            if(shezhi==3)
 382   3            {
 383   4               yfc++;
 384   4               if(yfc==8)
 385   4               {
 386   5                  yfc=0;
 387   5               }
 388   4               Bbb=yfc;
 389   4               DispT2=DispTab[Bbb];
 390   4               Disp2();
 391   4            }
 392   3          }
 393   2          if(keyci==3)
 394   2          {
 395   3             if(shezhi==1)
 396   3             {
 397   4                if(ylc==6)
 398   4                {
 399   5                   ylc=0;
 400   5                }
 401   4                aim3=ylc;
 402   4                DispT3=DispTab[ylc];
 403   4                ylc++;
 404   4                Disp3();
 405   4             }
 406   3             if(shezhi==2)
 407   3             {
 408   4                if(ymc==6)
 409   4                {
 410   5                   ymc=0;
 411   5                }
 412   4                ain3=ymc;
 413   4                DispT3=DispTab[ymc];
 414   4                ymc++;
 415   4                Disp3();
 416   4             }
 417   3             if(shezhi==3)
 418   3             {
 419   4                if(ydc==2)
 420   4                {
 421   5                   ydc=0;
 422   5                }
 423   4                Cbb=ydc;
 424   4                DispT3=DispTab[Cbb];
 425   4                Disp3();
 426   4                ydc++;
 427   4             }
C51 COMPILER V7.06   PWM                                                                   11/20/2007 10:10:04 PAGE 8   

 428   3          }
 429   2       }
 430   1       if(keyvalue==3)//-键处理程序
 431   1       {
 432   2          if(keyci==1)
 433   2          {  
 434   3             if(shezhi==1)
 435   3             {
 436   4                 DispT1=DispTab[yhc];
 437   4                 aim1=yhc;
 438   4                 if(yhc==0)
 439   4                 {
 440   5                    yhc=10;
 441   5                 }
 442   4                 yhc--;
 443   4                 Disp1();
 444   4             }
 445   3             if(shezhi==2)
 446   3             {
 447   4                 DispT1=DispTab[yic];
 448   4                 ain1=yic;
 449   4                 if(yic==0)
 450   4                 {
 451   5                    yic=10;
 452   5                 }
 453   4                 yic--;
 454   4                 Disp1();
 455   4             }
 456   3             if(shezhi==3)
 457   3             {
 458   4                 if(yec==0)
 459   4                 {
 460   5                    yec=10;
 461   5                 }
 462   4                 yec--;
 463   4                 Abb=yec;
 464   4                 DispT1=DispTab[Abb];
 465   4                 Disp1();
 466   4             }
 467   3          }
 468   2          if(keyci==2)
 469   2          {  
 470   3             if(shezhi==1)
 471   3             {
 472   4                DispT2=DispTab[yjc];
 473   4                aim2=yjc;
 474   4                if(yjc==0)
 475   4                {
 476   5                   yjc=10;
 477   5                }
 478   4                Disp2();
 479   4                yjc--;          
 480   4             }
 481   3             if(shezhi==2)
 482   3             {
 483   4                DispT2=DispTab[ykc];
 484   4                ain2=ykc;
 485   4                if(ykc==0)
 486   4                {
 487   5                   ykc=10;
 488   5                }
 489   4                Disp2();
C51 COMPILER V7.06   PWM                                                                   11/20/2007 10:10:04 PAGE 9   

 490   4                ykc--;          
 491   4             }
 492   3             if(shezhi==3)
 493   3             {
 494   4                Bbb=yfc;
 495   4                DispT2=DispTab[Bbb];
 496   4                if(yfc==0)
 497   4                {
 498   5                    yfc=8;
 499   5                }
 500   4                Disp2();
 501   4                yfc--;
 502   4             }
 503   3          }
 504   2          if(keyci==3)
 505   2          {
 506   3             if(shezhi==1)
 507   3             {
 508   4                if(ylc==0)
 509   4                {
 510   5                   ylc=6;
 511   5                }
 512   4                ylc--;
 513   4                aim3=ylc;
 514   4                DispT3=DispTab[ylc];
 515   4                Disp3();
 516   4             }
 517   3             if(shezhi==2)
 518   3             {
 519   4                if(ymc==0)
 520   4                {
 521   5                   ymc=6;
 522   5                }
 523   4                ymc--;
 524   4                ain3=ymc;
 525   4                DispT3=DispTab[ymc];
 526   4                Disp3();
 527   4             }
 528   3             if(shezhi==3)
 529   3             {
 530   4                if(ydc==0)
 531   4                {
 532   5                   ydc=1;
 533   5                }
 534   4                ydc--;
 535   4                Cbb=ydc;
 536   4                DispT3=DispTab[Cbb];
 537   4                Disp3();
 538   4             }
 539   3          }
 540   2       }
 541   1       if(keyvalue==4)//设置键
 542   1       {
 543   2          shezhi++;
 544   2          if(shezhi==4)
 545   2          {
 546   3            shezhi=1;
 547   3          }
 548   2          if(shezhi==3)
 549   2          {
 550   3            ylc=0;
 551   3            ymc=0;
C51 COMPILER V7.06   PWM                                                                   11/20/2007 10:10:04 PAGE 10  

 552   3          }
 553   2          switch(shezhi)
 554   2          { 
 555   3            case 1:scanT=0x89; break;
 556   3            case 2:scanT=0xcf; break;
 557   3            case 3:scanT=0xbf; break;
 558   3            default:break;//第四位控制,为H则为高电平设置时间,L为低电平设置时间,-为倒计时时间
 559   3          }
 560   2       }
 561   1       if(keyvalue==5)//启动键
 562   1       {
 563   2          shezhi=0;//设置状态归0
 564   2          keyci=0; //光标位置归0
 565   2          timeflag=1;//倒计时位置1
 566   2          time=0;
 567   2          Hcishu=0;
 568   2          Lcishu=0;
 569   2          Hpl=aim3*100+aim2*10+aim1;//计算高电平倒计时时间
 570   2          Lpl=ain3*100+ain2*10+ain1;//计算低电平倒计时时间
 571   2          ET1=1;//开定时器1中断
 572   2          Disp4();
 573   2       }
 574   1       if(keyvalue==6)
 575   1       {
 576   2          timeflag=0;//倒计时位置0,停止倒计时
 577   2          ET1=0;     //关定时器1中断
 578   2          Disp4();
 579   2       }
 580   1      }
 581          void main()
 582          {
 583   1        P3M0=0x00;//00000000 
 584   1        P3M1=0x20;//00100000,设置为3.5受控,从右边数,第6位为P3.5位,设置为01,高电平推挽强上拉模式
 585   1        TMOD=0x11;
 586   1        ET0=1;
 587   1        TH0=(65536-5000)/256;//定时器0设置为5ms
 588   1        TL0=(65536-5000)%256;
 589   1        TH1=(65536-1000)/256;//定时器1设置为1ms
 590   1        TL1=(65536-1000)%256;
 591   1        TR0=1;
 592   1        TR1=1;
 593   1        EA=1;//定时器初始化
 594   1        output=0;
 595   1        while(1)
 596   1        {
 597   2          if(scanf==1)//扫描标志位
 598   2          {
 599   3            scanf=0;
 600   3            scan();
 601   3          }
 602   2         
 603   2          if(chuli==1)//处理标志位
 604   2          { 
 605   3            chuli=0;
 606   3            deal();
 607   3          }
 608   2          if(keyci==1)                   
 609   2          {Disp1();}
 610   2          if(keyci==2)
 611   2          {Disp2();}
 612   2          if(keyci==3)
 613   2          {Disp3();}
C51 COMPILER V7.06   PWM                                                                   11/20/2007 10:10:04 PAGE 11  

 614   2          if(shezhi==0)
 615   2          {Disp4();}
 616   2          if(timeflag==1)
 617   2          {
 618   3              if(Hf==1)//Hf=1时,发高电平
 619   3              {
 620   4                 output=1;
 621   4              }
 622   3              if(Lf==1)//Lf=1时,发低电平
 623   3              {
 624   4                 output=0;
 625   4              }
 626   3          }
 627   2        }
 628   1      }
 629          
 630          void Timer0() interrupt 1 using 1 
 631          {
 632   1        TH0=(65536-5000)/256;
 633   1        TL0=(65536-5000)%256;
 634   1        scanf=1;
 635   1        temp1++;
 636   1        time++;
 637   1      }
 638          
 639          void Time1() interrupt 3 using 2
 640          {
 641   1        TH1=(65536-1000)/256;
 642   1        TL1=(65536-1000)%256;
 643   1        Hcishu++;
 644   1        if(Hcishu<=Hpl)//高电平时,Hf=1
 645   1        {
 646   2           Hf=1;
 647   2        }
 648   1        if(Hcishu>Hpl)
 649   1        {
 650   2           Hf=0;
 651   2           Lcishu++;
 652   2           if(Lcishu<=Lpl)//低电平时,Lf=1
 653   2           {
 654   3              Lf=1;
 655   3           }
 656   2           if(Lcishu>Lpl)
 657   2           {
 658   3              Lf=0;
 659   3              Hcishu=0;
 660   3              Lcishu=0;
 661   3           }
 662   2        }
 663   1      }
 664                  


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1682    ----
   CONSTANT SIZE    =     21    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     44    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.

C51 COMPILER V7.06   PWM                                                                   11/20/2007 10:10:04 PAGE 12  


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

⌨️ 快捷键说明

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