99久久全国免费观看_国产一区二区三区四区五区VM_久久www人成免费看片中文_国产高清在线a视频大全_深夜福利www_日韩一级成人av

  • 回復
  • 收藏
  • 點贊
  • 分享
  • 發新帖

PWM程序分析!

#include < reg51.h >
#include < intrins.h >

sbit  K1 =P0^0 ;                    //增加鍵
sbit  K2 =P0^1 ;                    //減少鍵
sbit  BEEP =P1^5 ;                //蜂鳴器
sbit  LED = P2^0;
unsigned char PWM=0x7f ;   //賦初值

void Beep();
void delayms(unsigned char ms);
void delay(unsigned char t);


void main()

     P1=0xff;
    TMOD=0x21 ;
    TH0=0xfc ;             //1ms延時常數
    TL0=0x66 ;            //頻率調節

    TH1=PWM ;            //脈寬調節
    TL1=0 ;

     EA=1;
     ET0=1;
     ET1=1;
   
     TR0=1 ;

   while(1)
   {
     do{
            if(PWM!=0xff)
           {PWM++ ;delayms(10);}
           else Beep() ;
         }
     while(K1=0);

     do{
           if(PWM!=0x02)
          {PWM-- ;delayms(10);}
           else Beep() ;
          }
     while(K2=1);
   }
}

/*********************************************************/
// 定時器0中斷服務程序.
/*********************************************************/
void timer0() interrupt 1

    TR1=0 ;
    TH0=0xfc ;
    TL0=0x66 ;
    TH1=PWM ;
    TR1=1 ;
    LED=0;      //啟動輸出
}

/*********************************************************/
// 定時器1中斷服務程序
/*********************************************************/
void timer1() interrupt 3
{
    TR1=0 ;
    LED=1 ;     //結束輸出
}

/*********************************************************/
//蜂鳴器子程序
/*********************************************************/

void Beep()    
  {
      unsigned char i  ;
      for (i=0  ;i<100  ;i++)
        {
          delay(100)  ;
          BEEP=!BEEP  ;                //Beep取反
        }
     BEEP=1  ;                            //關閉蜂鳴器
     delayms(100);
  }

/*********************************************************/
// 延時子程序
/*********************************************************/ 
void delay(unsigned char t)
 {
    while(t--)   ;
 }

/*********************************************************/
// 延時子程序
/*********************************************************/
void delayms(unsigned char ms)

{
    unsigned char i ;
    while(ms--)
     {
        for(i = 0 ; i < 120 ; i++) ;
     }
}

 

 

以下這部分哪位大師能詳細分析下嗎,為什么t沒有給值就自減,還有delayms(10)是把下面的MS延時乘以10次嗎??????????????????

void delay(unsigned char t)
 {
    while(t--)   ;
 }

/*********************************************************/
// 延時子程序
/*********************************************************/
void delayms(unsigned char ms)

{
    unsigned char i ;
    while(ms--)
     {
        for(i = 0 ; i < 120 ; i++) ;
     }
}

 

還有下面的TR1=0后為什么又寫TR1=1??????

// 定時器0中斷服務程序.
/*********************************************************/
void timer0() interrupt 1

    TR1=0 ;
    TH0=0xfc ;
    TL0=0x66 ;
    TH1=PWM ;
    TR1=1 ;
    LED=0;      //啟動輸出

全部回復(3)
正序查看
倒序查看
LV.1
2
2011-11-01 08:21

這個頂起啊

0
回復
kinto
LV.5
3
2011-11-01 08:45

我來獻丑:

1:void delay(unsigned char t)
 {
    while(t--)   ;
 }

這里t是由外邊賦值的:unsigned char t

2,在定時中斷處理程序中,先要關閉定時中斷,待事情處理完畢后再啟動定時中斷,以免在定時中斷沒有處理完又進入該中斷,造成死循環

0
回復
scyan
LV.5
4
2011-11-01 09:33
樓主你還要花2天的時間看看基礎的吧。推薦你看視屏教程。個人認為霖峰的不錯,你可以到優酷搜索,認真的話2天你這幾個問題就都明白了。
0
回復
主站蜘蛛池模板: 国产免费一区二区在线a片视频 | 日韩免费观看高清 | 精品一区二区三区四区 | 国产欧美成人不卡视频 | www.日韩一区 | 日韩欧美中文免费 | 欧美日韩国产限制 | 永久免费精品影视网站播放器 | 亚洲有吗在线观看 | 国产精品一区二区三区99 | 在线一区二区三区精品 | 精产国产伦理一二三区 | 老少配videoshd乱配 | 91精品国| 欧美xxxx做受性欧美88 | 99精品在线播放 | 无码人妻一区二区三区免费N鬼沢 | 人人草影院 | 亚洲中文字幕无码久久2017 | 美女扒开腿让男人桶爽网站 | 人妻夫の上司犯感との中文字幕 | 欧美一区二区三区在线看 | 任你躁国产老女人 | 久久超乳爆乳中文字幕 | 国内自拍中文字幕 | 欧洲成人一区 | 国产精品网站在线观看 | av天堂永久资源网av天堂 | 欧美日韩综合一区二区在线观看视频 | 吃奶呻吟打开双腿做受视频 | 999久久精品 | 99热这里只有精品久久 | 五月丁香六月婷婷深爱综合 | 成年人视频在线观看免费 | 国产999精品久久久影片官网 | 婷婷成人丁香五月综合激情 | 免费看奶头视频的网站 | 久久久久久久久毛片精品火炮 | 欧美视频在线观看 | 久久精品无码专区免费东京热 | 女性喷液过免费视频 |