2進制轉BCD碼(8051) |
缺席
|
uls
一般會員 發表:3 回覆:1 積分:0 註冊:2005-03-15 發送簡訊給我 |
我因為要用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 發送簡訊給我 |
設兩個變數,分別記錄個位數與十位數
將ADC輸入的值除以10,商存入十位數,餘數存入個位數 再將十位數與個位數組合,分別存入ACC的高位元組與低位元組
再送至7447輸出顯示
也可直接分別輸出至P1.0~P1.3與P2.0~P2.3 送至7447輸出顯示
------
------------------------------------------------------------------------- 走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!? |
penguin5
資深會員 發表:116 回覆:317 積分:431 註冊:2004-05-09 發送簡訊給我 |
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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |