8位數(shù)據(jù)高低位翻轉(zhuǎn)變換C程序_第1頁
8位數(shù)據(jù)高低位翻轉(zhuǎn)變換C程序_第2頁
8位數(shù)據(jù)高低位翻轉(zhuǎn)變換C程序_第3頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、百度知道上有人提問,LCD12864的8位數(shù)據(jù)口,由于硬件連接的限制與單片機 接口高低位數(shù)據(jù)反接了,怎么辦?其實,這個問題涉及到的是8位數(shù)據(jù)高低位翻轉(zhuǎn)的編程問題,仔細想想貌似不難,編寫了一段程序,達到了變換的目的,想必, 百度上現(xiàn)成的東西應該有很多,但我沒有搜,把這段程序放在這里,如果有感興 趣的朋友,歡迎交流指正。程序設計的想法是這樣的:如圖,數(shù)據(jù)經(jīng)過相應的位移后可以得到目標數(shù)據(jù)1011°001右移r位右移5位右移3位右移i位左移:位左穆(位左移5位左移位經(jīng)迥高低位數(shù)據(jù)釀后變換成數(shù)據(jù)滋0|0Q 11 0將原低4位數(shù)據(jù)向左移入高4位,形成數(shù)據(jù)b;將原高4位的數(shù)據(jù)向右移入低4 位,形成

2、數(shù)據(jù)d,而后將數(shù)據(jù)b、d合成為一個新的8為數(shù)據(jù)。具體運算方法是一 位一位的操作,原數(shù)據(jù)經(jīng)過分別和 0x01、0x02、0x04、0x08進行與”運算,逐 位的提取低4位數(shù)據(jù),而后再分別和0x80、0x40、0x20、0x10相 與”運算,逐 位提取高4位數(shù)據(jù),每次提取數(shù)據(jù)運算后都要進行一次數(shù)據(jù)判斷,如果結果為1,就將這個數(shù)據(jù)移入目標位置,如果為 0就放棄不用,因為寄存器初始值就是 0, 所以就不用寫0 了,每次生成的新數(shù)據(jù)再經(jīng)過相 或”運算后逐位的存入暫存變量 中,經(jīng)過第一次4循環(huán)運算后,可以生成一個新的變量0xz0,經(jīng)過第二次4循環(huán) 運算后,可以生成另一個新的變量0x0y將兩個暫存變量進行相

3、 或”運算獲得最終 結果0xzy。以下是 C 程序:原創(chuàng) wannenggong/2013/9/23 #in elude <reg51.h>#defi ne uehar un sig ned charun sig ned char deta_fa n( uchar dat) uchar i; /計數(shù)變量uchar a,b,c,d; / 過渡變量uchar f1= 0x01;uchar f2=0x80;for(i=0;i<8;i+)if(a)a=a«(7-i*2); /運算得到移位數(shù)據(jù) 7、5、3、1b=b | a;/逐位暫存f1=f1<<1;/ 獲得 0x01、0x02、0x04、0x08for(i=0;i<8;i+)c=dat & f2;if(c)c=c»(7-i*2);d=d | c;f2=f2>>1;/ 獲得 0x80、0x40、0x20、0x10return (b|d);void ma in (void)uchar dat_out; /設一個演示用變量while(1)dat_out=deta_fa n( 0xb1); /設一個變換值進行演示下圖是調(diào)試結果void main(void)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論