|
下面的程序是對(duì)的沒有錯(cuò)誤,有一個(gè)疑惑: 在定時(shí)器中斷子程序中我把 if(flagkey==0){ 改成 if(flagkey==1) 就不正常,這是什么原因呀,正常不是應(yīng)該就等于1嗎?在檢定按鍵程序里
if(p01 == 0){
flagkey=1;
TR0 = 1;//這里才是要進(jìn)中斷的地方呀為什么就不正常呢
}
else{
flagkey=0; //為什么這個(gè)正常
}
單片機(jī)源程序如下:
- /*------------定時(shí)器----------------*/
- void Timer0Init(void) //10Ms
- {
- TMOD = 0x01;
- TH0 = 0x0D8;
- TL0 = 0x0F0;
- EA = 1;
- ET0 = 1;
- //TR0 = 1;
- }
- /*------------檢察按鍵----------------*/
- void anjian(void)
- {
- if(p01 == 0){// 檢測(cè)按鍵是否按下
- flagkey=1;
- TR0 = 1;//按鍵按下開始計(jì)時(shí),溢出后中斷
- }
- else{
- flagkey=0;
- }
- }
- /*------------主程序----------------*/
- void main()
- {
- Timer0Init(); //定時(shí)器初始化
- while(1)
- {
- anjian(); //檢察按鍵
- }
- }
- /*------------定時(shí)器中斷子程序----------------*/
- void Timer0Interrupt(void) interrupt 1{
- if(flagkey==0){ //改成if(flagkey==0){程序就有問題if(flagkey==0){
- flagkey=999;
- Timer0Init_count ++;
- if(Timer0Init_count>5){
- TR0 = 0;//關(guān)定時(shí)器
- TH0 = 0x0D8;//賦初值
- TL0 = 0x0F0;
- P10 = ~P10;
- }}
- }
復(fù)制代碼
|
|