?? 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 + -