STC15定时器设置 |
您所在的位置:网站首页 › 怎样设定定时器 › STC15定时器设置 |
STC15定时器4设置
1. 采用STC-ISP生成定时器打开定时器4中断允许打开总中断开关
要做一个STC15的定时器,产生定时中断,按照STC-ISP软件中的定时器计算器来生成定时器,工作只完成了一半,无法产生定时中断,又是百度又是手册,最终找出教科书,终于使定时中断开始工作,写下来给遇到同样问题的朋友参考。
1. 采用STC-ISP生成定时器
用STC官网提供的STC-ISP下载软件可以做许多事情。其中之一是有定时器计算器的功能。通过定时器计算器,可以选择: 系统时钟定时长度选择定时器定时模式定时器时钟在这里选择了15系列的定时器4作为定时器,定时器模式只有16位自动重载模式,定时器时钟1T (FOSC) 生成的程序如下: void Timer4Init(void) //1毫秒@11.0592MHz { T4T3M |= 0x20; //定时器时钟1T模式 T4L = 0xCD; //设置定时初值 T4H = 0xD4; //设置定时初值 T4T3M |= 0x80; //定时器4开始计时 }有了这个程序后,设置一个中断程序 // Interrupt Routine of timer4 void timer4_ISR (void) interrupt TIMER4_VECTOR { static uint16 ui; static uint16 ccdInt; ui++; ccdInt++; if ( ui > 20 ) { ui = 0; Time0flag_20ms = 1; } if ( ccdInt > 500 ) { ccdInt = 0; P55 = !P55; } }再在主程序中简单的设置,程序就应该运行了。 main() { Timer4Init(); while(1); }但下载运行后啥也没有发生,该闪亮的LED不闪亮! 打开定时器4中断允许通过查看手册,注意到EI2这个寄存器,各位的定义如下: 位B7B6B5B4B3B2B1B0命名–ET4ET3ES4ES3ET2ESPIES2T4中断允许T3中断允许UART4UART3T2中断允许SPIUART2在头文件中有 #define ET4 0x40 所以,在初始化程序中增加 EI2 |= ET4; IE2 |= ET4; 设置IE2寄存器的B6位为1,定时器4中断允许。这样就可以自动调用中断程序了。错,这里的坑还没有结束。 打开总中断开关再查找,总中断还没有使能,中断程序还是不能执行。 在主程序中各项初始化完成后,打开总的中断,程序正常工作。主程序中增加EA = 1;指令,中断程序定时打开和关闭指示LED。 终于让定时器开始工作了,希望能给遇到同样问题的朋友有所帮助。 博友说的对,应该是IE2. |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |