PIC Vietnam

Go Back   PIC Vietnam > Ban Điều Hành > Đóng góp ý kiến

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

Đóng góp ý kiến Nơi tiếp nhận những ý kiến đóng góp của thành viên

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 04-12-2009, 08:28 AM   #2
phamminhtuan
Super Moderator
 
phamminhtuan's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 150
:
Trích:
Nguyên văn bởi lehongviet View Post
Các bạn xem giúp mình đoạn code và mô phỏng sau, và làm sao để led xuất liên tục chứ không nhấp nháy.Xin chỉ giúp
chưong trình:
Code:
/*******BAT DAU CHUONG TRINH************/
#INCLUDE <16F877A.H>
#INCLUDE <DEF_877A.H>
#DEFINE STOP PIN_B4
#DEFINE DKTH PIN_B5
#DEFINE DKNG PIN_B6
#FUSES   NOWDT,PUT,HS,NOPROTECT,NOLVP
#USE     DELAY(CLOCK=20000000)   //SU DUNG THACH ANH 20MHZ
#USE  FAST_IO(A)
#USE  FAST_IO(B)
#USE  FAST_IO(D)
INT8  I,BCHUC,BDVI,VDVI,VCHUC;
INT8  SBUOC=0,A,SVONG=0;
INT8  R_KEY=0;
CONST UNSIGNED CHAR 
DIG[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};
CONST UNSIGNED CHAR ROTATE[]={14,12,13,9,11,3,7,6};
/*********************************************************
CHUONG TRINH DIEU KHIEN LED QUAY THUAN
SU DUNG LOAI DONG CO BUOC 48 RANG
DIEU KHIEN NUA BUOC
*/
//CHUONG TRINH NGAT RB
#INT_RB
VOID NGAT_RB()
{
   IF(RBIF==1)
      {
      IF(INPUT(STOP)==0){A=0;}
      IF(INPUT(DKTH)==0){A=1;}
      IF(INPUT(DKNG)==0){A=2;}
      }
   RBIF=0;
}
//CHUONG TRINH DOI SO BUOC, SO VONG RA SO BCD
void HEX_BCD()
{
   VCHUC=SVONG/10;
   VDVI=SVONG%10;
   BCHUC=SBUOC/10;
   BDVI=SBUOC%10;
}
void HIENTHI1()
{
      PORTC=DIG[BDVI];           //HIEN THI SO BUOC DON VI
      PORTD=0X0F;
      DELAY_US(100);
      PORTD=0;                   //CHONG LEM
      PORTC=DIG[BCHUC];          //HIEN THI SO BUOC CHUC
      PORTD=0X17;
      DELAY_US(100);
PORTD=0;
      PORTC=0XBF;                //HIEN THI DAU GACH PHAN CACH
      PORTD=0X1B;
      DELAY_US(100);
      PORTD=0;
      PORTC=DIG[VDVI];           //HIEN THI SO VONG DON VI
      PORTD=0X1D;
      DELAY_US(100);
      PORTD=0;
      PORTC=DIG[VCHUC];          //HIEN THI SO VONG CHUC
      PORTD=0X1E;
      DELAY_US(100);
      PORTD=0;
}
void HIENTHI()
{
   I=0;
   SBUOC++;
   IF(SBUOC>95){
               SBUOC=0;
               SVONG++;
               IF(SVONG>99){SVONG=0;}
               }
   HEX_BCD();
   WHILE(I<10)
      {
      HIENTHI1();
      I++;
      }
}
void QUAYTHUAN()
{
   PORTA=ROTATE[R_KEY];
   HIENTHI();
   IF (R_KEY < 7){R_KEY++;}
   ELSE R_KEY=0;
}
void QUAYNGICH()
{
   PORTA=ROTATE[R_KEY];
   HIENTHI();
   IF (R_KEY > 0){R_KEY--;}
   ELSE R_KEY=7;
}
void STP()
{
OUTPUT_A(0XFF);
HEX_BCD();
HIENTHI1();
}
VOID MAIN ()
{
SET_TRIS_A(0);        // PORTA DIEU KHIEN DONG CO BUOC
SET_TRIS_B(0XFF);     // PORTB LA PORT NHAP DU LIEU
SET_TRIS_C(0);        // PORTC XUAT MA HIEN THI
SET_TRIS_D(0);        // PORTD QUET LED
ENABLE_INTERRUPTS(GLOBAL);    //CHO PHEP NGAT TOAN CUC
ENABLE_INTERRUPTS(INT_RB);    //CHO PHEP NGAT RB
EXT_INT_EDGE(H_TO_L);         //CHO PHEP NGAT CANH XUONG
A=0;
WHILE(true)
   {
   SWITCH(A)
      {
      CASE 0 : STP();         //NEU A=0 THI STOP
      BREAK;
      CASE 1 : QUAYTHUAN();   //NEU A=1 THI QUAY THUAN
      BREAK;
      CASE 2 : QUAYNGICH();   //NEU A=2 THI QUAY NGHICH
      BREAK;
      }
   }
}
Em không gửi được file đính kèm hình ảnh,xin thông cảm
Nếu bạn mô phỏng là chạy được mà chỉ nhấp nháy thôi thì bạn nên dùng mạch thật, vì khả năng mô phỏng animation tốc độ cao của một số trình mô phỏng còn hạn chế
phamminhtuan 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à 11:39 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