H
Hasher
Guest
Xin chào!
Tôi đang
sử dụng PIC18F2420 (pha lê = 8MHz & & HS-PLL) với HiTech C compiler.
Tôi muốn 50kΩ potentiometer để được chuyển đổi sang kỹ thuật số trên hai 7-phân đoạn hiển thị trên PORTB.
Vấn đề ==> tôi nhận đúng o / p, nhưng với một trong những trừ.Tôi có nghĩa là nếu áp dụng 50KΩ tôi nhận 0xFE chứ không phải là 0xFF và nếu được áp dụng 0kΩ tôi nhận 0x01 chứ không phải là 0x00.
Chương trình ==>
# bao gồm <pic18.h>
# bao gồm "config.h"
# bao gồm "delay.h"
# bao gồm "jwb.h"
int adc_value;
void init (void);
unsigned char ReadAdcChannel (unsigned char c);
void main (void)
(
unsigned char val0;
char i;
unsigned char c;
đôi dval0;
init ();
trong khi (1)
(
val0 = ReadAdcChannel (0);
/ / dval0 = 5,0 * val0 / 1024; / / chuyển đổi giá trị vào AN0 phao (giả sử Vdd = 5V)
PORTB = val0;
)
void init (void)
(
Porta = 0x00;
/ / ADC Clock INTERNAL CHỌN VÀ Bật ADC
ADCS2 = 0; ADCS1 = 1; ADCS0 = 1; ADON = 1;
/ / ONLY CH0 LỰA CHỌN LÀ ĐỐI VỚI INTERNAL REF = VCC VÀ REF-= GND
PCFG0 = 0; PCFG1 = 1; PCFG2 = 1; PCFG3 = 1;
SET_AS_INPUT (TRISA, BIT0 | BIT1);
TRISB = 0x00;
)
unsigned char ReadAdcChannel (unsigned char c)
(
unsigned char temp;
/ / CLEAR GODONE BIT, CHS0 = CHS1 = CHS2 = 000 ĐẾN CHỌN KÊNH 0
CHS0 = 0; CHS1 = 0; CHS2 = 0; GODONE = 0;
DelayUs (20); / / chờ 20us cho ADC để sẵn sàng
GODONE = 1; / / bắt đầu chuyển đổi ADC
trong khi (GODONE); / / sau đó chờ đợi cho ADC để kết thúc
nếu (ADFM)
trở lại ((ADRESH <<
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Mát mẻ" border="0" />
| ADRESL);
khác
trở lại ((ADRESH <<2) | (ADRESL>> 6));
ADRESH trở lại;
)================================================== ===
jwb.h
================================================== ===
# xác định SET_AS_INPUT (cổng, bit) cổng | = (bits)
# xác định SET_AS_OUTPUT (cổng, bit) cổng & = (~ (bit))
# xác định BIT0 0x01
# xác định BIT1 0x02
# xác định BIT2 0x04
# xác định BIT3 0x08
# xác định BIT4 0x10
# xác định BIT5 0x20
# xác định BIT6 0x40
# xác định BIT7 0x80
Tôi đang
sử dụng PIC18F2420 (pha lê = 8MHz & & HS-PLL) với HiTech C compiler.
Tôi muốn 50kΩ potentiometer để được chuyển đổi sang kỹ thuật số trên hai 7-phân đoạn hiển thị trên PORTB.
Vấn đề ==> tôi nhận đúng o / p, nhưng với một trong những trừ.Tôi có nghĩa là nếu áp dụng 50KΩ tôi nhận 0xFE chứ không phải là 0xFF và nếu được áp dụng 0kΩ tôi nhận 0x01 chứ không phải là 0x00.
Chương trình ==>
# bao gồm <pic18.h>
# bao gồm "config.h"
# bao gồm "delay.h"
# bao gồm "jwb.h"
int adc_value;
void init (void);
unsigned char ReadAdcChannel (unsigned char c);
void main (void)
(
unsigned char val0;
char i;
unsigned char c;
đôi dval0;
init ();
trong khi (1)
(
val0 = ReadAdcChannel (0);
/ / dval0 = 5,0 * val0 / 1024; / / chuyển đổi giá trị vào AN0 phao (giả sử Vdd = 5V)
PORTB = val0;
)
void init (void)
(
Porta = 0x00;
/ / ADC Clock INTERNAL CHỌN VÀ Bật ADC
ADCS2 = 0; ADCS1 = 1; ADCS0 = 1; ADON = 1;
/ / ONLY CH0 LỰA CHỌN LÀ ĐỐI VỚI INTERNAL REF = VCC VÀ REF-= GND
PCFG0 = 0; PCFG1 = 1; PCFG2 = 1; PCFG3 = 1;
SET_AS_INPUT (TRISA, BIT0 | BIT1);
TRISB = 0x00;
)
unsigned char ReadAdcChannel (unsigned char c)
(
unsigned char temp;
/ / CLEAR GODONE BIT, CHS0 = CHS1 = CHS2 = 000 ĐẾN CHỌN KÊNH 0
CHS0 = 0; CHS1 = 0; CHS2 = 0; GODONE = 0;
DelayUs (20); / / chờ 20us cho ADC để sẵn sàng
GODONE = 1; / / bắt đầu chuyển đổi ADC
trong khi (GODONE); / / sau đó chờ đợi cho ADC để kết thúc
nếu (ADFM)
trở lại ((ADRESH <<
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Mát mẻ" border="0" />
| ADRESL);
khác
trở lại ((ADRESH <<2) | (ADRESL>> 6));
ADRESH trở lại;
)================================================== ===
jwb.h
================================================== ===
# xác định SET_AS_INPUT (cổng, bit) cổng | = (bits)
# xác định SET_AS_OUTPUT (cổng, bit) cổng & = (~ (bit))
# xác định BIT0 0x01
# xác định BIT1 0x02
# xác định BIT2 0x04
# xác định BIT3 0x08
# xác định BIT4 0x10
# xác định BIT5 0x20
# xác định BIT6 0x40
# xác định BIT7 0x80