男女午夜激情_www.天堂av.com_亚洲综合小说区_亚洲欧美自拍视频_成年精品_久久www免费人成—看片_激情综合五月天_久久高潮视频_最新国产成人ab网站_国产精品卡一

機電之家資源網
單片機首頁|單片機基礎|單片機應用|單片機開發|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發
培訓信息
贊助商
PIC單片機的bank和PC的出錯問題
PIC單片機的bank和PC的出錯問題
 更新時間:2009-12-10 13:33:51  點擊數:0
【字體: 字體顏色
1、 BANK設置錯誤:

先來看一段程序:

include <p16f877.inc>

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口的發光二極管循環點亮的小程序,實際運行發現并不能達到點亮的效果。通過設置斷點和觀察變量的手段發現,單片機在執行“clrf TRISD”這一語句后,TRISD寄存器的值為0FFH,而PORTD的值被清成了0。這是因為未設置BANK的緣故,此時BANK=0,而TRISD寄存器卻是位于BAKN1的。因此,在該語句前要加上一句“bsf STATUS,RP0”,使BANK=1。

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

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

2、 PC操作錯誤:

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

……

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教學實驗套件的演示程序CLKTEST.ASM編譯完成之后的List文件中的一段,前面的4位數據是16進制數,代表了該程序行在單片機內程序存儲器的裝載位置。其中00CA句和0130句保證了執行“addwf PCL,1”語句后PC能跳轉到正確的位置,感興趣的朋友可以將這兩句屏蔽后看一下結果。

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

  • 上一篇: PIC單片機或運算指令XORWF的應用
  • 下一篇: 沒有了
  • 發表評論   告訴好友   打印此文  收藏此頁  關閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關文章
    網友評論:(只顯示最新5條。)
    關于我們 | 聯系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發消息66821730(技術支持)點擊這里給我發消息66821730(廣告投放) 點擊這里給我發消息41031197(編輯) 點擊這里給我發消息58733127(審核)
    本站提供的機電設備,機電供求等信息由機電企業自行提供,該企業負責信息內容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術支持

    主辦:杭州市高新區(濱江)機電一體化學會
    中國行業電子商務100強網站

    網站經營許可證:浙B2-20080178-1
    主站蜘蛛池模板: 沈阳市| 清流县| 珠海市| 靖远县| 莱州市| 离岛区| 尼勒克县| 文成县| 武宁县| 凭祥市| 汤阴县| 青阳县| 阳高县| 什邡市| 双鸭山市| 昆明市| 鄂尔多斯市| 同仁县| 朝阳区| 南投县| 阳东县| 新田县| 乐业县| 武穴市| 搜索| 湟源县| 陆丰市| 云霄县| 宁阳县| 杭锦后旗| 闻喜县| 乌兰浩特市| 洛宁县| 武安市| 乐山市| 甘肃省| 喀什市| 扶绥县| 界首市| 平泉县| 普兰店市|