历史上的今天
返回首页

历史上的今天

今天是:2025年05月13日(星期二)

正在发生

2018年05月13日 | 51单片机定时器中断程序

2018-05-13 来源:eefocus

程序运行开始,A灯先亮5秒,然后灭了到B灯亮5秒,B再灭再到C灯亮5秒,C灭,程序结束,不再运行。这程序该怎么写?用定时器精确定时……晶振11.092MHZ。

  1. #include "REG52.H"  

  2.   

  3. /* 

  4. */  

  5. sbit        LED_A   = P1^0;  

  6. sbit        LED_B   = P1^1;  

  7. sbit        LED_C   = P1^2;  

  8.   

  9. unsigned char TIME_BASE;  

  10. unsigned char MACT_ENDB;  

  11. unsigned char Rece_Errp;  

  12.   

  13. /* 

  14. *    定时器初始化 

  15. */  

  16. void SystemInit(void)  

  17. {  

  18.     TMOD = 0x01;  

  19.     TH0 = (65536 - 45872) / 256;     // 定时50ms  //晶振:11.0592MHZ  

  20.     TL0 = (65536 - 45872) % 256;  

  21.     ET0 = 1;  

  22.     TR0 = 1;  

  23.     EA  = 1;  

  24. }  

  25.   

  26. int main(void)  

  27. {  

  28.     SystemInit();  

  29.   

  30.     while(1)  

  31.     {  

  32.         /* 程序一开始上电Rece_Errp = 0 定时器5秒加一次 */  

  33.         if(Rece_Errp == 0)  

  34.         {  

  35.             LED_A = 0;      // A亮5秒  

  36.             LED_B = 1;      // B是灭  

  37.             LED_C = 1;      // C是灭  

  38.         }  

  39.         /* 判断是否5秒时间到 */  

  40.         else if(Rece_Errp ==1)  

  41.         {  

  42.             LED_A = 1;   // A是灭  

  43.             LED_B = 0;   // B亮5秒  

  44.             LED_C = 1;   // C是灭   

  45.         }  

  46.         else if(Rece_Errp == 2)  

  47.         {  

  48.             LED_A = 1;  // A是灭  

  49.             LED_B = 1;  // B是灭  

  50.             LED_C = 0;  // C亮5秒       

  51.         }  

  52.         else  

  53.         {  

  54.             LED_A = 1;   // A是灭  

  55.             LED_B = 1;   // B是灭  

  56.             LED_C = 1;   // C是灭  

  57.             while(1);    // 程序运行到这里停止  

  58.         }                 

  59.     }  

  60. }  

  61.   

  62. void Timer0_IRQ(void) interrupt 1  

  63. {  

  64.     TH0 = (655365 - 45872) / 256;  

  65.     TL0 = (655365 - 45872) % 256;  

  66.     /* 进入中断50ms +1次 */  

  67.     TIME_BASE++;  

  68.       

  69.     if(TIME_BASE == 20)  // 20ms * 50ms = 刚好等于1000ms 也就是1秒  

  70.     {  

  71.         TIME_BASE = 0;  

  72.         MACT_ENDB++;    // 一秒加一次  

  73.         if(MACT_ENDB == 5) // 等于刚好5秒时间到  

  74.         {  

  75.             MACT_ENDB = 0;  

  76.             Rece_Errp++;   // 用来切换LED A、B、C5秒灭  

  77.         }  

  78.     }     

  79. }  


推荐阅读

史海拾趣

Avel Lindberg公司的发展小趣事

由于我无法直接获取Avel Lindberg公司的详细发展资料,因此我无法直接为您撰写5个关于该公司发展起来的具体故事。不过,我可以为您提供一个通用的故事框架,您可以根据这个框架结合公司的公开信息来撰写相关故事。

Avel Lindberg公司发展故事框架

  1. 创业初期: 描述Avel Lindberg公司成立的背景,包括创始人或核心团队的愿景、行业趋势以及初始产品或服务。可以提及公司如何克服初创期的困难,如资金短缺、市场竞争激烈等问题,逐渐在市场上站稳脚跟。

  2. 技术突破: 讲述公司在某个关键时期实现的技术突破,这项突破可能是对既有技术的改进,也可能是全新技术的研发。这个突破如何帮助公司打开了新的市场领域,提升了竞争力,成为行业内的领军者。

  3. 合作与扩展: 描述公司如何通过与其他企业、研究机构或高校建立合作关系,来扩大业务范围或提升技术水平。这些合作可能涉及共同研发、市场拓展、品牌建设等方面,对公司的长期发展产生了积极影响。

  4. 国际化战略: 讲述公司如何逐步实施国际化战略,进入海外市场。这包括公司如何分析国际市场的需求和竞争态势,制定合适的市场进入策略,以及在国际市场上取得的成就和面临的挑战。

  5. 社会责任与可持续发展: 介绍公司在发展过程中如何关注社会责任和可持续发展。这可以包括公司在环保、员工福利、社区支持等方面的举措,以及这些举措如何提升了公司的社会形象和品牌价值。

在撰写具体故事时,您可以根据Avel Lindberg公司的实际情况调整上述框架中的内容,并结合公司的官方公告、新闻报道和行业分析报告等资料来丰富细节。同时,请确保所描述的事实准确无误,避免主观评价和猜测。

FASTRAX公司的发展小趣事

2012年,瑞士公司u-blox宣布以1300万欧元收购FASTRAX 100%的股权。这一并购事件引起了业界的广泛关注。u-blox看中了FASTRAX在GPS接收模块领域的领先地位和技术实力,希望通过并购加强其在定位市场的竞争优势。并购完成后,FASTRAX成为u-blox集团的重要一员,继续为全球客户提供优质的GPS产品和服务。

American Power Management Inc公司的发展小趣事

为了进一步提升竞争力,APMI开始实施国际化发展战略。公司积极开拓海外市场,与国际知名电子制造商建立合作关系。同时,APMI还加强了与国际同行的技术交流与合作,吸收借鉴先进的管理经验和技术成果。通过国际化发展,APMI不仅拓宽了市场渠道,还提升了公司的国际影响力。

ABI Electronics公司的发展小趣事

ABI Electronics公司深知研发实力是企业发展的核心竞争力。因此,公司不断加大对研发的投入,引进了一批高素质的研发人才,建立了完善的研发体系。通过与高校、科研机构等合作,ABI不断吸收新的技术和知识,推动产品的升级换代,保持了在行业内的技术领先地位。

Elec & Eltek公司的发展小趣事

在国内市场取得一定成绩后,Elec公司开始将目光投向国际市场。为了更好地适应国际市场的需求,Elec公司积极引进国际先进技术和管理经验,并加强与国际知名企业的合作。同时,Elec公司还加大了在海外市场的营销力度,通过参加国际展会、举办技术研讨会等方式提高品牌知名度。经过多年的努力,Elec公司的产品已远销欧美、东南亚等多个国家和地区,成为国际市场上具有竞争力的电子品牌。

Fedco_Batteries公司的发展小趣事

面对日新月异的市场需求和技术变革,Fedco_Batteries始终保持创新的步伐。公司加大了研发投入,不断推出新型电池产品,满足客户的多样化需求。同时,公司还积极探索新的应用领域,将电池技术应用于更多领域,如新能源汽车、智能家居等。这种创新驱动的发展战略,让Fedco_Batteries在行业中始终保持领先地位。

问答坊 | AI 解惑

电子大赛问题商讨区(几乎实时在线)

本帖最后由 paulhyde 于 2014-9-15 08:55 编辑 本人不才 看了几个题目 有几个有点想法的 希望和大家能够相互交流 有问题的在这里问吧 我尽量回答 也有不会的 答不出来 别骂我就行 呵呵  …

查看全部问答>

LPC1114中文手册(非周工版)

LPC1114中文手册,非周工版,是武汉理工大学UP团队翻译的,另一种风味,或许对你有用哦,来自COOCOX网站。 [ 本帖最后由 zhaojun_xf 于 2010-7-13 18:55 编辑 ]…

查看全部问答>

尋求AT440方案

尋求AT440方案,那位兄台有啊,能否發份給我。 yo2010@yahoo.cn   謝謝 …

查看全部问答>

有谁有做过wince键盘钩子?

网上找了很多资料,但是为什么都编译通不过,错误如: E:\\workplace\\evc2\\evc2Dlg.cpp(216) : error C2664: \'ActivateKBHook\' : cannot convert parameter 2 from \'long (int,unsigned int,long)\' to \'long (__cdecl *)(int,unsigned int, ...…

查看全部问答>

关于中断向量表的傻问题,麻烦各位了

本人新手,见笑了! .extern main .text .global _start _start: @****************************************************************************** @ 中断向量,本程序中,除Reset和HandleIRQ外,其它异常都没有使用 @****************** ...…

查看全部问答>

Wince 5.0中文定制的问题

我用PB5定制中文ce5.0,在platform/setting2选项中增加中文选项,并设为默认语言,添加中文字库到映像中,但是 不显示中文,只显示\"___\",用远程工具查看,可以看到中文显示,请问怎样解决,多谢.…

查看全部问答>

在linux下开发ARM用什么工具

在网上找了一下,似乎用GDB调试的话,需要用到TCP/IP。 但是我的目标机没有TCP/IP。 我有JTAG调试器 也有REALVIEW的 ULINK 调试器 不知道能不能在LINUX下用以上的调试器。…

查看全部问答>

MCS51单片机外设地址确定问题

在看MCS51单片机原理与应用时,在ADC0809的接口部分,举了个例子,P2.7和RD与非后接的ADC0809的ALE和START,分配的口地址为7FFFH,即:0111111111111111B,只要2.7为0即可,那么0000111100000000B是不是呢?比如外部扩展了数据存储器,如果我执行的MO ...…

查看全部问答>

iar442+st-link是否在xp的user账户权限下面不能使用?

我在用ek-stm32F那个板子时,发现在user权限账户下面好像不能连接成功。操作系统我用的是windows xp+sp3的,然后我转到了管理员权限的账户下面,就能正常的使用了。图片为出错提示:…

查看全部问答>

DC-DC 模块电源WRB0505YMD-6W 使用问题

各位大侠:        请教个问题,我使用WRB0505YMD-6W 把7.5V的锂电池转换成5V的电源给手机充电,输入端接一个10uF/16V的电容,输出端接一个100uF/16V的电容,空载时有38°左右,加载后有50°左右,是否正常?能不能 ...…

查看全部问答>