先不管上节课的作业,把新课先听了吧! 任务1:用一个定时器实现这个任务。LED1实现0.3秒取反一次,LED2实现0.6沙取反一次,LED3.0.9秒取反一次
肯定是要用定时器,不过我们只会用一个定时器,现在明显要3个,怎么办?
通过一个变量计数,假设这个变量1ms自加一次,加到300即为300ms,加到600就是600ms;计数到达后重新清0; 数组使用分为如下两步 1.定义 类型 名称[长度] = { 数值 }; 2.使用 赋值:名称[索引]= 数值
以后肉眼可见的延时,太占CUP,我们都不用了!全部删掉! 定时器计数器用STC公司的ISP ,产生一个1ms的定时器0函数:
void Timer0_Isr(void) interrupt 1 { }
void Timer0_Init(void) //1毫秒@24.000MHz { AUXR &= 0x7F; //定时器时钟12T模式 TMOD &= 0xF0; //设置定时器模式 TL0 = 0x30; //设置定时初始值 TH0 = 0xF8; //设置定时初始值 TF0 = 0; //清除TF0标志 TR0 = 1; //定时器0开始计时 ET0 = 1; //使能定时器0中断
}
但是:我和冲哥的相比较缺少下面这行..........
TM0PS = 0x00; //设置定时器时钟预分频
why? 难道是默认?毕竟ISP软件版本不一样!
|