à¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺäÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC ´ Ç mikroC áÅСÒ÷´Åͧàº×Íé §µ ¹ void main() { /* Initial port for control motor */ ANSELH.F0=0; // RB1 ==> ANSELH.F2=0; // RB2 ==> TRISB.F1=0; // Motor B TRISB.F2=0; // Motor B TRISD.F0=0; // Motor A TRISD.F1=0; // MOtor A
l 141
Digital IO Digital IO 2A 2B 1A 1B
/* Initial PWM module freq = 5 kHz */ Pwm1_Init(5000); // Initail PWM 1E Pwm2_Init(5000); // Initail PWM 2E Pwm1_Start(); Pwm2_Start(); Pwm1_Change_Duty(190); // Motor A 75% Speed Pwm2_Change_Duty(190); // Motor B 75% Speed while(1) { PORTD.F0 =0;PORTD.F1 =1; // Motor A Forward PORTB.F1 =0;PORTB.F2 =1; // Motor B Forward Delay_ms(2000); PORTB.F1 =1;PORTB.F2 =0; // Motor B Backward PORTD.F0 =1;PORTD.F1 =0; // Motor A Backward Delay_ms(2000); } }
¡Ò÷íÒ§Ò¹¢Í§â»Ãá¡ÃÁ â»Ãá¡ÃÁ¡íÒ˹´¤ÇÒÁ¶Õ¢è ͧÊÑÒ³¾ÑÅÊ Ç´Ô ¸ ÁÍ´ÙàŪѹè ËÃ×Í PWM äÇ ·Õè 5kHz ¼ Ò¹¤íÒÊѧè Pwm_Init() ¨Ò¡¹Ñ¹é àÃÔÁè µ ¹¡Ò÷íÒ§Ò¹¢Í§âÁ´ÙÅ PWM ´ Ç¡ÒÃÊ §¤íÒÊѧè Pwm_Start() áÅСíÒ˹´¤ Ò¤ÇÒÁ¡Ç Ò§¢Í§ ÊÑÒ³ PWM ´ ǤíÒÊѧè Pwm_Chage_Duty()ã¹·Õ¹è ¡Õé Òí ˹´¤ ÒäÇ à· Ò¡Ñº 190 «Ö§è àÁ×Íè ¤íҹdz¤ ÒÍÍ¡à» ¹ à»Íà ૹµ ¨ÐÁÕ¤Ò »ÃÐÁÒ³ 75% àÁ×Íè ¹íÒ仢ѺÁÍàµÍà ÁÍàµÍà ¨ÐËÁعä»ã¹·ÔÈ·Ò§µÃ§ 2 ÇÔ¹Ò·Õ áÅÐËÁع¡ÅѺ 2 ÇÔ¹Ò·ÕÊÅѺ¡Ñ¹ä»àÃ×Íè  æ
â»Ãá¡ÃÁ·Õè L14-1 ä¿Å PWMtest.c â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ·´Êͺ¡ÒäǺ¤ØÁ¤ÇÒÁàÃçǢͧÁÍàµÍà 俵ç â´Âãª Ê Ñ Ò³ PWM ·ÕÊè à ҧ¢Ö¹é ¨Ò¡äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC16F87/887 ´ Ç¿ §¡ ª¹Ñè PWM ¢Í§ mikroC ¤ÍÁä¾àÅÍÃ