❶ 80C51單片機,12mhz.利用中斷程序控制8個燈依次亮滅,定時時間為1秒。
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char tab[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0xff};
void delay(uint e) //延時函數,延時為0.5s
{
uint i,j;
while(e--)
{
for(i=0;i<500;i++)
for(j=0;j<110;j++);
}
}
void Timer0Init()
{
TMOD|=0x01;//選擇為定時器0模式,工作方式1,僅用TR0打開啟動。
TH0=0xfe; //給定時器賦初值,定時1ms
TL0=0xfc;
ET0=1;//打開定時器0中斷允許
EA=1;//打開總中斷
TR0=1;//打開定時器
}
void main()
{
Timer0Init();
while(1);
}
void timer0() interrupt 1
{
uchar i;
for(i=0;i<8;i++)
{
P2=tab[i];
delay(1);
}
for(i=0;i<8;i++)
{
P2=~tab[i];
delay(1);
}
}
❷ 單片機,一秒的定時器初值怎麼算不要結果要過程謝了哈! ...
一。10MS定時器初值的計算:1.晶振12M12MHz除12為1MHz,也就是說一秒=1000000次機器周期。10ms=10000次 機器周期。65536-10000=55536(d8f0)TH0=0xd8,TL0=0xf02.晶振11.0592M11.0592MHz除12為921600Hz,就是一秒921600次機器周期,10ms=9216次機器周期。65536-9216=56320(dc00)TH0=0xdc,TL0=0x00二。50MS定時器初值的計算:1.晶振12M12MHz除12為1MHz,也就是說一秒=1000000次機器周期。50ms=50000次 機器周期。65536-50000=15536(3cb0)TH0=0x3c,TL0=0xb02.晶振11.0592M11.0592MHz除12為921600Hz,就是一秒921600次機器周期,50ms=46080次機器周期。65536-46080=19456(4c00)TH0=0x4c,TL0=0x00同理1MS定時器初值的計算:1.晶振12M12MHz除12為1MHz,也就是說一秒=1000000次機器周期。1ms=1000次 機器周期。65536-1000=15536(fc18)TH0=0xfc,TL0=0x182.晶振11.0592M11.0592MHz除12為921600Hz,就是一秒921600次機器周期,50ms=922次機器周期。65536-922=19456(fc66)TH0=0xfc,TL0=0x66 查看原帖>>
❸ 單片機定時器有65535計數值,66535是什麼單位,微秒還是毫秒怎麼計算定時1秒led閃爍一次
65535是16進制的FFFF,是51單片機定時器最大值,就是最大65535us,=65.535ms
,計數器初值設置50ms,65536-50000=15536=3CB0H,,使用一個計數器計數20(10個=500ms取反,常用1s閃爍使用)個50ms=1s。。
❹ 單片機用定時器1秒方波
使用單片機定時器在P1.0口產生200Hz方波程序
#include <reg52.h>
void main()
{
P1^0 = 0; // 清P0口
/////////
TMOD = 0x00; // T0使用定時模式,工作模式0,無門控位
TH0 = 0x60; // 為T0填入初值,定時時間5ms
TL0 = 0x78;
TR0 = 1; // 啟動T0
ET0 = 1; // 允許定時器0中斷
EA = 1; // CPU開放中斷
while(1); // 循環等待
}
void timer0_int () interrupt 1 using 2 // T0溢出中斷,使用工作組2
{
TH0 = 0x60; // 重新填入初值
TL0 = 0x78;
P1^0= ~P1^0; // P1.0取反,產生方波
}
希望對你有用,學習單片機多練習單片機學習板,動手學習效果會更好,目前主流的吳鑒鷹單片機開發板不錯
❺ 如何利用定時器T0的工作方式1實現1秒鍾延時程序(單片機)
1、#include <reg52.h>
2、#define uchar unsigned char
3、#define uint unsigned int
4、sbit LED = P0^0;uchar T_Count = 0;void main(){TMOD = 0x01;TH0 = (65535-50000)/256;TL0 = (65535-50000)%256;IE = 0x82;TR0 = 1;while(1);}
5、void LED_Flash() interrupt 1{TH0 = (65535-50000)/256;TL0 = (65535-50000)%256;if(++T_Count == 20){LED = !LED;T_Count = 0;}}
6、這個程序是1秒鍾LED燈會亮與滅顯示。
❻ 單片機定時器設定一秒
對於51
單片機,11.0592M的多用於有用到波特率的,以提高精度。如果需要定時1
秒的
,可用6M或12M的晶振。如果用12M的話,則1
個機器周期的1us
。定時器范圍是0~FFFF(即65535us)你可定時50ms一次中斷,共20次就是1秒。
❼ C51單片機定時器1以方式1定時1秒如何設置
1、先打開我們熟悉的單片機c51編程軟體——keil,先把主方法寫好。
❽ 單片機c語言編寫產生1秒定時的程序,怎麼寫
如果是51單片機的話其實很簡單的,這里假設晶振頻率是12M(一般都是的),你可以選用定時器0,工作在工作狀態2,因為這個狀態下裝入初始值幾乎不需要時間,所以定時精確,也就是8位預置數狀態,將初始值設為6,這樣每次定時就是250微秒,在中斷程序中定義一個靜態變數,每次中斷加一,這樣當這個變數值為4000時就剛好是1S鍾。
關鍵程序是:
void main()
{
TMOD=OX02;
EA=1;
ET0=1;
TH0=0X06;
TL0=0X06;
while(1);
}
void timer0() interrupt 1
{
static unsigned int times=0;
times++;
if(times==4000)
{
times=0;
//自己的程序
}}
❾ 單片機如何精確定時1秒鍾
採用定時器定時很精確的,如果定時時間為1ms,那循環1000次就是1s。定時初值要看你採用的晶振頻率了,下面是12M晶振,定時器0的定時1ms程序。
timer0() interrupt 1 // 1ms延時(12.0MHz)
{
TR0=0;
ET0=0;
TH0=0xfc;
TL0=0x18;
if(delayTimes1!=0) delayTimes1--;
TR0=1;
ET0=1;
}
當要程序中把delayTimes1賦值1000後,等到delayTimes1為0的時候定時1s鍾到
❿ 如何讓一個單片機的定時器計時1秒
首先你要知道你的晶振是多少頻率的,然後知道執行一個延遲命令的時間,然後再估算出需要多少個延時命令才能組成1秒。其實網上有很多這樣的延時程序。