標(biāo)題:
單片機(jī)定時(shí)器,延時(shí)程序的時(shí)間是怎么算的?
[打印本頁]
作者:
heicad
時(shí)間:
2016-3-11 22:17
標(biāo)題:
單片機(jī)定時(shí)器,延時(shí)程序的時(shí)間是怎么算的?
#include<reg51.h> //包含51單片機(jī)寄存器定義的頭文件
sbit u=P3^0; //將u位定義為P3.0,從該引腳輸出矩形脈沖
unsigned char Countor; //設(shè)置全局變量,儲(chǔ)存負(fù)跳變累計(jì)數(shù)
/*************************************************
函數(shù)功能:延時(shí)約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++)
;
}
/*******************************************
函數(shù)功能:主函數(shù)
******************************************/
void main(void)
{
unsigned char i;
EA=1; //開放總中斷
EX0=1; //允許使用外中斷
IT0=1; //選擇負(fù)跳變來觸發(fā)外中斷
Countor=0;
for(i=0;i<100;i++) //輸出100個(gè)負(fù)跳變
{
u=1;
delay30ms();
u=0;
delay30ms();
}
while(1)
; //無限循環(huán), 防止程序跑飛
}
/**************************************************************
函數(shù)功能:外中斷T0的中斷服務(wù)程序
**************************************************************/
void int0(void) interrupt 0 using 0 //外中斷0的中斷編號(hào)為0
{
Countor++;
P1=Countor;
}
延時(shí)程序的時(shí)間是怎么算的?
倒數(shù)第二行" P1=Countor“有什么作用?
作者:
heicad
時(shí)間:
2016-3-11 22:17
" P1=Countor“大概是用發(fā)光二極管顯示Countor二進(jìn)制的值。
作者:
heicad
時(shí)間:
2016-3-11 22:18
把Countor的值賦給P1,還有你的程序有問題,主函數(shù)最后是while(1)結(jié)尾,這樣樣程序在空跑。也就是相當(dāng)于在等待。程序只執(zhí)行一次后面就是在等待。
作者:
heicad
時(shí)間:
2016-3-11 22:18
賦值,使P1輸出
作者:
heicad
時(shí)間:
2016-3-11 22:18
這個(gè)看你所用單片機(jī)的晶振頻率以及單片機(jī)型號(hào) 例如51系列單片機(jī) 其機(jī)器頻率等于晶振頻率12分頻 即除以12,用12MHz的晶振時(shí)機(jī)器頻率一MHz 處理一條指令的時(shí)間是1us ,用C語言的話時(shí)間不太精確,大致一條指令1Us 10^6分之一秒
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1