|
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 |
|
09-07-2012, 11:26 AM | #1 |
Đệ tử 1 túi
Tham gia ngày: Jun 2012
Bài gửi: 16
: |
//Em chưa hiểu cái lỗi "A numeric expression must be appear here"
//Đoạn CT của em ngắn thế này thôi void main() { set_tris_c(0x00); set_tris_d(0x00); output_c(0x00); output_d(0x00); int j;// nó báo lỗi ngay dòng này cái ỗi "A numeric..,", em đã thử với các kiểu char, int8,... j=8; } //Còn đây là đoạn CT khác, mắc lỗi lặp vô hạn mà em chẳng hiểu tại sao nó vậy // char i; latch=0; for(i=7;i>=0;i--) //Lỗi lặp vô hạn ở ngay dòng này "The condition always TRUE" { int j; for(j=0;j<8;j++) { clk=0; da=(hang1[i]>>j)&&0x01; clk=1; clk=0; da=(hang2[i]>>j)&&0x01; } } latch=1; |
29-07-2012, 04:17 PM | #2 |
Đệ tử 1 túi
Tham gia ngày: Jul 2012
Bài gửi: 15
: |
bác nào cho em hỏi voi. Em có viết 1 đoạn code của bác Linh chạy thử nhưng mà nó báo lỗi hoài.
còn đây là code chương trình //================================================ #include <16f877a.h> #include <def_877a.h> #device *=16 ADC=8 #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT #use delay(clock=20000000) void main() { TRISB = 0x00; PORTB = 0xFF; While(1) { PORTB = 0; delay_ms(250); PORTB = 0xFF; delay_ms(250); } } khi biên dịch nó báo lỗi này mà em ko biết xử lí tn. Mong các bác giúp em. thansk cac bac nhieu. "eross 128'' C.\program file\PICC\devices\def_f877a.h" Line 7(2,6) A #DEVICE required before this line. line 7 : #byte INDF =0x00 ( trong file def_877a.h) thay đổi nội dung bởi: Duynguyen205, 29-07-2012 lúc 04:41 PM. |
30-07-2012, 09:02 PM | #3 | |
Đệ tử 3 túi
Tham gia ngày: Jun 2012
Bài gửi: 54
: |
Trích:
goodluck |
|
31-07-2012, 08:36 AM | #4 |
Đệ tử 1 túi
Tham gia ngày: Jul 2012
Bài gửi: 15
: |
Tks
|
30-07-2012, 10:49 PM | #5 |
Đệ tử 1 túi
Tham gia ngày: Jun 2012
Bài gửi: 16
: |
nếu đơn giản bạn chỉ muốn nháy led ở port b thôi sao bạn khai báo nhiều vậy
chỉ cần Code:
#include <16f877a.h> #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT #use delay(clock=20000000) #use fast_io(b) // <<<< dong nay de khai bao dung portb #byte PORTB=0x006// <<<Đătheo data sheet thì port b là thanh ghi 006 void main() { set_tris_b(0x00); PORTB = 0xFF; While(1) { PORTB = 0; delay_ms(250); PORTB = 0xFF; delay_ms(250); } } |
31-07-2012, 08:23 AM | #6 |
Đệ tử 1 túi
Tham gia ngày: Jul 2012
Bài gửi: 15
: |
Cảm ơn anh. Đúng là nó bị lỗi trong device thật. Hôm qua có pro giúp em sửa máy. Mới học
gà quá, bị lỗi cũng ko biết. làm em vất vả với nó. |
31-07-2012, 08:26 AM | #7 |
Đệ tử 1 túi
Tham gia ngày: Jul 2012
Bài gửi: 15
: |
à tại vì em mới học PIC nên toàn khai báo theo kiểu PIC winar. khai báo đầy đủ nào thì
#fuses nào thì setup ADC().... ^^. Bác thấy đoạn code của em thừa chỗ nào thì bỏ hộ em rồi post cho em xem với nhé. |
31-07-2012, 08:32 AM | #8 |
Đệ tử 1 túi
Tham gia ngày: Jul 2012
Bài gửi: 15
: |
Có bác nào Viết code mà làm video học PIC luôn ko gửu cho em link với. Đọc sách nhiều cứ
u u cái đầu ý. Tks các pro nhiều |
17-12-2012, 12:49 AM | #9 |
Đệ tử 1 túi
Tham gia ngày: Apr 2011
Bài gửi: 18
: |
mình thử viết code dùng CCS điều khiển mấy chân IO của PIC16f877A. mô phỏng thì chạy ngon lành nhưng khi nạp vào chip thì không chạy. mình có POST code lên. ai biết chỉ giúp với. thanks.
Code:
#include<16F877A.h> #fuses NOWDT,PUT,HS,NOPROTECT #define BUTTON_THUAN pin_B5 #define BUTTON_NGHICH pin_B4 #define BUTTON_TANG pin_B3 #define BUTTON_GIAM pin_B2 #define LED_THUAN pin_B1 #define LED_NGUOC pin_B0 #define DIEU_KHIEN_QUAY_THUAN pin_B7 #define DIEU_KHIEN_QUAY_NGUOC pin_B6 #define NGUOC 1 #define THUAN 2 #define DUNG 3 #define TAN_SO_BAM 30 #use delay (clock = 4000000 ) //dung thach anh 20Mhz #use rs232 (baud=9600 , parity=n , xmit=pin_C6 , rcv=pin_C7 ) #byte OPTION_REG=0x81 int8 chieu_quay; int16 van_toc=15,van_toc_max=30; int16 milisec; #int_TIMER0 void TIMER0_isr(void) { set_timer0(0xD9) ; // Initial Value for 1ms Interrupt clear_interrupt(int_timer0); // Clear TIMER0 interrupt flag milisec++; if(milisec>1000) milisec=0; if(input(BUTTON_THUAN)==0) { chieu_quay=THUAN; output_bit(LED_THUAN,1); output_bit(LED_NGUOC,0); output_bit(DIEU_KHIEN_QUAY_NGUOC,0);//tat quay nguoc if(milisec<van_toc) { output_bit(DIEU_KHIEN_QUAY_THUAN,1); output_bit(DIEU_KHIEN_QUAY_NGUOC,0); } else if(milisec<TAN_SO_BAM) { output_bit(DIEU_KHIEN_QUAY_THUAN,0); output_bit(DIEU_KHIEN_QUAY_NGUOC,0); } else milisec=0; } else if(input(BUTTON_NGHICH)==0) { chieu_quay=NGUOC; output_bit(LED_THUAN,0); output_bit(LED_NGUOC,1); if(milisec<van_toc) { output_bit(DIEU_KHIEN_QUAY_THUAN,0); output_bit(DIEU_KHIEN_QUAY_NGUOC,1); } else if(milisec<TAN_SO_BAM) { output_bit(DIEU_KHIEN_QUAY_THUAN,0); output_bit(DIEU_KHIEN_QUAY_NGUOC,0); } else milisec=0; } else { output_bit(LED_THUAN,0); output_bit(LED_NGUOC,0); } } void main() { setup_adc_ports(NO_ANALOGS); setup_adc(ADC_OFF); setup_psp(PSP_DISABLED); setup_spi(SPI_SS_DISABLED); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_32); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DIV_BY_1,0,1); enable_interrupts (int_timer0);//ngat timer 0 enable_interrupts ( global ); //cho phep ngat toan cuc OPTION_REG=0x07; while(1) { output_high(pin_D0); output_high(pin_D1); output_high(pin_D2); output_high(pin_D3); output_high(pin_D4); output_high(pin_D5); output_high(pin_D6); output_high(pin_D7); output_B(0x00); output_A(0x00); output_C(0x00); Delay_ms(500) ; Output_low (pin_D0); Output_low (pin_D1); Output_low (pin_D2); Output_low (pin_D3); Output_low (pin_D4); Output_low (pin_D5); Output_low (pin_D6); Output_low (pin_D7); output_B(0xFF); output_A(0xFF); output_C(0xFF); Delay_ms (500 ); } // TODO: USER CODE!! while(1) { if(input(BUTTON_TANG)==0) { Delay_ms(100); van_toc++; if(van_toc>van_toc_max) van_toc=van_toc_max; } else if(input(BUTTON_GIAM)==0) { Delay_ms(100); van_toc--; if(van_toc<=0) van_toc=0; } } } thay đổi nội dung bởi: hatuan296, 17-12-2012 lúc 08:06 AM. |
17-12-2012, 08:13 AM | #10 | |
Làm quen với PIC
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: Hcm
Bài gửi: 160
: |
Trích:
1/Phần config của thạch anh , mình thấy bạn set là HS trong khi clock lại là 4000000 . 2/Trên mạch thật của bạn có điện trở kéo lên cho MCLR chưa . Các chân nối với phím BUTTON của bạn có các điện trở kéo lên chứ ? HY vọng giúp được bạn . |
|
17-12-2012, 09:48 AM | #11 | |
Đệ tử 1 túi
Tham gia ngày: Apr 2011
Bài gửi: 18
: |
Trích:
|
|
17-12-2012, 12:47 PM | #12 |
Đệ tử 1 túi
Tham gia ngày: Apr 2011
Bài gửi: 18
: |
có bác nào biết chỉ e với. điều khiển mỗi chân IO mà nó không xuất ra được.
|
17-12-2012, 07:47 PM | #13 | |
Làm quen với PIC
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: Hcm
Bài gửi: 160
: |
Trích:
1/Bạn xem datasheet thì chắc cũng biết , với thạch anh dưới 10Mhz thì ta phải set OSC là XTAL chứ không phải HS 2/ Để điều khiển được từng bit thì bạn phải set bit đó là output trước đã . Thường nó có dạng TRISX.NUMBER=0 , với X là tên port ,vd : b , c . Còn NUMBER là thứ tự bit của PORT đó , vd : portb.0 , portc.5 .... Khi set cho cả port thì là trisb = %00000000 Trong code của bạn mình chưa thấy bạn làm công việc định chân output này . 3/ Tương tự để nhận một giá trị hoặc 1 bit nào đó thì bạn phải set port hoặc bit là input . Thường có dạng TRISX.NUMBER=1 là cho từng bit , hoặc có dạng TRISX = %11111111 . Trong code của bạn có các phím bấm nhưng mình cũng chưa thấy bạn set phần này . Về các bước phía trên bạn nên tham khảo thêm các code mẫu có trong diễn đàn nhé , vì mình không chuyên về CCS nên không thể giúp bạn từng câu lệnh được . Bạn mới bắt đầu nghiên cứu thì tốt hơn là nên thực hành với những bài tập nho nhỏ về phím bấm , về bật tắt led chứ chưa nên đi sâu vào ngắt , vào giao tiếp SPI .... Từ từ rồi sẽ quen thôi bạn . |
|
01-01-2013, 06:38 PM | #14 |
Nhập môn đệ tử
Tham gia ngày: May 2012
Bài gửi: 8
: |
Sao phần này dành cho ngưới mới học pic mà nhiều bài viết các bạn gửi mình thấy cao siêu quá, không phải dành cho member là elementary thì phải!
__________________
Đường tuy ngắn không đi không đến, Việc tuy dễ không làm không xong! Đường dù dài cố đi cũng đến, Việc dù khó gắng làm sẽ xong! |
01-01-2013, 08:07 PM | #15 |
Nhập môn đệ tử
Tham gia ngày: Oct 2012
Bài gửi: 5
: |
Kính chào các bạn trong 4rum, Mình mới học PIC nên có 1 vấn đề nhỏ mong các bạn giúp đỡ;
Mình tạo 1 project bằng CCS 4.14 bằng PIC Wizard, biên dịch OK, chạy được. Nhưng khi mình Chép sang máy tính khác, mở lên, thì mở file lên không được. Hoặc là khi mình Copy toàn thư mục chứ Project sang 1 ổ đĩa khác thì tình trạng cũng tương tự. Vẫn mở lên nhưng không mở file main.c được. Mong các bác có Video hoặc gì đó giúp mình với... Link CCS 4.14 Mình up mê đi a phai các bạn tải về và làm các bước tạo dự án của các bạn và quay video gửi cho mình với nhé. Cám ơn nhiều các bạn giúp mình. Thân ái... http://www.mediafire.com/?xvd2fod6jvhgy4r |