导航:首页 > 操作系统 > 定时器单片机程序

定时器单片机程序

发布时间:2023-01-22 06:35:02

单片机定时器c程序

你可以设定定时器T0,每50MS中断一次,中断一次计数一次,计数20次,刚好1秒,到1秒就把状态改变就行了。

⑵ 高分求单片机定时器程序

给你改了个,有空到我空间转转:
/*******************************************************
C51顺序控制程序:
注意:由预处理生成的定时初值有一定的局限性,调试过程中请参考计算工具得出的结果
请到我空间下载“51定时器计算器”
2009-10-02 by yingang2009
********************************************************/
#include<reg51.h>
//*******************************************************
#define Byte unsigned char
#define Word unsigned int
#define DWord unsigned long
//*******************************************************
#define Speed 12 //12 MHz(注意更高就不能一次得到50ms定时了)
#define TTTT 50000 //50ms
#define TH1_Init_Val (65536-Speed * TTTT / 12)/256
#define TL1_Init_Val (65536-Speed * TTTT / 12)%256

sbit L1 = P1^0 ;
sbit L2 = P1^1 ;
sbit L3 = P1^2 ;
sbit L4 = P1^3 ;
sbit L5 = P1^4 ;
sbit L6 = P1^5 ;
sbit L7 = P1^6 ;
sbit L8 = P1^7 ;
//*******************************************************模块变量
bit flag1s ;

//*******************************************************T1初始化
void T1_Init()
{
TMOD= 0x11;
TH1=TH1_Init_Val ;
TL1=TL1_Init_Val ;
ET1 =1;
EA =1;
TR1 =1;
}

/*******************************************************LED主进程

第一秒钟L1,L3亮,
第二秒钟L2,L4亮,
第三秒钟L5,L7亮,
第四秒钟L6,L8亮,
第六秒钟L2,L4,L6,L8亮,
第七秒钟八个二极管全亮,
第八秒钟全灭
[可以将P0口各时刻的状态做个表格,这里就不做了]
********************************************************/
void Led_Run()
{
static Byte step;
if (!flag1s)return; //接收定时器“flag1s”消息,没到1s返回
flag1s = 0; //1s到则开始工作

step++;
switch(step) //以1s为间隔进行顺序控制
{
case 1:
P1 =0xff; //先熄灭
L1 = 0;
L3 = 0;
break;
case 2:
P1 =0xff; //先熄灭
L2 = 0;
L4 = 0;
break;
case 3:
P1 =0xff; //先熄灭
L5 = 0;
L7 = 0;
break;
case 4:
P1 =0xff; //先熄灭
L6 = 0;
L8 = 0;
break;
case 5:
//do nothing 维持第4秒内容
break;
case 6:
P1 =0xff; //先熄灭
L2 = 0;
L4 = 0;
L6 = 0;
L8 = 0;
break;
case 7:
P1 = 0x00; //全亮
break;
case 8:
P1 =0xff; //全灭
step = 0; //步骤复位
break;
default:
step = 0; //具有一定的抗干扰意义
break;
}
}
//*******************************************************主程序
void main()
{
T1_Init();
while(1)
{
Led_Run();
}
}

void ISR_T1() interrupt 3 using 2 //定时器1中断服务程序50ms
{
static Byte cnt1s;
TH1=TH1_Init_Val ;
TL1=TL1_Init_Val ; //reload val
if (++cnt1s >= 20)
{
cnt1s = 0;
flag1s = 1;
}
}

⑶ 51单片机定时器的汇编语言程序编程,

LED BIT P1.0 ;定义LED的引脚
ORG 0000H

LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#01H ;定时器0工作模式1
MOV TH0,#HIGH(65536-50000) ;初值,50毫秒中断一次
MOV TL0,#LOW(65536-50000)
SETB TR0 ;启动定时器
SETB ET0 ;启动定时器中断
SETB EA ;开总中断
MOV R2,#40 ;中断计数初始值
SJMP $
T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB TR0
DJNZ R2,T0E ;R2减到0重新赋值,否则退出
MOV R2,#40
CPL LED ;LED亮灭转换
T0E:
RETI
END

⑷ 单片机定时器程序

每 24 小时输出 5秒,输出什么东西?

4.7k的晶振?有吗,频率太低了吧?是4.7M还可能。

8脚的直插 小单片机:STC15系列的单片机就有好几个型号呢,不用外部晶振,内部有的,也不用外部复位电路,内部也有,非常方便的。

⑸ 怎样用单片机定时器设计0到9秒的循环程序

#define uint unsigned int
#define uchar unsigned char
#include <reg52.h>
uint i;
uchar code TAB[]=[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void main(void)
{
TMOD=0x22; /*定时器0设置为工作方式2,基准定时(256-6)/1M=0.25ms*/
TH0 =6; //赋T0的预置值6,溢出4000次就是1秒钟
TL0 =6;
ET0=1; //打开定时器0中断
EA=1; //打开总中断
TR0=1; //启动定时器
while(1) //程序循环
{
P3=TAB[(i)];//p3送数
}
}
//定时器0中断
void timer0(void) interrupt 1 using 1
{
static uint t; //注意t的范围,这里涉及到C51变量取值范围这个知识点
t++;
if(t==4000) //T0的预置值6,溢出4000次就是1秒钟,晶振12MHz
{
t=0;
i++;
i=i%10;
}
}

⑹ 单片机 定时器编程

应该比较简单吧。比如用at89s52,晶振频率12m
其程序如下:
#include<stdio.h>
#include<reg51.h>

void timer0_init()
{
TMOD=0x01;//方式1
TL0=0xb0;
TH0=0x3c;
TR0=1;
ET0=1;

}

void timer0_ISR(void) interrupt 1
{
TL0=0xb0;
TH0=0x3c;//50ms中断一次
single++;
if(single==20)
{ kk++;
single=0;
}
}
void main()
{
int kk=0;//计数器
int single=0;
timer0_init();

}

显示器用个八位口连接七段led就行了。

⑺ 定时器在单片机中程序的运行过程

是这样的,使用定时器的时候是先对其附个初值,定时器计满后产生中断,执行中断程序。
它计的数是机器周期(也可是外部脉冲)。是由硬件自动完成的

⑻ 单片机定时计数器程序运行过程

程序运行到这里就死循环了,
while
(1)
{
led2
=
0;
}
后边的代码是无缘运行的。
程序运行首先从地址0000H开始,跳转到主程序入口也就是main()那里开始,所以真正有意义的运行第一条是:

=
0x01;
依次往下执行,到TR0=1;开始定时器开始计数,根据你的赋值,计数到50000之后,定时器0溢出,开始申请中断,进入中断服务程序
void
intt0()
interrupt
1
using
2
执行完中断后返回到主程序,你现在的情况是在while(1)那个死循环之中。
你说的那个while(1)后边的{
}里边的程序在执行完TR0=1之后就执行了,并一直在执行到中断开始。中断结束后又一直执行下去,一直反复如此。

阅读全文

与定时器单片机程序相关的资料

热点内容
如何开启app步数授权 浏览:22
linuxmaven路径 浏览:135
python爬qq说说 浏览:416
linuxmap文件 浏览:67
转转app如何搜索快手主播 浏览:776
移动硬盘文件夹成0字节 浏览:683
梦幻西游解压视频大全 浏览:252
解压小视频手速 浏览:152
我的世界服务器卡没血如何修改 浏览:161
vba入门到精通pdf 浏览:113
tomcat怎么一个服务器部署 浏览:797
phphttps接口 浏览:895
javabyte数组int 浏览:810
公司网络共享的文件夹 浏览:1000
拍脸搭配衣服是什么app 浏览:916
欧珀手机怎么更改加密密码 浏览:508
程序员那么可爱陆漓气人语录 浏览:904
python中del删除 浏览:461
华为云耀服务器和ecs区别 浏览:730
ruby语法编译语言 浏览:573