|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
|
Ðiều Chỉnh | Xếp Bài |
18-04-2012, 04:27 PM | #4 |
Đệ tử 1 túi
Tham gia ngày: Jan 2010
Bài gửi: 11
: |
Em có đoạn code này đọc adc của 18f4550....mô phỏng trên proteus mà vẫn chưa đọc được
#include<18f4550.h> #fuses nowdt,noprotect,hs,nolvp,put #use delay(clock=20000000) #use fast_io(b) #use fast_io(d) #use fast_io(a) //dinh nghia 1 so thanh ghi cua bo ADC #byte adcon0=0xfc2 #byte adcon1=0xfc1 #byte adcon2=0xfc0 #byte adresl=0xfc3 #byte adresh=0xfc4 #bit godone = adcon0.1 // bit cho phep adc hoat dong // cung la bit báo cho biet adc da chuyen doi xong #bit adon = adcon0.0 // bit mo nguon cho adc unsigned char digit[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0}; int8 a,b,c,d; //ham doc gia tri cua bo ADC....gia tri tra ve la 1 so 16 bit int16 doc_adc() { int16 tam; adon=1; //bat nguon cho adc delay_us(10); godone=1; //bat dau chuyen doi while(godone); //wait tam=adresh; tam=tam<<8+adresl; adon=0; return tam; } void hextobcd(int16 xx) { a=xx%10; //don vi b=(xx%100)/10; //chuc c=(xx%1000)/100; //tram d=(xx%10000)/1000; //nghin } void hienthi() { int8 i; i=0; while(i<100) { output_d(digit[a]); output_b(0xf7); delay_ms(1); output_b(0xff); output_d(digit[b]); output_b(0xfb); delay_ms(1); output_b(0xff); output_d(digit[c]); output_b(0xfd); delay_ms(1); output_b(0xff); output_d(digit[d]); output_b(0xfe); delay_ms(1); output_b(0xff); i++; } } main() { adcon0=0x00; adcon1=0x37; adcon2=0x80; set_tris_b(0); set_tris_d(0); set_tris_a(0xff); while(1) { hextobcd(doc_adc()); hienthi(); } } |
|
|