此程序为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位重新赋初值 }
上一篇:注释非常详细的51单片机IIC源程序
下一篇:16位adc AD7705单片机例程(串口打印采集数据)
推荐阅读最新更新时间:2024-11-06 15:33
设计资源 培训 开发板 精华推荐
- ZXLD1374 60V 高精度 1.5A 降压 LED 驱动器转换器的典型应用降压配置
- xw12a dream cheeky驱动板(半成品)
- LTC4053EMSE-4.2 LTC4410ES6 演示板,USB 兼容电池充电器,4.25 至 6V,跳线可选,100mA 或 500mA
- LT1307BCS8 恒流镍镉电池充电器的典型应用电路,具有用于应答寻呼机的过压保护
- LT3692AHUH、3.3V 和 1.2V 2 级双路降压多频转换器的典型应用电路
- AD9833_DDS开发板
- 使用 ROHM Semiconductor 的 BD9A400MUV-E2 的参考设计
- C484211-四通道通用运放验证板
- 智力竞赛抢答器的设计与制作
- LT6656AIDC-5、5V 低功率精密高压电源监视器的典型应用