![]() |
|
|
|
|
#1 |
|
Nhập môn đệ tử
Tham gia ngày: Jul 2010
Bài gửi: 5
: |
Code:
---------------------------------------------------------------- #include <pic.h> #ifndef _XTAL_FREQ #define _XTAL_FREQ 4000000 #endif __CONFIG(UNPROTECT & BORDIS & MCLRDIS & PWRTEN & WDTDIS & INTIO); __IDLOC(0100); #define VDD 5000 void ioport_adc() { GPIO0 = 0; //output value TRIS0 = 0; //output pin ANS0 = 0; //digital pin TRIS1 = 1; //input pin ANS1 = 1; //analog input pin ADON = 1; //ADコンバータを電源オンする ADFM = 1; //AD変換結果データは右詰めるにする ADCS0 = 1; //AD 変更クロックをFosc/8にする ADCS1 = 0; ADCS2 = 0; CHS0 = 1; // AN1ピンの電圧をAD交換する CHS1 = 0; _delay(1000); ADIF = 0; //割り込みフラグ。ピットを0にする ADIE = 1; // PIE1レジスタに関連する割り込みを使 PEIE = 1; GIE = 0; //we don't want interrupt } unsigned short adc_read () { GODONE = 1; _delay(1000); while (GODONE); return (ADRESH*256 + ADRESL); //return 8 MSB of the result } void putch(unsigned char tx_byte) { unsigned char i; GPIO0 =0; _delay(1000); for(i=0; i<8; i++) { _delay(200); GPIO0 = (tx_byte&0x01); tx_byte>>=1; tx_byte |= 0x80; } } void adc_control () { unsigned short volts; ADIE = 1; PEIE = 1; while (1) { ioport_adc(); _delay(200); _delay(200); _delay(200); volts = (long)adc_read()*(VDD/255); putch(volts); } } void main(void) { OSCCAL = _READ_OSCCAL_DATA(); ioport_adc(); while (1){ adc_control(); } } |
|
|
|
|
|
#2 |
|
Đệ tử 4 túi
Tham gia ngày: May 2007
Bài gửi: 81
: |
Tui hay viết bằng CCS nên ko hiểu đoạn code của bạn cho lắm :P. Nhưng có điều ở đây là: thường thì code sai thì cũng đâu có gây chết chip nhỉ?! Theo tui nghĩ chip của bạn chết nguyên nhân là do cấp nguồn sai hoặc bị quá nguồn thôi.
Gửi bạn 1 cái sơ đồ tương tự để tham khảo. |
|
|
|
![]() |
| Ðiều Chỉnh | |
| Xếp Bài | |
|
|