❶ 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秒。其实网上有很多这样的延时程序。