全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:4631
推到 Plurk!
推到 Facebook!

2進制轉BCD碼(8051)

缺席
uls
一般會員


發表:3
回覆:1
積分:0
註冊:2005-03-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-04-10 20:41:03 IP:218.168.xxx.xxx 未訂閱
我因為要用8051製作溫度控制 但是利用類比轉數位ADC0804是8位元 00000000 00000001 00000010 00000011 ~ 11111111 輸入 輸出是要兩位數,4位元(掃瞄形式七段顯示器的解碼器7447) 0000 0001 0010 0011 ~ 1001 輸出就是兩位數BCD碼方式 重點是在兩位數(十位與個位)都是BCD碼 當溫度是10度以上時(舉10度來說,每1度上升1個位數) ADC的2進位為 00001010 輸出則是 十位數 0001 個位數 0000 這樣怎樣用8051來寫?(8位元的2進制輸入轉BCD碼輸出) 在下不會用8051的C語言,只會用組合語言 且我上VHDL課(低階語言)時也教過類似 但它是用 I <= "00000000" when O = "00000000" else "00000001" when O = "00000001" else "00000010" when O = "00000010" else "00000011" when O = "00000011" else ~ "00001010" when O = "00010000" else ... 這樣方式寫... 不會連8051也是要用這樣一個2進制指定一個BCD碼方式寫吧? 這樣會不會太長了點吧?

版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-04-10 21:40:06 IP:59.113.xxx.xxx 未訂閱
設兩個變數,分別記錄個位數與十位數 將ADC輸入的值除以10,商存入十位數,餘數存入個位數    再將十位數與個位數組合,分別存入ACC的高位元組與低位元組 再送至7447輸出顯示 也可直接分別輸出至P1.0~P1.3與P2.0~P2.3 送至7447輸出顯示        
==================================== 生命的目的,在幻化出多采多姿的組合。 生活的意義,在捕捉住稍縱即逝的感動。 ====================================
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
penguin5
資深會員


發表:116
回覆:317
積分:431
註冊:2004-05-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-04-11 21:22:42 IP:220.139.xxx.xxx 未訂閱
PRINT_SEG: ========================== MOV B,#10 DIV AB ORL A,#0F0H CLR SEG2_COM SETB SEG1_COM MOV P1,A MOV R5,#1 CALL DELAY100MS SETB SEG2_COM MOV A,B ORL A,#0F0H CLR SEG1_COM SETB SEG2_COM MOV P1,A MOV R5,#1 CALL DELAY100MS SETB SEG1_COM RET
阿信
版主


發表:111
回覆:983
積分:813
註冊:2005-03-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-04-12 09:07:10 IP:61.66.xxx.xxx 未訂閱
0~255有三位數 DIV AB A/B=A...B A/D值除100 取商數 為百位數 餘數再除10 取商數 為十位數 取餘數 為個位數
系統時間:2024-05-08 8:18:37
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!