|
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 |
20-12-2010, 06:25 PM | #4 |
Nhập môn đệ tử
Tham gia ngày: Jan 2010
Bài gửi: 4
: |
các anh ơi kíu em với.Em đang làm đồ án vxl lập trình robot dùng 16f877a mà chưa biết j nhìu.Em cóp nhạt vài đoạn code viet lại thi robot toan di lùi.Các cao thủ kíu em bàn thua này với.
doan code cua em the này,các bác đọc đừng cười nhé ---------------------------------------------------------------- #include "16f877a.h" #include "DEF_877A.H" #INT_EXT #use delay(clock=12000000hz) #fuses HS,NOWDT,NOPROTECT,NOLVP /*DINH NGHIA CHAN*/ #define tien1 rc1 #define LUI1 rc0 #define tien2 rc2 #define LUI2 rc3 #define CHAY1 rc4 #define CHAY2 rc5 #define GAT3 rc6 #define hanh_trinh ra4 #define SENSOR PORTB /*#define SENSOR1 rb1 #define SENSOR2 rb2 #define SENSOR3 rb3 #define SENSOR4 rb4 #define SENSOR5 rb5 #define SENSOR6 rb6*/ /*KHAI BAO CON*/ void trai_tien(); void trai_lui(); void trai_dung(); void fai_tien(); void fai_lui(); void fai_dung(); void TIEN(); void LUI(); void RE_TRAI(); void RE_FAI(); void STOP(); void GAT_VAT(); void DO_VAT(); void KIEM_TRA_VACH(); void GIUA_VACH(); void kt_SENSOR(); void TOI_DICH(); /*CHUONG TRINH CON CO BAN*/ void trai_tien() { CHAY1=1; TIEN1=1; LUI1=0; } void trai_lui() { CHAY1=1; TIEN1=0; LUI1=1; } void trai_dung() { CHAY1=0; } void fai_tien() { CHAY2=1; TIEN2=1; LUI2=0; } void fai_lui() { CHAY2=1; TIEN2=0; LUI2=1; } void fai_dung() { CHAY2=0; } void TIEN() { trai_tien(); fai_tien(); } void LUI() { trai_lui(); fai_lui(); } void RE_FAI(int i) { fai_dung(); trai_tien(); } void RE_TRAI(int i) { trai_dung(); fai_tien(); } void STOP() { trai_dung(); fai_dung(); } /*HAM HO TRO*/ void trai_tien(int i) { CHAY1=1; SETUP_TIMER_2(T2_DIV_BY_4,124,1); SETUP_CCP2(CCP_PWM); SET_PWM2_DUTY(i); } void fai_tien(int i) { CHAY2=1; SETUP_TIMER_2(T2_DIV_BY_4,124,1); SETUP_CCP1(CCP_PWM); SET_PWM1_DUTY(i); } /*XU LY TOC DO*/ void TOC_DO (signed int TOC_DO_TRAI, signed int TOC_DO_FAI) { int TRAI_PWM_i=0,FAI_PWM_i=0; /* TRAI */ if( TOC_DO_TRAI >= 0 ) { TRAI_PWM_i = 1.25*TOC_DO_TRAI; TRAI_TIEN(TRAI_PWM_i); } else { TOC_DO_TRAI = -TOC_DO_TRAI; TRAI_PWM_i = 1.25*TOC_DO_TRAI; /* FAI */ if( TOC_DO_FAI >= 0 ) { FAI_PWM_i = 1.25*TOC_DO_FAI; FAI_TIEN(FAI_PWM_i); } else { TOC_DO_FAI = -TOC_DO_FAI; FAI_PWM_i = 1.25*TOC_DO_FAI; } } } /* DIEU KHIEN CHINH*/ void GAT_VAT() { STOP(); GAT3=1; { char x=0; TRISA = 0b00010000; TRISC=0x0; PORTC=0; SETUP_TIMER_0(RTCC_EXT_H_TO_L); SET_RTCC(0); while (true) { x=GET_RTCC(); if (x==2) GAT3=0; } } } void main() { TRISB=0x01; TRISC=0x00; enable_interrupts(GLOBAL); enable_interrupts(INT_EXT); } switch (SENSOR) { case 0b11111110 : GAT_VAT(); break; case 0b11111100 : GAT_VAT(); break; case 0b11000000 : GAT_VAT(); break; case 0b11100000 : GAT_VAT(); break; case 0b10100000 : GAT_VAT(); break; case 0b10110000 : GAT_VAT(); break; case 0b10010000 : GAT_VAT(); break; case 0b10011000 : GAT_VAT(); break; case 0b10001000 : GAT_VAT(); break; case 0b10001100 : GAT_VAT(); break; case 0b10000100 : GAT_VAT(); break; case 0b00000000: LUI() ; break; case 0b00010000: TIEN() ; break; case 0b00110000: RE_TRAI(80) ; break; case 0b00100000: RE_TRAI(60) ; break; case 0b01100000: RE_TRAI(40) ; break; case 0b01000000: RE_TRAI(30) ; break; case 0b00011000: RE_FAI(80) ; break; case 0b00001000: RE_FAI(60) ; break; case 0b00001100: RE_FAI(40) ; break; case 0b00000100: RE_FAI(20) ; break; case 0b01111100: TIEN() ; break; case 0b01111110: STOP() ; break; } } |
|
|