asp网站架设教程,wordpress如何添加自定义链接,wordpress语言包下载地址,建设银行网站源码1、实验目的
(1)使用定时器来完成LED闪烁 (2)原来实现闪烁时中间的延迟是用delay函数实现的#xff0c;在delay的过程中CPU要一直耗在这里不能去做别的事情。这是之前的缺点 (3)本节用定时器来定一个时间#xff08;譬如0.3s#xff09;#xff0c;在这个定时器定时时间内…1、实验目的
(1)使用定时器来完成LED闪烁 (2)原来实现闪烁时中间的延迟是用delay函数实现的在delay的过程中CPU要一直耗在这里不能去做别的事情。这是之前的缺点 (3)本节用定时器来定一个时间譬如0.3s在这个定时器定时时间内CPU还可以去做主任务定时时间到产生中断在中断处理程序isr中让LED闪烁即可。
如何编程 (1)定时timer初始化 (2)主程序该干嘛干嘛 (3)中断处理程序
我们开发板的定时器最多能订多长时间 内部时钟频率是1MHz时钟周期是1us。最多能定6553516位定时器也就是说最大定时时间为65535*1us65535us65.535ms。 如果要定比较长的时间譬如2s定时器直接是不能满足的解决办法是多次定时后加起来构成一个长时间。
我们使用定时器T0工作时 计算TL0和TH0 (1)确定自己定时时间定为50ms (2)确定内部时钟周期因为12T模式外部晶振12MHz所以为1us (3)定时个数就是50ms/1us 50000 (4)TL0 50000 % 256, TH0 50000 / 256 #include REGX51.H
#define SMG P0
sbit LED P1^0;unsigned char count;/****定时到时执行的中断程序****/
void DingShi() interrupt 1
{/*每一次定时到后都要重置脉冲个数以便进行第二次定时*/TL0 0XB0; //低8位为1011 0000TH0 0X3C; //高8位为0011 1100if(count-- 0) //这里相当于50ms*201000ms(1s){count 20;LED !LED;}
}void delay(void)//延迟函数
{unsigned char a,b;for(a200 ;a0 ;a--)for(b200 ;b0 ;b--);
}void main(void)
{unsigned char i;TMOD 0X01; //0000 0001 使用的是T0定时器工作模式是16位定时器/****设置脉冲个数位50000个,既为50ms****,65536-5000015536*/TL0 0XB0; //低8位为1011 0000TH0 0X3C; //高8位为0011 1100TR0 1; //计数器开始计数ET0 1; //开启T0中断EA 1; //开启中断总开关count 20;while(1)//执行主任务{unsigned char val[16] {0xc0, 0xf9, 0xa4, 0xb0,0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e};//0到F的数码表 for(i0 ;i15 ;i){SMG val[i];delay();}}
}
上面程序结果是静态数码管不断的重复显示0到F而LED1每隔1秒亮灭一次。