欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 請問為什么沒有進入定時器中斷呢? [打印本頁]

作者: asdw159632    時間: 2018-2-2 10:11
標題: 請問為什么沒有進入定時器中斷呢?
程序如下:
ORG    0000H
LJMP    SET1
ORG    000BH
LJMP    START0
ORG    0013H
LJMP    START1

ORG    1000H
SET1:                    
        SETB    ET0
        SETB    ET1
        MOV    TMOD,#11H
        MOV    TH0,#3CH
        MOV    TL0,#0B0H
        MOV    TH1,#0FCH
        MOV    TL1,#18H
        SETB    EA
        SETB    TR0
        SETB    TR1
LOOP:    SJMP    $

START0:   
        CLR    TR0
        CLR    TR1
        CLR    ET1
        CLR    ET0
        RETI

START1:                    
        CLR    TR1
        CLR    TR0
        CLR    ET0
        CLR    ET1
        RETI
END


在keil里運行后卻發現無論TR0、TR1、ET1、ET0都不為0,是沒有進入中斷還是RETI返回錯誤?如果沒有進入中斷為什么沒有進入中斷?

作者: ahshmj    時間: 2018-2-2 17:19
你進入中斷以后,把定時器關閉了(TR0、TR1),中斷也關閉了,當然不會再次進入中斷了。
這是你的程序語句:
        CLR    TR1      停止運行T1
        CLR    TR0     
        CLR    ET0      關閉中斷
        CLR    ET1

你的初始化程序也有問題,“ORG    0013H”是外部中斷1的入口,估計應該是“ORG    001BH”,否則T1產生中斷后就死掉了。
另外你的程序的入口放到1000H是為什么?單對常見的有設置在30H、100H、300H的,放到1000H的沒見過,看不出你是什么單片機,如果是at89s51剛剛好是最末一個字節。程序沒發燒寫。
作者: ahshmj    時間: 2018-2-2 17:22
另外你的中斷程序里面沒有其他任何操作,即便能正確產生中斷,你也什么都看不出來。即便是個實驗程序,也要有聲或光的變化,以便觀察是否達到預期。
作者: 17089306679    時間: 2018-2-4 13:06
有沒有進入定時器試一下就知道了
作者: asdw159632    時間: 2018-2-4 18:42
ahshmj 發表于 2018-2-2 17:22
另外你的中斷程序里面沒有其他任何操作,即便能正確產生中斷,你也什么都看不出來。即便是個實驗程序,也要 ...

因為在模擬器中運行的,所以可以看到TR1和TR0的狀態,我看了一下結果不為0
作者: asdw159632    時間: 2018-2-4 18:48
ahshmj 發表于 2018-2-2 17:19
你進入中斷以后,把定時器關閉了(TR0、TR1),中斷也關閉了,當然不會再次進入中斷了。
這是你的程序語句 ...

以前在學校用的是intel51,現在用了c8051f340,然后熟悉過程中發現這個問題,在模擬器中可以看到TR1和TR0的狀態,運行后看到TR1,TR0還是1,沒有變為0,0013是復制錯了,復制的這段是剛開始打的
作者: asdw159632    時間: 2018-2-5 12:12
ahshmj 發表于 2018-2-2 17:22
另外你的中斷程序里面沒有其他任何操作,即便能正確產生中斷,你也什么都看不出來。即便是個實驗程序,也要 ...

我換了一下初始化的順序就可以了,先設定了TH和TL,然后依次是tmod、et、tcon,請問這是為什么?




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1