|
Tài trợ cho PIC Vietnam |
Luận văn tốt nghiệp Nếu bạn thắc mắc vì sao chúng tôi muốn phổ biến các luận văn tốt nghiệp? Xin xem tại đây |
|
Ðiều Chỉnh | Xếp Bài |
04-12-2012, 10:00 AM | #2 |
Nhập môn đệ tử
Tham gia ngày: May 2010
Bài gửi: 7
: |
theo mình thấy chương trình của bạn có 1 lỗi dễ nhận thấy là: bạn có 2 hàm main tương ứng là 2 vòng while(true). như vậy chương trình nếu vào 1 vòng thì sẽ ko vào vòng thứ 2
mình đã sửa code của bạn như thế này và chạy đc. bạn thử xem sao //#include<16f877A.h> #include <def_16f877a.h> #device *=16 ADC=8 #fuses NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT #use delay(clock=20000000) #include <lcd.c> int16 analogvalue, digitalvalue; void hienthi() { //Hien thi gia tri analog lcd_gotoxy(1,1); lcd_putc(" Analog value: "); lcd_putc(analogvalue/100+0x30); lcd_putc("."); lcd_putc((analogvalue/10)%10+0x30); lcd_putc(analogvalue%10+0x30); //Hien thi gia tri digital: lcd_gotoxy(1,2); lcd_putc(" Digital value:"); lcd_putc(digitalvalue/100+0x30); lcd_putc((digitalvalue%100)/10+0x30); lcd_putc(digitalvalue%10+0x30); } void main() { set_tris_D(0x00); setup_ccp1(CCP_PWM); // Configure CCP1 as a PWM setup_timer_2(T2_DIV_BY_4, 255, 16); // giá tr? b? chia t?n s? timer 2 là 4. // Th?i gian m?t chu k?: (255+1)*4*4/20 = 204.8 (us) setup_port_a(ALL_ANALOG); setup_adc(adc_clock_internal); set_adc_channel( 0 ); lcd_init(); //Khoi tao gia tri cac bien trung gian portd=0; //Bat dau vong lap chuong chinh while(true) { digitalvalue=read_adc(); //??c giá tr? t? chi?t áp ?i?u ch?nh t?c ?? analogvalue= ((digitalvalue*100)/256)*5; set_pwm1_duty(analogvalue*2); // Thi?t l?p ?? r?ng xung hienthi(); } } thay đổi nội dung bởi: huankhi, 04-12-2012 lúc 10:33 AM. Lý do: sửa code |
|
|