![]() |
![]() |
#106 | |
Đệ tử 2 túi
|
Mình thay led 7 đoạn bằng LCD thì không chạy được
Trích:
|
|
![]() |
![]() |
#107 |
Đệ tử 9 túi
|
LCD và led 7 đoạn tất nhiên là khác nhau rồi.
Để thực hiện tốt giải mã matrix phím, bác phải có giải pháp chống nhiễu (run phím) bằng phần cứng, hoặc phần mềm, thông thường là dùng phần mềm. Code bên trên chưa có chống nhiễu ![]()
__________________
Ngày mai bắt đầu từ ngày hôm nay Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này: http://www.picvietnam.com/forum//showthread.php?t=1263 |
![]() |
![]() |
#108 |
Đệ tử 1 túi
Tham gia ngày: Oct 2005
Bài gửi: 21
: |
mình đang viết chương trình cho Robot bằng C nhưng khi chay thì có một số đoạn bị bỏ qua. Thỉnh thoảng thì lại chạy đúng. Các cao thủ về CCS C có thể giải thích giúp mình được ko?
__________________
============================= ________ ![]() ![]() E-mail:leo_xbs1408@yahoo.com "Đi một ngày đàng học một sàng khôn" |
![]() |
![]() |
#109 |
Đệ tử 9 túi
Tham gia ngày: Nov 2005
Bài gửi: 99
: |
bạn phải mói cụ thể hơn công việc của bạn cũng như chương trình thì mọi người mới có thể giúp đỡ chứ
|
![]() |
![]() |
#110 |
Đệ tử 1 túi
Tham gia ngày: Oct 2005
Bài gửi: 21
: |
các bác xem thử một chương trình nhé. ở đây em chỉ viết các modul chương trình con thực hiện chức năng của robot còn chương trình chính thì sẽ gọi các chương trình con tùy theo mình muốn dùng chức năng nào của robot.
Code:
//************************************************************** /////////*FILENAME: CHUONG TRINH DIEU KHIEN ROBOT*////////////// /////////*HARDWARE: PIC16F877 *////////////// /////////*DATE: 19-Nov-06 09:40 *////////////// /////////*CCS PCM C Compiler, Version 3.227 *////////////// /////////*NGUOI THUC HIEN: LEO-XBS *////////////// //************************************************************** #include <16F877A.h> #include <DEFS_16F877A.h> #fuses HS,NOWDT,NOPROTECT,NOLVP #use delay(clock=20000000) #use fast_io(a) #use fast_io(b) #use fast_io(c) #use fast_io(d) #use fast_io(e) //**************************************** //////DINH NGHIA CAC CHAN VA CAC CONG///// //**************************************** #define dc_trai1 rc1 #define dc_trai2 rb1 #define dc_phai1 rc2 #define dc_phai2 rb3 #define dc_nang1 rb4 #define dc_nang2 rb5 #define dc_day1 rb6 #define dc_day2 rb7 #define dc_kep1 rd0 #define dc_kep2 rd1 #define sw1 rc0 //******************************************* ///////KHAI BAO CAC HAM VA BIEN////////////// //******************************************* void setup(); void tien(); void lui(); void dung(); void dk_tien(); void sang_phai(); void sang_trai(); void quay_phai(); void quay_trai(); void dieu_khien(); int led_thu(); void nang(); void ha(); void kep(); void nha(); void day(); void thu(); void program1(); void program2(); int dem,led; const unsigned char lech_phai[7]={0b00001000,0b00010000,0b00011000,0b00100000,0b00101000,0b00110000,0b00111000}; const unsigned char lech_trai[7]={0b00000001,0b00000010,0b00000011,0b00000100,0b00000101,0b00000110,0b00000111}; const unsigned char nhieu[50]={0b00000000,0b00001001,0b00001010,0b00001011,0b00001100,0b00001101,0b00001110,0b00010001,\ 0b00010010,0b00010011,0b00010100,0b00010101,0b00010110,0b00011001,0b00011010,\ 0b00011100,0b00100001,0b00100010,0b00100011,0b00100100,0b00100101,0b00100110,\ 0b00101001,0b00101010,0b00101100,0b00110001,0b00110010,0b00110100,0b00011110,\ 0b00111111,0b00111011,0b00111101,0b00111110,0b00111001,0b00111010,0b00111100,\ 0b00110111,0b00101111,0b00011111,0b00100111,0b00010111,0b00001111,0b00110011,\ 0b00110101,0b00110110,0b00101011,0b00101101,0b00101110,0b00011011,0b00011101}; //***************************************************************************************************************** /////////////////////////////////CHUONG TRINH CHINH//////////////////////////////////////////////////////////////// //***************************************************************************************************************** void main() { setup(); } //***************************************************************************************************************** ///////////////////////////////////CHUONG TRINH 1////////////////////////////////////////////////////////////////// //***************************************************************************************************************** void program1() { while(true) { dieu_khien(); } } //**************************************************************************************************************** //////////////////////////CAC CHUONG TRINH CON//////////////////////////////////////////////////////////////////// //**************************************************************************************************************** void setup() { set_tris_a(0b00111111); set_tris_b(0b00000101); set_tris_c(0b11111001); set_tris_d(0); set_tris_e(0b00000111); portb=0; portd=0; led=0; dem=0; dc_trai1=0; dc_phai1=0; while(true){ if(sw1==0) program1(); } } //*********************************************** void dieu_khien() { led=led_thu(); switch(led) { case 0: dk_tien(); break; case 01: sang_phai(); break; case 02: sang_trai(); break; } if (re0) ++dem; } //************************************************* void tien() { dc_trai1=1; dc_trai2=0; dc_phai1=1; dc_phai2=0; delay_ms(500); } //************************************************** void dk_tien() { while(led_thu()==0) { dc_trai1=1; dc_trai2=0; dc_phai1=1; dc_phai2=0; } } //************************************************** void lui() { dc_trai1=0; dc_trai2=1; dc_phai1=0; dc_phai2=1; delay_ms(1000); } //************************************************** void sang_phai() { setup_ccp1(CCP_PWM); setup_ccp2(CCP_PWM); setup_timer_2(T2_DIV_BY_16, 127, 1); while(led_thu()==1) { set_pwm2_duty(1023); set_pwm1_duty(400); } setup_ccp1(CCP_OFF); setup_ccp2(CCP_OFF); } //************************************************** void sang_trai() { setup_ccp1(CCP_PWM); setup_ccp2(CCP_PWM); setup_timer_2(T2_DIV_BY_16, 127, 1); while(led_thu()==2) { set_pwm2_duty(400); set_pwm1_duty(1023); } setup_ccp1(CCP_OFF); setup_ccp2(CCP_OFF); } //************************************************** void quay_phai() { while(ra1>0){ dc_trai1=1; dc_trai2=0; dc_phai1=0; dc_phai2=1; } } //************************************************** void quay_trai() { while(ra4>0){ dc_trai1=0; dc_trai2=1; dc_phai1=1; dc_phai2=0; } } //************************************************** void dung() { dc_trai1=1; dc_trai2=1; dc_phai1=1; dc_phai2=1; delay_ms(1000); } //************************************************** void nang() { dc_nang1=1; dc_nang2=0; delay_ms(1000); } //************************************************** void ha() { dc_nang1=0; dc_nang2=1; delay_ms(1000); } //************************************************** void day() { dc_day1=1; dc_day2=0; delay_ms(1000); } //************************************************* void thu() { dc_day1=0; dc_day2=1; delay_ms(1000); } //************************************************* void kep() { dc_kep1=1; dc_kep2=0; delay_ms(1000); } //************************************************* void nha() { dc_kep1=0; dc_kep2=1; delay_ms(1000); } //************************************************* int led_thu() { int i; for (i=0;i<7;i++) { if (porta==lech_trai[i]) return(1); else if (porta==lech_phai[i]) return(2); } for (i=0;i<50;i++) { if(porta==nhieu[i]) return(0); } }
__________________
============================= ________ ![]() ![]() E-mail:leo_xbs1408@yahoo.com "Đi một ngày đàng học một sàng khôn" thay đổi nội dung bởi: namqn, 01-01-2007 lúc 09:40 PM. |
![]() |
![]() |
#111 |
Đệ tử 2 túi
Tham gia ngày: Jan 2007
Bài gửi: 34
: |
![]() Ban nao co kinh nghiem ve dieu khien PID post len cho minh tham khao moi! Minh dang chuan bi lam voi PIC 877A.
|
![]() |
![]() |
#112 |
Đệ tử 9 túi
|
Đây là khai báo địa chỉ của thanh ghi portB và thanh ghi intcon. Thường thì mỗi thanh ghi có một địa chỉ, giống như số nhà ấy, bạn khai báo nhầm địa chỉ của nó, nghĩa là bạn vào nhầm nhà rồi còn gì.
Với 16F877A PORTB : địa chỉ 06h INTCON : địa chỉ 0Bh Vì trong file 16F877A.h của CCS C không có khai báo tường tận như trong các file .inc của Microchip, muốn sử dụng cho tiện thì khai báo thêm vào. Bạn mở file .h của con pic đang làm việc ra xem người ta đã khai báo những gì rồi.
__________________
Ngày mai bắt đầu từ ngày hôm nay Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này: http://www.picvietnam.com/forum//showthread.php?t=1263 |
![]() |
![]() |
#113 |
Đệ tử 1 túi
Tham gia ngày: Jan 2006
Bài gửi: 17
: |
Nguyên văn bởi ngoalongdochanh
Cho toi hoi tai sao khi khai bao: #device PIC16F877 *=16 ADC=10 thi CCSC bao loi: "Can not change device type this far into the code" Cach khac phuc minh cung hay gap loi nay ,ko bit ly do la seo ????
__________________
TRUNG TÂM ĐÀO TẠO ĐIỆN TỬ VÀ TỰ ĐỘNG HOÁ MTC MTC khai giảng khóa mới http://blog.360.yahoo.com/blog-kHh38....lgCr0J4220m40 |
![]() |
![]() |
#114 | ||
Đệ tử 9 túi
|
Trích:
Trích:
__________________
Ngày mai bắt đầu từ ngày hôm nay Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này: http://www.picvietnam.com/forum//showthread.php?t=1263 |
||
![]() |
![]() |
#115 |
Đệ tử 1 túi
Tham gia ngày: Jan 2006
Bài gửi: 17
: |
vậy giữa CCS và HT-pic thì phần mềm được đánh giá ưu việt hơn
__________________
TRUNG TÂM ĐÀO TẠO ĐIỆN TỬ VÀ TỰ ĐỘNG HOÁ MTC MTC khai giảng khóa mới http://blog.360.yahoo.com/blog-kHh38....lgCr0J4220m40 |
![]() |
![]() |
#116 |
Đệ tử 9 túi
|
Kha kha...Cái này mọi người tranh luận nhiều rồi ! Nói nhiều đâu có được gì đâu.Dùng trình biên dịch nào cũng được, ai viết C chuẩn tốt thì chọn HT PIC, tớ là thực dụng nên dùng CCS C cho đỡ khổ.
Bên điện tử Việt Nam có luồng so sánh hai cái này đó, bác hứng thú thì qua đó xem.
__________________
Ngày mai bắt đầu từ ngày hôm nay Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này: http://www.picvietnam.com/forum//showthread.php?t=1263 |
![]() |
![]() |
#117 |
Đệ tử 9 túi
|
To anhoa1608: porb = 1,2,4,8 để set từng hàng lên mức 1. Chương trình đó dùng ngắt RB, chưa có chống nhiễu, bạn xem thêm ở đây: http://www.picvietnam.com/forum//showthread.php?t=839
Còn cái LCD đó, hồi trước hứng chí gắp từng ảnh lại đó ![]()
__________________
Ngày mai bắt đầu từ ngày hôm nay Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này: http://www.picvietnam.com/forum//showthread.php?t=1263 |
![]() |
![]() |
#118 |
Đệ tử 1 túi
Tham gia ngày: Jan 2007
Bài gửi: 12
: |
![]() Trong Pic16f877a có 3 timer :
+ Timer0 : 8 bit + Timer1 : 16 bit + Timer2 : 8 bit Timer dùng cho nhiều ứng dụng : định thời, capture, pwm, ... 1.Timer0 Thanh ghi tác động: Các lệnh: Code: setup_TIMER_0(mode); setup_COUNTERS (rtcc_state, ps_state); // hay setup_WDT() set_TIMER0(value); // hay set_RTCC(value) :xác định giá trị ban đầu (8bit) cho Timer0 get_TIMER0(); // hay get_RTCC() :trả về số nguyên (8bit) của Timer0 Trong đó mode là một hoặc hai constant (nếu dùng hai thì chèn dấu "|"ở giữa) được định nghĩa trong file 16F877A.h gồm : RTCC_INTERNAL : chọn xung clock nội RTCC_EXT_L_TO_H : chọn bit cạnh lên trên chân RA4 RTCC_EXT_H_TO_L : chọn bit cạnh xuống trên chân RA4 RTCC_DIV_2 :chia prescaler 1:2 RTCC_DIV_4 1:4 RTCC_DIV_8 1:8 RTCC_DIV_16 1:16 RTCC_DIV_32 1:32 RTCC_DIV_64 1:64 RTCC_DIV_128 1:128 RTCC_DIV_256 1:256 rtcc_state là một trong những constant sau: RTCC_INTERNAL RTCC_EXT_L_TO_H RTCC_EXT_H_TO_L ps_state là một trong những constant sau: RTCC_DIV_2 RTCC_DIV_4 RTCC_DIV_8 RTCC_DIV_16 RTCC_DIV_32 RTCC_DIV_64 RTCC_DIV_128 RTCC_DIV_256 WDT_18MS WDT_36MS WDT_72MS WDT_144MS WDT_288MS WDT_576MS WDT_1152MS WDT_2304MS ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxx Em thật sự không hiểu câu này:" (nếu dùng hai thì chèn dấu "|"ở giữa) " anh NHH có thể minh họa cho em được không? em mới tìm hiểu về Pic được một tuần, nhưng chắc chắn là anh chỉ rõ hơn thì em sẽ hiểu! cảm ơn anh và chúc anh vui! |
![]() |
![]() |
#119 |
Đệ tử 1 túi
Tham gia ngày: Jan 2007
Bài gửi: 12
: |
![]() xin lỗi vì Em không biết cách trích dẫn bài viết vào câu hỏi của em nên "copy" từ bài của anh NHH qua, nếu rãnh anh chỉ em luôn cách trích dẫn luôn nha!
|
![]() |
![]() |
#120 |
Đệ tử 1 túi
Tham gia ngày: Jan 2007
Bài gửi: 12
: |
Các Anh có thể giúp Thắng tải được trình biên dịch CCSC 3.242 không? Thắng tải hoài không được! chúc Các Anh vui khỏe!
|
![]() |
![]() |
|
|
![]() |
||||
Ðề tài | Người gửi | Chuyên mục | Trả lời | Bài mới |
TUT về USART trong PIC16F877A | mafd_47a | MPASM | 16 | 19-02-2025 05:32 AM |
TUT ve I2C ( pic16f877a ) | mafd_47a | MPASM | 28 | 28-01-2025 10:45 PM |
Lập nhóm PIC16F877A | nhh | Cơ bản về vi điều khiển và PIC | 285 | 08-03-2017 11:08 PM |
Bộ so sánh và PWM cho PIC16F877A | anhquangngai | Cơ bản về vi điều khiển và PIC | 24 | 08-09-2012 09:00 AM |
Pic16f877a TỪ DỄ TỚi KhÓ | ntc | Cơ bản về vi điều khiển và PIC | 373 | 23-05-2009 10:24 PM |