doc encoder 16f877a

Upload: cao-quang-hung

Post on 04-Nov-2015

1 views

Category:

Documents


0 download

DESCRIPTION

qe

TRANSCRIPT

#include #define LCD_RS PIN_D0 #define LCD_RW PIN_D1 #define LCD_EN PIN_D2 #define LCD_D4 PIN_D4 #define LCD_D5 PIN_D5 #define LCD_D6 PIN_D6 #define LCD_D7 PIN_D7#include //#bit chaB7=0x06.7long pluse=0,ctimer=0,number=0;void encoder_LCD();int8 chuoi[20];void encoder_LCD();int16 a=0,c=50;#INT_EXTvoid interrupt(){ if (input(PIN_C6)==0) pluse=pluse+1; else if (input(PIN_C6)==1) pluse=pluse-1;}#int_Timer0void ngat_timer0(){ ctimer++; if (ctimer==4) { encoder_LCD(); ctimer=0; a++; if (a==100) { if (c==116) c=50; c=c+6; a=0; } //! if (a==200) c=75;//! if (a==300) c=81;//! if (a==400) c=88; //94//! if (a==500) c=100;//! if (a==600) c=69; } set_timer0(12); }void main(){ set_tris_d(0x00); set_tris_b(0xff); set_tris_c(0x00); LCD_start(); delay_ms(20); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256|RTCC_8_bit); setup_ccp1(CCP_PWM); setup_timer_2(T2_DIV_BY_4,124,1); enable_interrupts(GLOBAL); enable_interrupts(int_timer0); ext_int_edge(h_to_l); set_timer0(12); //set_pwm1_duty();c=50;a=0; LCD_clscreen(); output_high(PIN_B1); output_low(PIN_B1);while(TRUE) { set_pwm1_duty(c); }}void encoder_LCD(){ LCD_setcursor(2,0); number=(pluse/100)/0.0488; sprintf(chuoi,"%ld",number); LCD_char(chuoi); //delay_us(10);}