您的位置:

定时器计数c语言代码,c语言计时器代码的用法

本文目录一览:

求单片机定时器简单程序(C语言)详解。不胜感激~

用定时器0中断做流水灯,程序如下:#includereg52.h#includeintrins.h //包含_crol_()循环左移函数

unsigned char temp,count;void init() //初始化函数{ TMOD=0x01;//设置定时器0为工作方式1 TH0=(65536-50000)/256;//装初值,高8位 TL0=(65536-50000)%256;//装初值,低8位 EA=1;//开总中断 ET0=1;//开定时器0中断 TR0=1;//启动定时器0 temp=0xfe; count=0;//记数值清0}void main(){ init(); while(1){ P1=temp;}}void timer0() interrupt 1 using 1 //定时器0中断函数{ TH0=(65536-50000)/256;//重装初值,同上 TL0=(65536-50000)%256; count++;//计数值加1 if(count==10)//500ms{ count=0;//计数值清0 temp=_crol_(temp,1);循环左移一位}

C语言编写的计时器源代码怎么编写?

几天前写了个大概

你做个参考把

#includestdio.h

void

main()

{

float

x,y;

char

fuhao;

pintf("请输入第一个数:\t请输入运算符:\t,请输入第二个数:\n");

scanf("%f,%c,%f",x,fuhao,f);

if(fuhao=='+')printf("%f,%c,%f=%f\n",x,fuhao,y,x+y);

else

if(fuhao=='-')printf("%f,%c,%f=%f\n"x,fuhao,y,x-y);

else

if(fuhao=='*')printf("%f,%c,%f=%f\n"x,fuhao,y,x*y);

else

if(fuhao=='/')

{

if(y==0.0)printf("分母不能为0\n");

else

printf("%f,%c,%f=%f\n"x,fuhao,y,x/y);

}

}

利用定时/计数器产生定时时钟,由P1口控制8个指示灯,编写程序(c语言写),

#include reg51.h                  // 单片机头文件

void delay(void)

{

    unsigned char ov_times;         // 延时时间计数

    TMOD=0x01;                       // 设置定时器0工作在方式1

 

    TH0= OXBE;                // 12Mhz

    TL0=OXE0;

    TR0=1;                          // 启动定时器

    ov_times=50;                    // 设置延时时间计数值

    while(ov_times!=0)              // 查询是否到延时时间

    {

        if(TF0==1)                  // 查询定时器计数是否溢出

        {TH0=OXBE;TL0=OXE0;TF0=0;ov_times--;}// 重置初值,清除溢出位  }

    TR0=0;                          // 关闭定时器

}

void main()

{

    while(1)

    {

        P1=_crol_(P1);

        delay();                     // 延时

    }

你要告诉我你的单片机的时钟频率,不然没法计算计数初值的

设单片机系统的晶振为12MHz,要求使用定时计数器1,用C语言 编写程序实现?

系统晶振为12MHz时,定时器的计数脉冲周期即为 1uS;

要求输出周期为200us,占空比为50% 的方波,即方波的高电平时间=100uS,低电平时间=100uS。

所以每定时100uS便产生一次中断,并将输出信号状态翻转一次;

sbit cp=P1^7;

void timer1 interrupt 3

{ cp=~cp; }

void main()

{

TMOD=0x20; // 定时器1采用方式2 进行定时;

TH0=256-100; //定时100uS;

TL0=TH0;

EA=1;ET1=1;TR1=1;

cp=1;

while(1){}

}

介绍计数器 /定时器 程序 的编写步骤 (C语言的)

假设你用的晶振为12m,用p1.0口输出周期为2ms的方波。使用定时器工作方式1.

至于计数初值的计算,授之以鱼不如授之以渔!

在定时器模式下,计数器的计数脉冲来自于晶振脉冲的12分频信号,即对机器周期进行计数。若选择12m晶振,则定时器的计数频率为1mhz。假设定时时间为t,机器周期为t1,即12/晶振频率。x为定时器初值。则

x=2^n-t/t1。方式0,n=13,方式1时,n=16,方式2和方式3,n=8

自己算去吧!

#include

void

inittimer0(void)//

{

tmod

=

0x01;

th0

=

0x0fc;

//计数器初值

tl0

=

0x18;

ea

=

1;

et0

=

1;

tr0

=

1;//开启定时器t0

}

void

main(void)

{

inittimer0();

}

void

timer0interrupt(void)

interrupt

1

{

th0

=

0x0fc;//重新赋初值

tl0

=

0x18;

p1.0=~p1.0;

//输出方波

}

c51定时计数C语言代码

#includereg51.h

#includeINTRINS.h

#define u16 unsigned int

#define u8 unsigned char

/*********************************************************/

u8 ds[3]; //数码管显示缓存

//共阳

code u8 w[]={0x01,0x02,0x04,0x08}; //位码

code u8 d[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,};//断码

void dispaly(){//显示函数

static u8 a;

if(++a=3)a=0;

P0=0xff;

P2=w[a];

P0=d[ds[a]];

}

/****************************************/

void init() //初始化函数

{   TMOD=0x01;

TH0=(65536-1000)/256;

TL0=(65536-1000)%256;

EA=1;

    ET0=1;

}

u16 count=0; //计数

u16 V=0;//速度

u16 js;//计时

u8 mc=P1^1;//脉冲引脚

u8 tt=0xff;

void smmc(){

tt=1;

if(mc)tt|=0x01;

if((tt0x03)==0x02){//下降沿脉冲

if(count65535)count++;

}

}

/***********************************/

void main()//主函数

{

init();//系统初始化

TR0=1; //定时器开始计时

while(1){

ds[0]=V/100%10; //计数送到数码管显示缓存中

ds[1]=V/10%10;

ds[2]=V%10;

smmc();

if(js=10000){//10s

js=0;

V=4*count/10+2;//计算速度

count=0;

}

}

}

/****************************/

void timer0() interrupt 1//1ms定时器

{   

TH0=(65536-1000)/256;//重载初值

TL0=(65536-1000)%256;

dispaly();//显示

js++;

}