亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標題:
幫忙看看為啥九齊IC的定時器沒有生效?
[打印本頁]
作者:
1481509156
時間:
2024-10-7 09:44
標題:
幫忙看看為啥九齊IC的定時器沒有生效?
九齊IC實現按鍵長按電機工作,一分鐘內按鍵松手就關閉電機,一分鐘后按鍵不松手也關閉電機。以下是我的代碼,目前沒法實現定時一分鐘電機關閉這個步驟,大佬們幫忙看下是哪里問題?定時器為啥沒起作用?
void main(void)
{
Timer1_INIT();
while(1)
{
KEY1_INIT()
;
MOOE_OUT();
}
}
void
isr(
void
) __interrupt(
0
)
{
if
(INTFbits.T1IF)
{
LED_H2++
;
if
(LED_H2
>
=
4000
)
//1S
{
cnt_timer++
;
if
(cnt_timer
>
=
60
)
{
flag=
1
; //1分鐘定時標志位
cnt_timer=
0
;
}
LED_H2=
0
;
}
INTF = (
unsigned
char
)~(C_INT_TMR1)
;
// Clear T1IF flag
}
if
(INTFbits.PABIF)
// 外部狀態變化中斷
{
INTFbits.PABIF =
0
;
// 清中斷標志位
}
}
void
KEY1_INIT(
void
) //按鍵長按判斷
{
if
(K1){K1_SDA=
0
;
K1_H1=
0
;
K1_CON=
0
;
LED_fflag=
0
;
}
if
(K2){K1_cnt=
0
;
}
if
(K1==
0
)
{
K1_SDA=
1
;
K1_H1++
;
if
(K1_H1
>
30
){K1_NUM=
2
;
}
if
(K1_H1
>
=
1000
){K1_NUM=
1
;
K1_CON=
1
;
}
}
if
(K1_NUM==
1
&&
K1_CON)
{
K1_H1=
1000
;
MOOE=
1
;
LED_fflag=
1
;
K1_cnt=
0
;
K1_NUM=
0
;
K1_CON=
1
;
}
}
void
Timer1_INIT(
void
) //定時器1配置
{
TMRH =
0
;
TMR1 =
250
;
T1CR1 =
0x02
;
T1CR2 = C_TMR1_ClkSrc_Inst | C_PS1_Div4
;
INTE = C_INT_TMR1 | C_INT_TMR0
;
}
void
MOOE_OUT(
void
)
{
if
(MOOE==
0
){M1=
0
;
L1=L2=
1
;
}
if
(MOOE==
1
)
{
if
(K1==
0
&&
K2==
0
&&
let_power==
0
) //let_power是電壓的判斷無需理會
{
CLRWDT()
;
M1=
1
; //打開電機
LED1=L1
;
LED2=L2
; //亮燈判斷
if
(LED_fflag==
1
)
{
T1CR1=
0x03
; //開啟定時器1
LED_H2=
0
; //計數器清零
if
(flag==
1
)
{
T1CR1=
0X02
; //關閉定時器1
// POWER=0;
M1=
0
; //關閉電機
MOOE=
0
;
L1=L2=
1
; //滅燈
flag=
0
;
}
LED_fflag=
0
;
}
}
else
{
M1=
0
;
T1CR1=
0X02
;
L1=L2=
1
;
MOOE=
0
;
}
}
}
作者:
飛云居士
時間:
2024-10-8 13:29
定時器中斷標志位清除:你在中斷服務程序中清除了 T1IF 標志位,但是你的代碼中沒有看到定時器溢出后重新啟動定時器的代碼。你需要確保在每次中斷服務程序執行完畢后,定時器能夠繼續計數。
定時器溢出檢測:你的代碼中使用了 TMRH 和 TMR1 來設置定時器的初始值,但是沒有看到檢測定時器溢出的代碼。通常,當定時器溢出時,需要重新設置定時器的初始值,以便它能夠繼續計數。
在你的 MOOE_OUT 函數中,你有一個 if 語句檢查 MOOE 的狀態,但是 MOOE 的值似乎并沒有在其他地方被改變。這可能會導致電機永遠不會關閉。
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1