![]() |
|
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 |
![]() |
#5 | |
Đệ tử 7 túi
Tham gia ngày: May 2005
Bài gửi: 258
: |
Trích:
tôi đã sửa lại code cho ban chạy mô phỏng OK. Code:
#include <16f877a.h> #fuses HS,NOWDT,NOPROTECT,NOLVP #use delay(clock=20000000) #use fast_io(d) #use fast_io(c) #use fast_io(a) #byte portb = 0x06 #byte portc = 0x07 #byte portd = 0x08 #bit rb1 = portb.1 #bit rb2 = portb.2 #bit rb3 = portb.3 #bit led = portb.7 int mode_= 0; int i,j,k,x,y,z; int s_chuc,s_dv,m_chuc,m_dv,h_chuc,h_dv; #int_ext void mode() {disable_interrupts(INT_TIMER2); if (mode_ == 0) disable_interrupts(INT_TIMER2); mode_ +=1; if (mode_ > 3) mode_ = 1; } #int_timer2 void update() { setup_timer_2(t2_div_by_16,6,10); // na.p la.i cho timer 2 k++ ; // ta(ng bie^'n ?e^'m if ( k == 250 ) /// 250 x 4.000 = 10.000.000 us { k=0; if(x==0&y==0&z==0)//sửa tại đây { led=1; } else { if (z==0) {z=99;y--;} z=z-1; if (y==0) { if(x>0) { y=59; x--; } if(y>0) { y--; } } } } } //******************Hien thi*********************** void hienthi() { s_chuc=z/10;//sửa tại đây s_dv=z%10; m_chuc=y/10; m_dv=y%10; h_chuc=x/10; h_dv=x%10;//sửa tại đây for(j=0;j<=50;j++) { portc=0b00100000; i=s_dv; portd=i; delay_us(500); portc=0b00010000; i=s_chuc; portd=i; delay_us(500); portc=0b00001000; i=m_dv; portd=i; delay_us(500); portc=0b00000100; i=m_chuc; portd=i; delay_us(500); portc=0b00000010; i=h_dv; portd=i; delay_us(500); portc=0b00000001; i=h_chuc; portd=i; delay_us(500); } } // ********************Chuong trinh chinh************************* void main() { x=0; y=2; z=99; led=0; enable_interrupts(GLOBAL); enable_interrupts(INT_EXT); portc=0; portd=0; set_tris_c(0); set_tris_d(0); set_tris_b(0x0f); while(1) { while(!mode_) { if(rb3) { enable_interrupts(INT_TIMER2); setup_timer_2(t2_div_by_16,6,10); hienthi(); } hienthi(); } while(mode_>0) { if(rb1) { while(rb1) { hienthi();} if (x>=59) x = 0; else x +=(mode_==1)?1:0; if (y>=59) y = 0; else y +=(mode_==2)?1:0; if (z>=99) z = 0; else z +=(mode_==3)?1:0; } if(rb2) { while(rb2) { hienthi();} if (x==0) x = 59; else x -= (mode_==1)?1:0; if (y==0) y = 59; else y -= (mode_==2)?1:0; if (z==0) z = 99; else z -= (mode_==3)?1:0; } if(rb3) { enable_interrupts(INT_TIMER2); setup_timer_2(t2_div_by_16,6,10); // (4/20M)*4*C0*2 } hienthi(); } } } Code:
#include <16f877a.h> #fuses HS,NOWDT,NOPROTECT,NOLVP #use delay(clock=20000000) #use fast_io(d) #use fast_io(c) #use fast_io(a) #byte portb = 0x06 #byte portc = 0x07 #byte portd = 0x08 #bit rb1 = portb.1 #bit rb2 = portb.2 #bit rb3 = portb.3 #bit led = portb.7 int mode_= 0; int i,j,k,x,y,z; int s_chuc,s_dv,m_chuc,m_dv,h_chuc,h_dv; #int_ext void mode() {disable_interrupts(INT_TIMER2); if (mode_ == 0) disable_interrupts(INT_TIMER2); mode_ +=1; if (mode_ > 3) mode_ = 1; } #int_timer2 void update() { setup_timer_2(t2_div_by_16,6,10); // na.p la.i cho timer 2 k++ ; // ta(ng bie^'n ?e^'m if ( k == 250 ) /// 250 x 4.000 = 10.000.000 us { k=0; if(x==0&y==0&z==0)//sửa tại đây { led=1; } else { if (z==0) {z=99;y--;} z=z-1;k==0; if (y==0) { if(x>0) { y=59; x--; } if(y>0) { y--; } } } } } //******************Hien thi*********************** void hienthi() { s_chuc=z/10;//sửa tại đây s_dv=z%10;//sửa tại đây m_chuc=y/10; m_dv=y%10; h_chuc=x/10;//sửa tại đây h_dv=x%10;//sửa tại đây for(j=0;j<=50;j++) { portc=0b00100000; i=s_dv; portd=i; delay_us(500); portc=0b00010000; i=s_chuc; portd=i; delay_us(500); portc=0b00001000; i=m_dv; portd=i; delay_us(500); portc=0b00000100; i=m_chuc; portd=i; delay_us(500); portc=0b00000010; i=h_dv; portd=i; delay_us(500); portc=0b00000001; i=h_chuc; portd=i; delay_us(500); } } // ********************Chuong trinh chinh************************* void main() { x=0; y=2; z=99; led=0; enable_interrupts(GLOBAL); enable_interrupts(INT_EXT); portc=0; portd=0; set_tris_c(0); set_tris_d(0); set_tris_b(0x0f); while(1) { while(!mode_) { if(rb3) { enable_interrupts(INT_TIMER2); setup_timer_2(t2_div_by_16,6,10); hienthi(); } hienthi(); } while(mode_>0) { if(rb1) { while(rb1) { hienthi();} if (x>=59) x = 0; else x +=(mode_==1)?1:0; if (y>=59) y = 0; else y +=(mode_==2)?1:0; if (z>=99) z = 0; else z +=(mode_==3)?1:0; } if(rb2) { while(rb2) { hienthi();} if (x==0) x = 59; else x -= (mode_==1)?1:0; if (y==0) y = 59; else y -= (mode_==2)?1:0; if (z==0) z = 99; else z -= (mode_==3)?1:0; } if(rb3) { enable_interrupts(INT_TIMER2); setup_timer_2(t2_div_by_16,6,10); // (4/20M)*4*C0*2 } hienthi(); } } }
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề. |
|
![]() |
![]() |
|
|