[問題] 8051 0804ADC光敏電阻直轉換問題

看板ASM (組合語言)作者 (小靖)時間15年前 (2009/04/27 18:46), 編輯推噓3(309)
留言12則, 5人參與, 最新討論串1/1
程式如下 http://www.wretch.cc/blog/grlie8027/8647316 #include "at89x51.h" unsigned char xdata adc_port; int sample=1000; unsigned char value; unsigned char buffer[4]={0,0,0,0}; void convert(void); main() { IE=0x81; TCON=0x01; adc_port=0; while(1) ; } void EX0_int(void) interrupt 0 { while(--simple==0) { sample=1000; value=adc_port; convert(); } adc_pot=0; } void convert(void) { unsigned int temp; temp=2*value; buffer[0]=temp/1000; buffer[1]=(temp%1000)/100; buffer[2]=((temp%1000)%100)/10; buffer[3]=((temp%1000)%100)%10; } 原本程式不是這樣 還有加入LCD程式 可是我把他拿掉 剩下功能只要0804把光敏電阻電阻直轉換過來程式就好了 拿掉這樣正確嗎@@? 因為拿掉之後不會顯示 我不知道正不正確= = 還有temp value 哪個才是代表正確得光敏電阻值?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.170.56.98

04/27 19:32, , 1F
你程式都不縮排的嗎?
04/27 19:32, 1F

04/27 19:33, , 2F
可能是 while(--simple==0) 這邊有問題...
04/27 19:33, 2F

04/27 20:44, , 3F
為什麼要用 while ? 另外 temp 最大也才 255,除1000做啥?
04/27 20:44, 3F

04/27 20:45, , 4F
另外就是int是16bits嗎?
04/27 20:45, 4F

04/27 23:07, , 5F
我用過的8051 C (Keil/IAR) 的int是 16 bits沒錯
04/27 23:07, 5F

04/28 05:55, , 6F
除1000好像就是各什百千位 還是BUFFER也是LCD的程式?
04/28 05:55, 6F

04/28 10:41, , 7F
除1000:取千位數值,除100:取百位數值,除10:取十位數值
04/28 10:41, 7F

04/28 10:41, , 8F
%:取餘數
04/28 10:41, 8F

04/28 12:34, , 9F
重點是 這城市這樣有問題嗎
04/28 12:34, 9F

04/28 12:35, , 10F
還有要取光敏轉換後數值是要用temp還是value
04/28 12:35, 10F

07/02 18:09, , 11F
正確的電阻直應該是value吧~temp應該是要轉換成lcd顯
07/02 18:09, 11F

07/02 18:09, , 12F
示才做的換算~看這程式應該之前使用熱敏電阻測溫度用的
07/02 18:09, 12F
文章代碼(AID): #19zOqZ1m (ASM)
文章代碼(AID): #19zOqZ1m (ASM)