📄 timer.c
字号:
#pragma sfr
#pragma di
#pragma ei
#pragma interrupt INTTM000 MD_INTTM000
#include "timer.h"
#include "extern.h"
#include "stdio_smplus.h"
void timer_init( )
{
TMC00=0x00;
PRM00 &= 0xfc; /* 内部时钟计数 */
IF0 &= 0xdf; /* 设置INTTM000 */
CRC00 &= 0xfe;
CR000 = 0x2faf07f; /* 设置计数值 */
TMC00 = 0x0c; /* 开始interval timer功能 */
MK0 &= 0xdf; /* INTTM000使能 */
state = 0x01; /* 红灯状态 */
count1 = 0x00;
count2 = 0x00;
count3 = 0x00;
cycle = 0x00;
}
__interrupt void MD_INTTM000( )
{
if(state == 0x01)
{
count1 ++;
if(count1 == 0x20)
{
P2 &= 0xfe; /* 红灯灭 */
P3 |= 0x01; /* 绿灯亮 */
count1 &= 0x00;
state &= 0x00;
state |= 0x02; /* 转到绿灯状态 */
printf("Now green light shine.\n");
}
}
else if(state == 0x02)
{
count2 ++;
if(count2 == 0x20)
{
P3 &= 0xfe; /* 绿灯灭 */
P4 |= 0x01; /* 黄灯亮 */
count2 &= 0x00;
state &= 0x00; /* 转到黄灯状态 */
printf("Now yellow light shine.\n");
}
}
else
{ count3 ++;
if(count3 == 0x05)
{
P4 = ~P4; /* 黄灯闪烁 */
cycle ++;
count3 &= 0x00;
}
if(cycle == 0x08)
{
P4 &= 0xfe; /* 黄灯灭 */
P2 |= 0x01; /* 红灯亮 */
cycle &= 0x00;
state &= 0x00;
state |= 0x01; /* 转到红灯状态 */
printf("Now red light shine.\n");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -