欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 單片機定時器,延時程序的時間是怎么算的? [打印本頁]

作者: heicad    時間: 2016-3-11 22:17
標題: 單片機定時器,延時程序的時間是怎么算的?

#include<reg51.h>   //包含51單片機寄存器定義的頭文件
sbit u=P3^0;      //將u位定義為P3.0,從該引腳輸出矩形脈沖
unsigned char Countor;  //設置全局變量,儲存負跳變累計數
/*************************************************
函數功能:延時約30ms (3*100*100=30 000μs =30ms)
*************************************************/
void delay30ms(void)
{
  unsigned char m,n;
  for(m=0;m<100;m++)
    for(n=0;n<100;n++)
           ;
}

/*******************************************
函數功能:主函數
******************************************/        
void main(void)
  {
   unsigned char i;
   EA=1;   //開放總中斷
   EX0=1;  //允許使用外中斷
   IT0=1;  //選擇負跳變來觸發外中斷
        Countor=0;
   for(i=0;i<100;i++)  //輸出100個負跳變
        {
          u=1;
          delay30ms();
          u=0;
          delay30ms();
        }
        while(1)               
       ; //無限循環, 防止程序跑飛
}
/**************************************************************
函數功能:外中斷T0的中斷服務程序
**************************************************************/
void int0(void) interrupt 0 using 0 //外中斷0的中斷編號為0
{
  Countor++;
  P1=Countor;

}

延時程序的時間是怎么算的?
倒數第二行"  P1=Countor“有什么作用?


作者: heicad    時間: 2016-3-11 22:17

"  P1=Countor“大概是用發光二極管顯示Countor二進制的值。
作者: heicad    時間: 2016-3-11 22:18

把Countor的值賦給P1,還有你的程序有問題,主函數最后是while(1)結尾,這樣樣程序在空跑。也就是相當于在等待。程序只執行一次后面就是在等待。
作者: heicad    時間: 2016-3-11 22:18

賦值,使P1輸出
作者: heicad    時間: 2016-3-11 22:18
這個看你所用單片機的晶振頻率以及單片機型號  例如51系列單片機  其機器頻率等于晶振頻率12分頻 即除以12,用12MHz的晶振時機器頻率一MHz  處理一條指令的時間是1us ,用C語言的話時間不太精確,大致一條指令1Us  10^6分之一秒




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1