最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

登錄 免費(fèi)注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

不停止timer1,如何正確讀出其值?

作者:wszqw 欄目:單片機(jī)
不停止timer1,如何正確讀出其值?
 
2樓: >>參與討論
wszqw
這段指令好象還是不周全
movf TMR1H,w
movwf temph
movf TMR1L,w
movwf templ
movf TMR1H,w
xorwf temph,w
btfss STATUS,Z
incf temph,f
......

這段指令估算了半天好象還是不周全
有更好的辦法嗎

3樓: >>參與討論
碧水長天
請兄弟參考...
先分析一下您這個程序的思想:

movf TMR1H,w
movwf temph
movf TMR1L,w
movwf templ
movf TMR1H,w
xorwf temph,w
btfss STATUS,Z
incf temph,f
......

先讀TMR1H,在讀TMR1L,然后繼續(xù)讀TMR1H,并比較如果兩次結(jié)果是否相同,如果不相同,則認(rèn)為讀去正確,如果不相同,則認(rèn)為TMR1L發(fā)生了進(jìn)位,于是將上次讀到的TMR1H值加1。

但是樓主這樣做有兩個應(yīng)該值得注意的地方:
1.應(yīng)先確保讀數(shù)前暫禁所有中斷,因?yàn)橹袛嗵幚淼臅r候,TMR1仍然在計(jì)數(shù)的話則會破壞讀數(shù)的實(shí)時性;
2.程序中當(dāng)判斷TMR1L有進(jìn)位時,便將上次讀到的TMR1H值加1,但是,此時進(jìn)位后的TMR1L值,卻忘了更新...

由于btfss STATUS,Z條件滿足時只能跳過一條指令,為了方便程序的編寫,可以將沒有進(jìn)位發(fā)生時的TMR1H,TMR1L的值作為讀去結(jié)果...

給出一個參考代碼:

     BANKSEL  TMR1H          ; 選擇bank0
     BCF      INTCON,GIE    ; 暫禁所有中斷
again
     MOVFW    TMR1H          ; 讀TMR1H
     MOVWF    temph
     MOVFW    TMR1L          ; 讀TMR1L
     MOVWF    templ
     MOVFW    TMR1H          ; 再讀TMR1H
     XORWF    temph,W       ; 兩次TMR1H的值比較(異或)
     SKPZ                    ; 相同則跳過下一條指令,讀取成功
     GOTO     again          ; 否則,則重新讀取并判斷
     BSF      INTCON,GIE    ; 讀取正確,允許中斷
    

4樓: >>參與討論
wszqw
謝謝  碧水長天
兄弟果然細(xì)致,你的程序段思路很好,很周全.

我的程序段是在中斷程序里執(zhí)行的
中斷程序只安排了這么一個任務(wù)
因?yàn)橐笾袛喑绦驁?zhí)行時間盡量短

并且每次從進(jìn)入中斷到讀出tmr1所花時間必須嚴(yán)格一致,具體說就是:
假設(shè)進(jìn)入中斷的時刻為0,讀出tmr1的時刻為N,那么每次都必須讀到tmr1在N時刻的值

你認(rèn)為有沒有更好的辦法?

5樓: >>參與討論
wszqw
這是我寫程序時的分析,舉例不一定正確,但思路應(yīng)該是對的
中斷程序中準(zhǔn)確讀出tmr1的值(存到PPMCTH和PPMCTL):

動作                     指令          可能情況舉例
                                         tmr1    Ppmct        
讀TMR1H的值到PPMCTH     Movf  TMR1H,w    00ff            
                        Movwf PPMCTH    0100    00XX        
讀TMR1L的值到PPMCTL     Movf  TMR1L,w    0101            
                        Movwf PPMCTL    0102    0001        
TMR1H的值等于PPMCTH?    Movf  TMR1H,w    0103            
                        Xorwf PPMCTH,w    0104            
若不等則PPMCTH+1        Btfss STATUS,Z    0105            
                        Incf  PPMCTH,f    0106    0101        

讀TMR1H的值到PPMCTH     Movf  TMR1H,w    00fe        
                        Movwf PPMCTH    00ff    00XX    
讀TMR1L的值到PPMCTL     Movf  TMR1L,w    0100        
                        Movwf PPMCTL    0101    0000    
TMR1H的值等于PPMCTH?    Movf  TMR1H,w    0102        
                        Xorwf PPMCTH,w    0103        
若不等則PPMCTH+1        Btfss STATUS,Z    0104        
                        Incf  PPMCTH,f    0105    0100    

讀TMR1H的值到PPMCTH     Movf  TMR1H,w    00fd
                        Movwf PPMCTH    00fe    00XX
讀TMR1L的值到PPMCTL     Movf  TMR1L,w    00ff
                        Movwf PPMCTL    0100    00ff
TMR1H的值等于PPMCTH?    Movf  TMR1H,w    0101
                        Xorwf PPMCTH,w    0102
若不等則PPMCTH+1        Btfss STATUS,Z    0103
                        Incf  PPMCTH,f    0104    01ff    ////////error

讀TMR1H的值到PPMCTH     Movf  TMR1H,w    00fc
                        Movwf PPMCTH    00fd    00XX
讀TMR1L的值到PPMCTL     Movf  TMR1L,w    00fe
                        Movwf PPMCTL    00ff    00fe
TMR1H的值等于PPMCTH?    Movf  TMR1H,w    0100
                        Xorwf PPMCTH,w    0101
若不等則PPMCTH+1        Btfss STATUS,Z    0102
                        Incf  PPMCTH,f    0103    01fe    ////////error

讀TMR1H的值到PPMCTH     Movf  TMR1H,w    00fb
                        Movwf PPMCTH    00fc    00XX
讀TMR1L的值到PPMCTL     Movf  TMR1L,w    00fd
                        Movwf PPMCTL    00fe    00fd
TMR1H的值等于PPMCTH?    Movf  TMR1H,w    00ff
                        Xorwf PPMCTH,w    0100
若不等則PPMCTH+1        Btfss STATUS,Z    0101
                        Incf  PPMCTH,f    0102    00fd
                  
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
臭氧機(jī)電路圖
有沒有哪位大蝦有PIC節(jié)能的例程供在下研讀?謝了!
緊急求助916C752X2SR
用dsPIC30F初次編程,編譯出錯求各位老大幫忙
西爾特/L+編程器-適配器  急!!! W78E52B
免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 udpf.com.cn 浙ICP證030469號