|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
中穎4位單片機查表方法及注意事項 |
| 作者:warm_ice 欄目:MCU技術(shù) |
中穎4位單片機有2種查表方法:普通查表(TJMP)方法和RDT(ROM DATA TABLE)查表方法。 一.普通查表方法(TJMP) 在中穎4位單片機中都可采用此方法來進行查表。 1.普通查表原理 查表時,執(zhí)行CALL指令后,下一條指令的地址被自動壓入堆棧中,然后跳轉(zhuǎn)到數(shù)據(jù)表處,執(zhí)行TJMP指令,PC指針跳轉(zhuǎn)到PC11~PC8,TBR(TABLE BRANCH REGISTER),AC(累加器)所指向的地址,該地址的數(shù)據(jù)通過RTNW指令返回,其中,高4位數(shù)據(jù)保存到TBR寄存器中,低4位數(shù)據(jù)保存到累加器AC中。返回時PC指針會自動被堆棧中保存的PC數(shù)據(jù)覆蓋。 2.實例 ;******************************* ; 調(diào)用部分 ;******************************* LDI TBR,00H ;設(shè)置TBR的值為0 LDI TEMP,02H ;設(shè)置累加器AC的值為2 CALL DATA_TABLE ;查數(shù)據(jù)表 STA TEMP1,00H ;把低4位數(shù)據(jù)(1101B)保存到臨時寄存器中 LDA TBR,00H ;讀入高4位數(shù)據(jù) STA TEMP2,00H ;把高4位數(shù)據(jù)(0010B)保存到臨時寄存器中 ;******************************* ; 數(shù)據(jù)表部分 ;******************************* ORG 300H ;設(shè)置PC地址 DATA_TABLE: TJMP ;跳轉(zhuǎn)到由PC11~PC8,TBR,AC所指向的12位PC地址,此處為跳轉(zhuǎn)到302H RTNW 0001B,1000B ;301H RTNW 0010B,1101B ;302H RTNW 0011B,1100B ;303H 說明:TEMP,TEMP1,TEMP2為自定義的臨時寄存器 3.注意事項 通過觀察可以發(fā)現(xiàn),在查表時,TJMP指令跳轉(zhuǎn)地址的最高4位是讀取表格所在位置的PC指針的高4位,而用戶在程序中只需要賦值低8位,這樣,當數(shù)據(jù)表較大時(如大于等于256行)時,需要對TJMP指令跳轉(zhuǎn)地址的高4位進行進位時,因程序中無法直接對PC值進行賦值,就會出現(xiàn)錯誤。所以在數(shù)據(jù)表較大時,如大于等于256行,應該把此表格分為幾個小的表格,防止在查表時出現(xiàn)以上所說的錯誤。 二.RDT查表 為了提高對ROM空間的利用效率,在中穎一些新近推出的4位單片機中,推出了一種叫做RDT的查表方式,可以利用16位的ROM空間。 1.RDT查表原理 在具有RDT查表方式功能的單片機中,會有4個系統(tǒng)寄存器,共16位(RDT.15~RDT.0),在查表時,把表格數(shù)據(jù)所在的地址賦值給這4個系統(tǒng)寄存器,然后延時一條指令的時間,相應位置中的數(shù)據(jù)就被自動放到RDT的這4個系統(tǒng)寄存器中,讀取這4個系統(tǒng)寄存器就可以得到相應位置上的數(shù)據(jù)了。 2.實例 ;******************************* ; 調(diào)用部分 ;******************************* LDI TEMP,00H ; STA RDT_H ;賦值RDT最高4位數(shù)據(jù) LDI TEMP,03H ; STA RDT_MH ;賦值RDT中高4位數(shù)據(jù) LDI TEMP,00H ; STA RDT_ML ;賦值RDT中低4位數(shù)據(jù) LDI TEMP,01H ; STA RDT_L ;賦值RDT低4位數(shù)據(jù) NOP ;延時一條指令的時間 LDA RDT_L ;讀入低4位數(shù)據(jù) STA TEMP1,00H ;把低4位數(shù)據(jù)(00H)保存到臨時寄存器中 LDA RDT_ML ;讀入中低4位數(shù)據(jù) STA TEMP2,00H ;把中低4位數(shù)據(jù)(03H)保存到臨時寄存器中 LDA RDT_MH ;讀入中高4位數(shù)據(jù) STA TEMP3,00H ;把中高4位數(shù)據(jù)(02H)保存到臨時寄存器中 LDA RDT_H ;讀入高4位數(shù)據(jù) STA TEMP4,00H ;把高4位數(shù)據(jù)(01H)保存到臨時寄存器中 ;******************************* ; 數(shù)據(jù)表部分 ;******************************* ORG 300H ;設(shè)置PC地址 DATA_TABLE: DW 0123H ;300H DW 1230H ;301H DW 2301H ;302H 說明:RDT_H,RDT_MH,RDT_ML,RDT_L為RDT的四個系統(tǒng)寄存器,TEMP,TEMP1~TEMP4為自定義的臨時寄存器。 3.注意事項 在RDT查表時,IC內(nèi)部要進行一些復雜的操作,所以不要進行單步訪真,以免造成錯誤。 在對RDT的4個系統(tǒng)寄存器賦值時要注意賦值的順序。 * - 本貼最后修改時間:2006-10-9 9:30:44 修改者:warm_ice |
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號 |