PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Tìm Kiếm Bài Trong Ngày Ðánh Dấu Ðã Ðọc Vi điều khiển

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
Prev Previous Post   Next Post Next
Old 06-10-2010, 06:49 PM   #1
zmaxtil
Nhập môn đệ tử
 
Tham gia ngày: Apr 2008
Bài gửi: 8
:
Mạch đồng hồ đếm lùi

Em đang làm một mạch đếm lùi thời gian,dùng 6 Led 7 đoạn A chung,Khi giờ phút giây đều là 0 thì sẽ set cho một chân RC6 lên mức 1 để kích gì đó,dùng ngắt ngoài để vào mode chỉnh time,ngắt timer để cứ 1s thì cho giảm một đơn vị giây.Nhưng sao nó chạy táng lạng luôn,các cao thủ chỉ giúp em .em gửi code và file mô phỏng lên để các bác xem nó chạy.em chỉ mới làm phần cho nó đếm về 0 ,chưa xong nên em chưa làm phần kích chân Rc6,nhờ các bác chỉ giáo.

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
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
 {if (x==0)  {x=59;y--;} else x=x-1;k==0;
 if (y==0)  {y=59;z--;} else y=y-1; 
 }
}

 //******************Hien thi***********************
 void hienthi()
 {
   s_chuc=x/10;
   s_dv=x%10;
   m_chuc=y/10;
   m_dv=y%10;
   h_chuc=z/10;
   h_dv=z%10;
   
  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=y=z=10;
 enable_interrupts(GLOBAL);
 enable_interrupts(INT_EXT);
 portc=0;
 portd=0;
 set_tris_c(0);
 set_tris_d(0);
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();
 }
 }
 }
File Kèm Theo
File Type: rar Mach dem lui.rar (49.5 KB, 84 lần tải)

thay đổi nội dung bởi: zmaxtil, 06-10-2010 lúc 07:33 PM.
zmaxtil vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 

Ðiều Chỉnh
Xếp Bài

Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 02:51 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam