|
Tài trợ cho PIC Vietnam |
Đó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 |
24-10-2009, 12:41 PM | #1 |
Nhập môn đệ tử
Tham gia ngày: Sep 2009
Bài gửi: 2
: |
động cơ bước
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; } } } thay đổi nội dung bởi: phamminhtuan, 04-12-2009 lúc 08:25 AM. Lý do: Định dạng code |
|
|