历史上的今天
返回首页

历史上的今天

今天是:2025年02月21日(星期五)

正在发生

2020年02月21日 | 用单片机定时器T1中断控制两个LED以不同周期闪烁程序

2020-02-21 来源:51hei

此程序为51单片机用定时器T1中断控制两个LED以不同周期闪烁,可以通过它直观了解如何使用51单片机定时器,对学习串口通讯等有一定帮助。文件内包括仿真。


单片机源程序如下:


#include  //  包含51单片机寄存器定义的头文件

sbit D1=P2^0;  //将D1位定义为P2.0引脚

sbit D2=P2^1;  //将D2位定义为P2.1引脚

unsigned char Countor1; //设置全局变量,储存定时器T1中断次数

unsigned char Countor2; //设置全局变量,储存定时器T1中断次数

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

函数功能:主函数

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

void main(void)

{

   EA=1;                  //开总中断

        ET1=1;                 //定时器T1中断允许         

        TMOD=0x10;             //使用定时器T1的模式1

        TH1=(65536-46083)/256; //定时器T1的高8位赋初值

        TL1=(65536-46083)%256; //定时器T1的高8位赋初值

        TR1=1;                 //启动定时器T1

        Countor1=0;            //从0开始累计中断次数

        Countor2=0;            //从0开始累计中断次数 

        while(1)//无限循环等待中断

       ;

}


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

函数功能:定时器T1的中断服务程序

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

void Time1(void) interrupt 3 using 0 //“interrupt”声明函数为中断服务函数

                 //其后的3为定时器T1的中断编号;0表示使用第0组工作寄存器 

{

   Countor1++;   //Countor1自加1

        Countor2++;   //Countor2自加1

        if(Countor1==2)  //若累计满2次,即计时满100ms

                {

                   D1=~D1;     //按位取反操作,将P2.0引脚输出电平取反

                        Countor1=0;  //将Countor1清0,重新从0开始计数

                }

        if(Countor2==8)  //若累计满8次,即计时满400ms

                {

                   D2=~D2;     //按位取反操作,将P2.1引脚输出电平取反

                        Countor2=0;  //将Countor1清0,重新从0开始计数

                }                

          TH1=(65536-46083)/256; //定时器T1的高8位重新赋初值

        TL1=(65536-46083)%256; //定时器T1的高8位重新赋初值

}

推荐阅读

史海拾趣

Datasensor公司的发展小趣事

1972年,意大利的Romano Volta博士凭借对光电技术的深厚理解和前瞻性眼光,创立了DATALOGIC公司,并致力于自动化机器的光电传感器和控制产品的开发。这是Datasensor公司的起点,也是其日后成为全球工业自动化光电检测领域领导者的基石。在初创期,公司面临技术挑战、市场竞争和资金压力等多重困难,但Romano Volta博士的坚定信念和团队的共同努力,使公司逐渐站稳脚跟,并开始赢得市场的认可。

EOS POWER INDIA Pvt公司的发展小趣事

在追求经济效益的同时,EOS也注重可持续发展和环保责任。公司积极采用环保材料和绿色生产工艺,降低生产过程中的能耗和排放。EOS还投入资金建设了环保设施,确保生产过程中的废弃物得到有效处理。此外,公司还积极参与环保公益活动,推动电子行业的绿色发展。这些举措不仅体现了EOS的社会责任感,也为公司的长期发展奠定了坚实的基础。

FCI / Amphenol公司的发展小趣事

FCI公司起源于1988年,当时由Framatome组建,其初衷是作为核能领域外的一个多样化经营项目。然而,随着市场的变化和公司的战略调整,FCI逐渐将重心转向连接器制造。经过20多次的精心收购和策略性扩张,FCI在短短20年内便成长为全球最大的连接器制造公司之一。这一转变不仅展现了FCI对市场敏锐的洞察力,也体现了其卓越的管理能力和执行力。

安路科技(Anlogic)公司的发展小趣事

随着技术的不断积累和市场的逐步开拓,安路科技在XXXX年成功推出了其首款高性能FPGA产品。这款产品以其优异的性能、稳定的品质和良好的性价比,迅速赢得了市场的青睐。此后,安路科技的产品线不断丰富,逐渐覆盖了更多应用领域,公司的市场份额也逐年攀升。

康龙(CONCRAFT)公司的发展小趣事

进入XXXX年代,康龙公司意识到技术创新是企业持续发展的关键。于是,公司投入大量资金引进先进的生产设备和技术人才,加强研发力量。经过几年的努力,康龙在精密模具设计和开发方面取得了重大突破,大大提高了生产效率和产品精度。同时,公司还注重产品质量的提升,通过严格的质量控制和检验流程,确保每一件产品都符合客户的高标准要求。

Burr-Brown公司的发展小趣事

2000年,Burr-Brown被著名的美国德州仪器公司(Texas Instruments)收购,成为其高性能模拟器件部门的一部分。这一收购为Burr-Brown提供了更强大的资源和支持,使其能够继续专注于模拟器件(如ADC、DAC等)的生产和创新。在德州仪器的引领下,Burr-Brown持续保持技术领先,为全球电子行业的发展做出了重要贡献。

这五个故事共同展现了Burr-Brown公司从创立到发展壮大的历程,以及其在电子行业中的卓越成就和持续创新的精神。通过不断适应市场变化和技术进步,Burr-Brown成功地在竞争激烈的电子行业中脱颖而出,成为一家备受尊敬的企业。

问答坊 | AI 解惑

DCDC模块电源 电源模块电流控制及电压控制的区别

DCDC模块电源 电源模块电流控制及电压控制的区别 DCDC[url=http://www.bokee.net/searchmodule/weblog/search_search.do?query=模块电源&type=3]模块电源  电源模块[/url] ,电流控制法与电压控制法相比有以下优点: (1) 电流控制法 ...…

查看全部问答>

教你读电子元器件电路图,实例对比哦

难得一见的磁性元件资料,详细介绍了磁性元件发展过程和变化,还对比了国际与国内知名磁性元件厂商的特点。如日本TDK、日本TOKIN公司、西门子公司、Philips公司、南京898厂等。 …

查看全部问答>

Tcl的历史

人们常常问我设计Tcl语言的目的是什么,为什么它会变得这么受欢迎。本文将重温一下当年产生设计Tcl和Tk的想法,回顾Tcl和Tk在过去十年间发展的过程,以及我从伯克利到sun到scriptics的人生经历。你将看到,起初Tcl是很简陋的;这个系统的成功令我很 ...…

查看全部问答>

手持式测量仪器展风采

测试测量仪器被广泛应用于电子设备行业,其用户也涵盖了包括消费电子、汽车、国防、教育、政府、半导体制造、通信等诸多行业。目前全球测试测量市场可分为三个领域。即:通信测量市场、自动测试设备/半导体和通用测试设备市场。     电 ...…

查看全部问答>

Turbor C运行出现的问题

用turbor C运行画图的程序,run之后出现一个对话框:   This system doesnot support fullscreen mode.Choose \'Close\'to terminate the application.   百度找到一个方法说是:   “    先修改属性 ...…

查看全部问答>

请问:MATLAB下的m文件怎么改成纯C代码? 急!

请问:MATLAB下的m文件怎么改成纯C代码? 急!…

查看全部问答>

wince 2440下DMA的问题

为了提高nandflash读写速度,准备使用DMA来读nandflash的数据。在bootloader中使用如下     rDISRC0=NFDATA;         // Nand flash data register     rDISRCC0=(0…

查看全部问答>

VxWorks下读写硬盘分区表

我现在想在vxWorks下实现读写硬盘的分区表,请高手相助,硬盘采用fat32的文件系统…

查看全部问答>