作者grlie8027 (小靖)
看板ASM
標題[問題] 8051 0804ADC光敏電阻直轉換問題
時間Mon Apr 27 18:46:58 2009
程式如下
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
1F:→ ksmrt0123:你程式都不縮排的嗎? 04/27 19:32
2F:→ ksmrt0123:可能是 while(--simple==0) 這邊有問題... 04/27 19:33
3F:推 ruemann:為什麼要用 while ? 另外 temp 最大也才 255,除1000做啥? 04/27 20:44
4F:→ ruemann:另外就是int是16bits嗎? 04/27 20:45
5F:→ ksmrt0123:我用過的8051 C (Keil/IAR) 的int是 16 bits沒錯 04/27 23:07
6F:→ grlie8027:除1000好像就是各什百千位 還是BUFFER也是LCD的程式? 04/28 05:55
7F:推 wuonline:除1000:取千位數值,除100:取百位數值,除10:取十位數值 04/28 10:41
8F:→ wuonline:%:取餘數 04/28 10:41
9F:→ grlie8027:重點是 這城市這樣有問題嗎 04/28 12:34
10F:→ grlie8027:還有要取光敏轉換後數值是要用temp還是value 04/28 12:35
11F:推 squall0734:正確的電阻直應該是value吧~temp應該是要轉換成lcd顯 07/02 18:09
12F:→ squall0734:示才做的換算~看這程式應該之前使用熱敏電阻測溫度用的 07/02 18:09