- /*-----------------------------------------------
- 名称:定时器0
- 内容:通过定时让LED灯闪烁
- 设时钟频率为6MHz,试编写利用T0产生的1秒定时程序
- ------------------------------------------------*/
- #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
- sbit LED=P1^2; //定义LED端口
- /*------------------------------------------------
- 定时器初始化子程序
- ------------------------------------------------*/
- void Init_Timer0(void) //50毫秒@6.000MHz
- {
- TMOD &= 0xF0; //设置定时器模式
- TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
- TL0 = 0x58; //设置定时初值 50毫秒@6.000MHz
- TH0 = 0x9E; //设置定时初值
- TF0 = 0; //清除TF0标志
- EA=1; //总中断打开
- ET0=1; //定时器中断打开
- TR0=1; //定时器开关打开
- }
- /*------------------------------------------------
- 主程序
- ------------------------------------------------*/
- main()
- {
- Init_Timer0();
- while(1);
- }
- /*------------------------------------------------
- 定时器中断子程序
- ------------------------------------------------*/
- void Timer0_isr(void) interrupt 1 using 1
- {
- unsigned char Count=0;
- TH0=0x58; //重新赋值 50毫秒@6.000MHz
- TL0=0x9E;
- Count++;
- if(Count>20) //1秒定时
- {
- LED=~LED; //指示灯反相,可以看到闪烁 1秒
- Count=0;
- }
- }
复制代码 |