1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2098|回復: 1
收起左側

這是一個按鍵控制四種波形圖的程序,但是運行的時候一直卡在鋸齒波是為什么呀,求解答

[復制鏈接]
ID:676077 發表于 2019-12-28 15:23 | 顯示全部樓層 |閱讀模式
#include<reg51.h>
#include <math.h>
#define  PI 3.1415
unsigned int num;
unsigned char count;
int countbeifen;
char i;
sbit key=P1^0;
void delay(unsigned int time)
{   unsigned int j=0;
    for(;time>0;time--)    for(j=0;j<125;j++);
}
void main()
{
  count=0;
  countbeifen=0;
  while (1)
  {
            countbeifen=count;
     if(key==0)
     {  
             delay(10);
             if(key==0)
                 {       
                count++;
                    if(count==5)
            count=0;  

                 }
         }
       
         //以上程序,會得到一個按鍵次數          0.1.2.3.4
       
          
       
    //count=3;               
       
       
                if(count==1        )
                {
                   for(i=0;i<=255;i++)
           P2=i;
                 count=countbeifen;
                   count=0;
                }  //鋸齒波
               
        if(count==2)
                {
                   for(i=0;i<255;i++)
           P2=i;
                   for(i=255;i>0;i--)
           P2=i;
                  
                   count=countbeifen;
                   count=0;
            }
          //三角波
        if(count==3)
                {
             P2=0;  
             P2=!P2;
                         

                         count=countbeifen;
                     count=0;
        }   
         if(count==4)
            {
                    for (num = 0 ; num < 360 ; num++)
         P2= 127 +127 * sin((float)num / 180 * PI);       
                        count=countbeifen;
                        count=0;   
            }           //正弦波

        }
                                                                                     
}


回復

使用道具 舉報

ID:155507 發表于 2019-12-28 23:56 | 顯示全部樓層
不知道你的電路圖是怎樣的,發一下線路圖

  1. #include <reg51.h>
  2. #include <math.h>
  3. #define  PI 3.1415
  4. unsigned int num;
  5. unsigned char count;
  6. int countbeifen;
  7. char i;
  8. sbit key=P1^0;
  9. void delay(unsigned int time)
  10. {
  11.         unsigned int j=0;
  12.         for(;time>0;time--)
  13.                 for(j=0;j<125;j++);
  14. }
  15. void main()
  16. {
  17.         count=0;
  18.         countbeifen=0;
  19.         while (1)
  20.         {
  21.                 countbeifen=count;
  22.                 if(key==0)
  23.                 {  
  24.                         delay(10);
  25.                         if(key==0)
  26.                         {      
  27.                                 count++;
  28.                                 //程序里按鍵沒有松手檢測,按下去等于是count一直在+,速度很快
  29.                                 //按鈕程序沒寫等待釋放語句,因此,按鍵值會不停增大,
  30.                                 while(!key);//等待按鍵釋放
  31.                                 if(count==5)
  32.                                 count=0;  

  33.                         }
  34.                 }
  35.                
  36.                 //以上程序,會得到一個按鍵次數          0.1.2.3.4
  37.                
  38.                
  39.                
  40.                 //count=3;               
  41.                
  42.                
  43.                 if(count==1)
  44.                 {
  45.                         for(i=0;i<=255;i++)
  46.                         P2=i;
  47.                         count=countbeifen; //<---???? 有問題
  48.                         count=0;
  49.                 }  //鋸齒波
  50.                
  51.                 if(count==2)
  52.                 {
  53.                         for(i=0;i<255;i++)
  54.                         P2=i;
  55.                         for(i=255;i>0;i--)
  56.                         P2=i;
  57.                        
  58.                         count=countbeifen; //<---???? 有問題
  59.                         count=0;
  60.                 }
  61.                 //三角波
  62.                 if(count==3)
  63.                 {
  64.                         P2=0;  
  65.                         P2=!P2;
  66.                        

  67.                         count=countbeifen;  //<---???? 有問題
  68.                         count=0;
  69.                 }   
  70.                 if(count==4)
  71.                 {
  72.                         for (num = 0 ; num < 360 ; num++)
  73.                         P2= 127 +127 * sin((float)num / 180 * PI);      
  74.                         count=countbeifen;  //<---???? 有問題
  75.                         count=0;   
  76.                 }           //正弦波

  77.         }
  78.        
  79. }

復制代碼
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表