历史上的今天
返回首页

历史上的今天

今天是:2024年12月19日(星期四)

正在发生

2018年12月19日 | C51 定时器Timer使用,及产生1ms系统Tick

2018-12-19 来源:eefocus

这里写图片描述

GATE=0用TR0和TR1来控制T1和T0的启动,GATE=1则用外部中断来控制。

C/T为0表示定时器模式。为1表示计数器模式,对T0或T1的外部负跳变脉冲计数。

定时器初值的计算:

TH0 = (65536 - (24/12) * 1000)/256; //65536 Timer0 M1=0,M0=1 工作在模式1,16位定时/计数器,2^16=65536 24Mhz晶振 1000um = 1ms 

TL0 = (65536 - (24/12) * 1000)%256;


THX=(2^定时器位数 - (晶振频率/12) * 定时时间um) / 256; 

TLX= (2^定时器位数 - (晶振频率/12) * 定时时间um) % 256;


注意:记得开总中断 EA = 1;


#include

#include

#include

#include

#include


static unsigned long SysTick = 0;

static unsigned long preTime = 0;



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

*       系统毫秒延时

*

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

void mdelay(u8 m)

{

    preTime = (unsigned long)(m + SysTick);

    while(preTime > SysTick)

    {

        _nop_();    

    }   

}


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

*       系统秒延时

*

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

void sdelay(u8 s)

{

    preTime = (unsigned long)((s * 1000) + SysTick);

    while(preTime > SysTick)

    {

        _nop_();    

    }

}


void Timer0_Init(void)

{

    TMOD |= 0x01;  //定时/计数器工作在方式 1;


    TH0 = (65536 - (24/12) * 1000)/256;   //65536 Timer0 M1=0,M0=1 工作在模式1,16位定时/计数器,2^16=65536  24Mhz晶振 1000um = 1ms 

    TL0 = (65536 - (24/12) * 1000)%256;

    ET0 = 1;  //允许定时/计数器0 中断

    TR0 = 1;  //启动定时/计数器0 中断

}


void main()

{

    Timer0_Init();

    while(1)

    {

        P0 = !P0;

    }

}


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

*

*   Timer0 用于产生系统时钟滴答 1ms为周期

*

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

void Timer0_ISR (void) interrupt 1

{

    TH0 = (65536 - (24/12) * 1000)/256;   //65536 Timer0 M1=0,M0=1 工作在模式1,16位定时/计数器,2^16=65536  24Mhz晶振 1000um = 1ms 

    TL0 = (65536 - (24/12) * 1000)%256;

    SysTick++;

}



Timer2使用:

/*-----------------------------------------------

  名称:定时器2

  论坛:www.doflye.net

  编写:shifang

  日期:2009.5

  修改:无

  内容:通过定时让LED灯闪烁

------------------------------------------------*/

#include


sbit LED=P1^0;    //定义LED端口



/*------------------------------------------------

                    定时器初始化子程序

------------------------------------------------*/

void TIM2Inital(void)

{

  RCAP2H = (65536-(12/12)*1000*60)/256;//晶振12M 60ms 16bit 自动重载

  RCAP2L = (65536-60000)%256;

  ET2=1;                     //打开定时器中断

  EA=1;                      //打开总中断

  TR2=1;                     //打开定时器开关

}

/*------------------------------------------------

                    主程序

------------------------------------------------*/

main()

{

 TIM2Inital();

 while(1);

}


/*------------------------------------------------

                 定时器中断子程序

------------------------------------------------*/

void TIM2(void) interrupt 5 using 1//定时器2中断

{


    TF2=0;

    LED=~LED;               //指示灯反相


}


推荐阅读

史海拾趣

Equator Technologies公司的发展小趣事

Equator Technologies公司成立于XX年代初,当时正值数字视频技术飞速发展的时代。公司凭借其在视频DSP(数字信号处理器)领域的独特见解和技术实力,迅速崭露头角。起初,Equator主要聚焦于提供高性能的视频处理解决方案,用于改善电视和其他显示设备的画质。通过不断的技术创新和产品迭代,Equator逐渐在市场中建立了良好的口碑。

诚润电子(CHEVRON)公司的发展小趣事

在电子行业中,产品质量是企业生存和发展的关键。诚润电子深知这一点,因此在生产过程中严格把控每一个环节,确保产品质量的稳定性和可靠性。这种对品质的执着追求,使得诚润电子的产品在市场上赢得了广泛的认可和信任。许多知名品牌都选择了诚润电子作为他们的合作伙伴,共同为消费者提供优质的电子产品。

Custom Electronics Inc公司的发展小趣事

随着科技的快速发展和市场需求的变化,CEI不断调整自身的发展战略和业务结构。公司加大了对新技术、新产品的研发投入,推动产业结构的升级和转型。同时,CEI还积极探索新的商业模式和市场机会,为公司的可持续发展提供了有力保障。

德尔创(Dersonic)公司的发展小趣事

在品质和品牌建设的基础上,德尔创开始积极拓展市场。公司首先在国内市场进行了深入布局,通过优化销售网络和提供优质的售后服务,逐渐赢得了客户的信任和支持。同时,德尔创也积极寻求国际合作机会,与多家国际知名企业建立了长期稳定的合作关系。这些合作不仅为公司带来了更多的订单和市场份额,还促进了德尔创在技术和管理方面的进一步提升。

Heidenhain Corp公司的发展小趣事

随着智能制造的兴起,海德汉公司积极转型为智能制造解决方案提供商。该公司与多家电子企业合作,共同探索智能制造的新模式和新路径。通过集成海德汉的数控系统、自动化设备和智能管理软件,这些企业成功构建了高效、灵活、智能的生产体系。海德汉的智能制造解决方案不仅提高了生产效率和产品质量,还降低了生产成本和能耗,为电子行业的可持续发展做出了积极贡献。

ABL Heatsink公司的发展小趣事

ABL Heatsink公司在发展过程中,积极寻求与其他企业的合作。通过与芯片制造商、电子设备生产商等建立紧密的合作关系,ABL Heatsink成功将自己的散热器产品集成到各种高端电子设备中。这种合作模式不仅提升了公司的知名度,也带来了稳定的订单和收入。

问答坊 | AI 解惑

新年的论坛!

06年马上就要过去了。首先要感谢大家对论坛的支持。大家辛苦了!去过很多论坛,发现一个问题。一个论坛好不好不是上传的资料,不是点击的人气,不是帖子的多少,这些仅仅是些数字。一个好的论坛,有价值的论坛,在于他的内容。这里说得内容,是大家 ...…

查看全部问答>

基于ARM的嵌入式系统程序开发要点"学习资料

关于ARM 1. ARM-Advanced RISC Machines ARM(Advanced RISC Machines),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。 1991年ARM公司成立于英国剑桥,主要出售芯片设计技术的授权。目前, ...…

查看全部问答>

嵌入式设计及Linux驱动开发指南

我也是刚刚接触嵌入式Linux开发,感觉这门技术相对而言需要软件知识(操作系统、C编程)比硬件知识更多些。所以这几个星期来,作为一个自动化专业的学生,我深深感觉到自己软件知识的匮乏。但毕设又不能不按时完成,为了更快掌握嵌入式开发的知识, ...…

查看全部问答>

linux启动时挂载rootfs的几种方式分析

1。linux启动时,经过一系列初始化之后,需要mount 根文件系统,为最后运行init进程等做预备,mount 根文件系统有这么几种方式: 字串4 1)文件系统已经存在于硬盘(或者类似的设备)的某个分区上了,kernel根据启动的命令行参数(root=/dev/xxx ...…

查看全部问答>

单片机资料宝典

在此我从网上收集了大量的资料包含了单片机初学者入门基本教程、 单片机应用范例、实例程序、希望对大家有用…

查看全部问答>

LCD驱动高手们,关于分辨率的疑问

早前一个月时搞那个22寸宽屏LCD驱动。用VGA口。问题如下: 直接用以前的NK写进去,分辨率为800*600,开机后只显示3/4的屏,但字体什么的都很清楚,屏不闪。 修改注册表及相关分变率为:1024*600,这时开机,出现黑屏,但从串口可以看出来系统启动完 ...…

查看全部问答>

WIN CE 烧写成功但是系统起不来

烧写完了,但是系统卡在那里起不来 copy NK and StartUp....... …

查看全部问答>

wince 内核图片加载

请问一下如何把图片加到WINCE的内核中去的呢?…

查看全部问答>

知名外企招聘wince高级工程师--请联系:alice

地点在杭州,前期电话面试,后期候选人需去杭州面谈,产生费用由公司承担        Windows Mobile高级软件工程师 :alice.kou@e4u.cn/msn:alice007@live.cn/010-65888118-203    招聘人数5 主要责任:(年薪:10 ...…

查看全部问答>

哪位大哥能提供点atmega128的资料啊

刚刚接手了份工作,要用到atmega128,可我手上还没有这款单片机的相关资料,只要关于PWM输出和串口通讯两部分的就行,谢谢大哥的无私分享了…

查看全部问答>