日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]1、 BANK設(shè)置錯誤:  先來看一段程序:  include  PORTDB EQU 20H  ……  START  movlw b‘11110000’  movwf PORTDB  clrf TRISD  MAIN  bcf STATUS,C  rlf PORTDB,1 

1、 BANK設(shè)置錯誤:

  先來看一段程序:

  include

  PORTDB EQU 20H

  ……

  START

  movlw b‘11110000’

  movwf PORTDB

  clrf TRISD

  MAIN

  bcf STATUS,C

  rlf PORTDB,1

  btfsc STATUS,C

  bsf PORTDB,0

  movf PORTDB,W

  movwf PORTD

  call DELAY

  goto MAIN

  ……

  上面的是一個將D口的發(fā)光二極管循環(huán)點(diǎn)亮的小程序,實際運(yùn)行發(fā)現(xiàn)并不能達(dá)到點(diǎn)亮的效果。通過設(shè)置斷點(diǎn)和觀察變量的手段發(fā)現(xiàn),單片機(jī)在執(zhí)行“clrf TRISD”這一語句后,TRISD寄存器的值為0FFH,而PORTD的值被清成了0。這是因為未設(shè)置BANK的緣故,此時BANK=0,而TRISD寄存器卻是位于BAKN1的。因此,在該語句前要加上一句“bsf STATUS,RP0”,使BANK=1。

  經(jīng)過改動,運(yùn)行后發(fā)現(xiàn)程序仍然不正常。同樣使用設(shè)置斷點(diǎn)和觀察變量的手段來分析程序,發(fā)現(xiàn)同樣由于BANK設(shè)置的錯誤,單片機(jī)并未對位于BANK0的PORTD、 PORTDB操作。因此,在該語句前要加上一句“bcf STATUS,RP0”,使BANK=0。經(jīng)過這樣的調(diào)整后,程序運(yùn)行正常了。

  實際上,這樣的錯誤很容易發(fā)生,在編寫比較復(fù)雜的需要常常切換BANK的程序時更是如此。建議初學(xué)者在寫程序時在有可能的情況下,在每次對BANK0以外的寄存器操作完成后都將BANK切換回BANK0。這樣做雖然會麻煩一些,但會減少錯誤的發(fā)生,使調(diào)試更為簡單一些。

  2、 PC操作錯誤:

  在進(jìn)行查表操作時需要對PCL進(jìn)行操作,這項操作也比較容易出錯。舉個例子來說:

  ……

  00CA bcf PCLATH,0

  00CB movf RTCCSIG,W

  00CC addwf PCL,1

  00CD goto main

  00CE goto RtccS1

  00CF goto RtccS2

  00D0 goto Rtccs3

  00D1 goto Rtccs4

  ……

  0130 bsf PCLATH,0

  0131 movf RTCCSIG1,W

  0132 addwf PCL,1

  0133 goto SetHour

  0134 goto SetMins

  ……

  上面的程序是高奇ICD教學(xué)實驗套件的演示程序CLKTEST.ASM編譯完成之后的List文件中的一段,前面的4位數(shù)據(jù)是16進(jìn)制數(shù),代表了該程序行在單片機(jī)內(nèi)程序存儲器的裝載位置。其中00CA句和0130句保證了執(zhí)行“addwf PCL,1”語句后PC能跳轉(zhuǎn)到正確的位置,感興趣的朋友可以將這兩句屏蔽后看一下結(jié)果。

  在PIC16F877單片機(jī)中PCLATH寄存器是一個低5位有效的寄存器,單片機(jī)在執(zhí)行“addwf PCL,1”語句時,會將PCLATH和PCL寄存器的值(PCLATH:PCL)一起送入程序計數(shù)器PC。以上面的程序0132H句為例,此時PCL=32H如果此時PCLATH=00H,RTCCSIG1=1則執(zhí)行完該句后PC=PCLATH:PCL=0033H,這樣在下一個指令周期到來時就發(fā)生了錯誤。本來該執(zhí)行第0134H句的,卻變成了執(zhí)行第0034H句。同樣的,我們能夠知道第00CAH句的作用。避免發(fā)生這樣錯誤的方法是:在調(diào)試程序的時候調(diào)出List文件,特別關(guān)注一下有這類操作的語句,再根據(jù)實際的情況來決定PCLATH的值。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉