作者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