历史上的今天
今天是:2025年02月21日(星期五)
2020年02月21日 | 用单片机定时器T1中断控制两个LED以不同周期闪烁程序
2020-02-21 来源:51hei
此程序为51单片机用定时器T1中断控制两个LED以不同周期闪烁,可以通过它直观了解如何使用51单片机定时器,对学习串口通讯等有一定帮助。文件内包括仿真。
单片机源程序如下:
#include 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位重新赋初值 }
史海拾趣
|
DCDC模块电源 电源模块电流控制及电压控制的区别 DCDC[url=http://www.bokee.net/searchmodule/weblog/search_search.do?query=模块电源&type=3]模块电源 电源模块[/url] ,电流控制法与电压控制法相比有以下优点: (1) 电流控制法 ...… 查看全部问答> |
|
难得一见的磁性元件资料,详细介绍了磁性元件发展过程和变化,还对比了国际与国内知名磁性元件厂商的特点。如日本TDK、日本TOKIN公司、西门子公司、Philips公司、南京898厂等。 … 查看全部问答> |
|
测试测量仪器被广泛应用于电子设备行业,其用户也涵盖了包括消费电子、汽车、国防、教育、政府、半导体制造、通信等诸多行业。目前全球测试测量市场可分为三个领域。即:通信测量市场、自动测试设备/半导体和通用测试设备市场。 电 ...… 查看全部问答> |
|
用turbor C运行画图的程序,run之后出现一个对话框: This system doesnot support fullscreen mode.Choose \'Close\'to terminate the application. 百度找到一个方法说是: “ 先修改属性 ...… 查看全部问答> |
|
为了提高nandflash读写速度,准备使用DMA来读nandflash的数据。在bootloader中使用如下 rDISRC0=NFDATA; // Nand flash data register rDISRCC0=(0… 查看全部问答> |




