Lỗi khai báo #include <def_877a.h>
Các anh ơi, em học theo tài liệu TUT01.01.PVN của anh (Bác) Nguyễn Chí Linh, có đoạn chương trình sau:
//================================================ #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 em biên dịch thì báo lỗi: "File can not opened Not in "C:\Program Files\PICC\devices\def_877a.h" Not in "C:\Program Files\PICC\drivers\def_877a.h" Not in local "C:\khahahah\def_877a.h" 1 Errors, 0 Warnings "[/I] Lỗi đó tại sao vậy các anh? Anh nào giúp em với!! Cảm ơn nhiều lắm. |
bạn khai báo lại đường dẫn tới def_877a.h là được thôi mà.
|
Trích:
Khai báo đường dẫn ở đâu vậy anh? |
Theo mình thì bạn nên vào đường dẫn C:\Program Files\PICC\devices\ ....xem coi file def_877a.h có vấn đề gì không ? (hình như là trình dịch báo không có file def_877a.h).
|
Lưu dữ liệu cho Pic
Mình muốn làm 1 cái timer với pic6f877a có 02 nút nhấn đầu vào và 01 led hiển thị ngõ ra.
02 nút nhấn để tăng giảm thời gian cài đặt cho timer.Vấn đề ở đây là khi mình cài thời gian là 10s nhưng khi cúp nguồn thì làm sau khi có nguồn lại pic vẫn giữ được giá trị mà mình đã cài đặt trước đó(10s).Ai rành về vụ này hướng dẫn giúp mình với! Mình nghe nói là phải lưu vào bộ nhớ epprom của pic nhưng mìng không biết làm như thế nào? |
Trích:
Theo đúng thì bắt buộc phải có hả anh? Hay la CCS của em setup thiếu rồi. Em thử setup lại xem sao nhé Cảm ơn anh đã quan tâm! |
1 Attachment(s)
Trích:
|
Trích:
|
theo mình nghĩ thì khai bao portB thi không nên nhu vây ban nên khai bao thu viện #include <PIC6f877>
khong thi ban chon lai duong dan den thu vien nay thu xem |
Bạn phải tải file " def_877a.h " về và paste vào trong bộ cài thì mới dịch được , vì file " def_877a.h " là do người dùng tự định nghĩa để thuận tiện cho việc lập trình
trong ccs không có sẵn file này nên trình dịch không dịch được |
Các bác cho em hỏi chút.Em có down được một đoạn code (ngôn ngữ C) của mạch cảnh báo nhiệt độ. Và em chạy trên chương trình CCSC-3.249. Em cũng down cả file def_877A về và past trong thư mục devices. Nhưng khi compile nó báo lỗi là "A #DEVICE required before thí line", nghĩa là trước dòng #byte PORTA =0x05. Em ko biết phảo làm gì. Nhờ các bác chỉ giúp.
#include <C:\Program Files\PICC\Devices\16F877A.h> // Declare type of bit be used, file for bit, and important registers inside the PIC // #include <def_877a.h> // Declare register's definition and important bits // #device *=16 adc=10 // Declare pointer 16 bits and ADC 10 bits // #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT // Declare all configs // #use delay(clock=20000000) // Declare function DELAY and frequency be used // int8 high,low; // Declare interger variables 1 byte (8 bits)// int8 const a[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 }; // Subprogram seperates tens and units into two variables that is declared above high and low // void convert_bcd(int8 x) { low=x%10; // Divide to get remainder, low = units // high=x/10; high=high%10; // high = tens // } // Subprogram decode and display temperature // void display() { PORTB=a[low]; // Send data to LED 1 // RD0=0; // Turn on LED1, LED1 will display right value of low // delay_ms(2); // delay 2 ms // RD0=1; // Turn off LED1 // PORTB=a[high]; // LED 2 RD1=0; delay_ms(2); RD1=1; } // Subprogram carries out warning or alarm // void bao_dong(){ int8 i; for(i=0;i<200;i++) { RE0=0;delay_us(100); RE0=1;delay_us(100); } } // Sound 200 tongue // // Main program // void main() { float value; int16 i; trisb = 0x00; // Setting up pins of PORTB is Output // trisc = 0x00; // Setting up pins of PORTC is Output // trisd = 0x00; // Setting up pins of PORTD is Output // trise = 0x00; // Setting up pins of PORTE is Output // trisa = 0xff; // Setting up pins of PORTa is Input // portC = 0xff; // Setting up pins of PORTC that produce high level voltage // portD = 0xff; // Setting up pins of PORTD that produce high level voltage // // Setting up for ADC // setup_adc(ADC_CLOCK_INTERNAL); // Showing operation method of ADC is sampling time by clock pulse // // Setting up Analog signal pin is AN0 // setup_adc_ports(AN0); setup_ADC_channel(0) delay_us(10); // delay 10 us // value=(float)read_adc(); value = (value - 558.5)/2.048; convert_bcd((int8)value); i=0; // infinite loop while(1) { i++; value = (float)read_adc(); value = (value - 558.5)/2.048; //for 5V supply if (i==150) { convert_bcd((int8)value);i=0;} if(((int8)value > 40) || ((int8)value < 15)) bao_dong(); display(); } } /* -------------------------------------------------------------------------------------------------- Note: Why we let a[low]==PORTB , LED 1 is low? Because: The constant array a[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 } will be equivalent with the following array of binary numbers a[10] = {11000000,11111001,10100100,10110000,10011001,1001 0010,10000010,11111000,10000000,10010000}; From right to left(ignore the last binary number because we don't use pin RB7 of PORTB),this binary numbers present voltage levels in a,b,c,d,e,f,g,h bars of LED. This array is correlative with the values 0,1,2,3,4,5,6,7,8,9 which display in LED * Some functions of CCS be used are: Function: delay_us(time) delay_ms(time) Ex: delay_us(2) ; // making delay 2 us // delay_ms(2); // making delay 2 ms // Function: setup_adc(ADC_CLOCK_INTERNAL); This function is used to define operation method of ADC's transformer or this function is to define sampling time by clock pulse. Function: setup_adc_ports(AN0); setup_ADC_channel(0) These functions is used to define Analog signal pins which are pin AN0 This is definition file " def_877a.h" which we have declared before: --------------------------------------------------------------------------------------------------- // register definitions */ #define W 0 #define F 1 // register files #byte INDF =0x00 #byte TMR0 =0x01 #byte PCL =0x02 #byte STATUS =0x03 #byte FSR =0x04 #device *=14 adc=8 #byte PORTA =0x05 #byte PORTB =0x06 #byte PORTC =0x07 #byte PORTD =0x08 #byte PORTE =0x09 #byte EEDATA =0x10C #byte EEADR =0x10D #byte EEDATH =0x10E #byte EEADRH =0x10F #byte ADCON0 =0x1F #byte ADCON1 =0x9F #byte ADRESH =0x9F #byte ADSESL =0x9F #byte PCLATH =0x0a #byte INTCON =0x0b #byte PIR1 =0x0c #byte PIR2 =0x0d #byte PIE1 =0x8c #byte PIE2 =0x8d #byte OPTION_REG =0x81 #byte TRISA =0x85 #byte TRISB =0x86 #byte TRISC =0x87 #byte TRISD =0x88 #byte TRISE =0x89 #byte EECON1 =0x18C #byte EECON2 =0x18D #byte SSPBUF =0x13 #byte SSPCON =0x14 #byte SSPCON2 =0x91 #byte SSPADD =0x93 #byte SSPSTAT =0x94 // SSPCON bit #bit SSPWCOL = 0x14.7 #bit SSPOV = 0x14.6 #bit SSPEN = 0x14.5 #bit SSPCKP = 0x14.4 #bit SSPM3 = 0x14.3 #bit SSPM2 = 0x14.2 #bit SSPM1 = 0x14.1 #bit SSPM0 = 0x14.0 // SSPSTAT bit #bit SSPSMP = 0x94.7 #bit SSPCKE = 0x94.6 #bit SSPDA = 0x94.5 #bit SSPP = 0x94.4 #bit SSPS = 0x94.3 #bit SSPRW = 0x94.2 #bit SSPUA = 0x94.1 #bit SSPBF = 0x94.0 // BIT DEFINITION #bit ra5 =0x05.5 #bit ra4 =0x05.4 #bit ra3 =0x05.3 #bit ra2 =0x05.2 #bit ra1 =0x05.1 #bit ra0 =0x05.0 #bit rb7 =0x06.7 #bit rb6 =0x06.6 #bit rb5 =0x06.5 #bit rb4 =0x06.4 #bit rb3 =0x06.3 #bit rb2 =0x06.2 #bit rb1 =0x06.1 #bit rb0 =0x06.0 #bit rC7 =0x07.7 #bit rC6 =0x07.6 #bit rC5 =0x07.5 #bit rC4 =0x07.4 #bit rC3 =0x07.3 #bit rC2 =0x07.2 #bit rC1 =0x07.1 #bit rC0 =0x07.0 #bit rD7 =0x08.7 #bit rD6 =0x08.6 #bit rD5 =0x08.5 #bit rD4 =0x08.4 #bit rD3 =0x08.3 #bit rD2 =0x08.2 #bit rD1 =0x08.1 #bit rD0 =0x08.0 #bit rE2 =0x09.2 #bit rE1 =0x09.1 #bit rE0 =0x09.0 #bit trisa5 =0x85.5 #bit trisa4 =0x85.4 #bit trisa3 =0x85.3 #bit trisa2 =0x85.2 #bit trisa1 =0x85.1 #bit trisa0 =0x85.0 #bit trisb7 =0x86.7 #bit trisb6 =0x86.6 #bit trisb5 =0x86.5 #bit trisb4 =0x86.4 #bit trisb3 =0x86.3 #bit trisb2 =0x86.2 #bit trisb1 =0x86.1 #bit trisb0 =0x86.0 #bit trisc7 =0x87.7 #bit trisc6 =0x87.6 #bit trisc5 =0x87.5 #bit trisc4 =0x87.4 #bit trisc3 =0x87.3 #bit trisc2 =0x87.2 #bit trisc1 =0x87.1 #bit trisc0 =0x87.0 #bit trisd7 =0x88.7 #bit trisd6 =0x88.6 #bit trisd5 =0x88.5 #bit trisd4 =0x88.4 #bit trisd3 =0x88.3 #bit trisd2 =0x88.2 #bit trisd1 =0x88.1 #bit trisd0 =0x88.0 #bit trise2 =0x89.2 #bit trise1 =0x89.1 #bit trise0 =0x89.0 // INTCON Bits for C #bit gie = 0x0b.7 #bit peie = 0x0b.6 #bit tmr0ie = 0x0b.5 #bit int0ie = 0x0b.4 #bit rbie = 0x0b.3 #bit tmr0if = 0x0b.2 #bit int0if = 0x0b.1 #bit rbif = 0x0b.0 // PIR1 for C #bit pspif = 0x0c.7 #bit adif = 0x0c.6 #bit rcif = 0x0c.5 #bit txif = 0x0c.4 #bit sspif = 0x0c.3 #bit ccp1if = 0x0c.2 #bit tmr2if = 0x0c.1 #bit tmr1if = 0x0c.0 //PIR2 for C #bit cmif = 0x0d.6 #bit eeif = 0x0d.4 #bit bclif = 0x0d.3 #bit ccp2if = 0x0d.0 // PIE1 for C #bit adie = 0x8c.6 #bit rcie = 0x8c.5 #bit txie = 0x8c.4 #bit sspie = 0x8c.3 #bit ccp1ie = 0x8c.2 #bit tmr2ie = 0x8c.1 #bit tmr1ie = 0x8c.0 //PIE2 for C #bit osfie = 0x8d.7 #bit cmie = 0x8d.6 #bit eeie = 0x8d.4 // OPTION Bits #bit not_rbpu = 0x81.7 #bit intedg = 0x81.6 #bit t0cs = 0x81.5 #bit t0se = 0x81.4 #bit psa = 0x81.3 #bit ps2 = 0x81.2 #bit ps1 = 0x81.1 #bit ps0 = 0x81.0 // EECON1 Bits #bit eepgd = 0x18c.7 #bit free = 0x18C.4 #bit wrerr = 0x18C.3 #bit wren = 0x18C.2 #bit wr = 0x18C.1 #bit rd = 0x18C.0 //ADCON0 #bit CHS0 =0x1F.3 #bit CHS1 =0x1F.4 #bit CHS2 =0x1F.5 |
tra loi
ban ko co thu vien do.nen ko goi dc.
|
đoạn code của báccNguyễn Chí Linhcem đã chỉnh được lỗi ở def_877a.h. Nhưng chạy ra nó lại báo lỗi ở TRIS B: undefined identifier,bác nào giúp em với
|
Trích:
|
chọn đường dẫn tới file def_877a.h và lcd_lib_4bit.c ???
Mấy A ơi... cho e hỏi khi e đánh code của Nguyễn Chí Linh về mạch đo nhiệt độ hiển thị trên LCD thì nó báo lỗi CCS thiếu 2 file def_877a.h và lcd_lib_4bit.c . e down 2 file đó về rồi nhưng máy lại báo lỗi tiếp theo là *** Error 12 "main.c"Line 43(10,16): Undefined identifier on_off ( trong code là on_off =1; ) .e nghe nói mình phải định nghĩa lại chân gì đó.. A nào chỉ cho e khắc phục lỗi này với!! e học môn Vi xử lý gà lắm,ko hiểu gì hết... >.<!
|
Trích:
#byte PORTB=0x06 sau đó thì cậu dùng PORTB=0 mới được |
Trích:
sử dụng set_tris_b |
thanks cái thu viện của bạn nhé
|
các ban ai có file16f877a.h cho mình xin.
natien55@yahoo.com |
Trích:
mặc đinh khai báo : #include <def_877a.h> ko up dc đành dùng qua mediafire : http://www.mediafire.com/?addqpo933umpycs Thân ! |
Trích:
|
cau down 2 file def877a.h va lcd_lib_4bit.c sau do copy 2 file nay vao device trong PICC ay. minh cung bi loi nay va thu lai đựoc rồi.
|
có cậu nào hướng dẫn cho mình mấy cái timer với , mình đang học về PIC mà thấy vất vả quá , tìm mà chẳng thấy có bài nào hoàn chỉnh cả. Thanks mọi nguời nhiều!
|
bác nào cho em hỏi cái. 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. "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) |
Trích:
|
vâng em viết nhầm nó báo lỗi trong thư viện def_877a.h. Các chương trình khác nó cũng bị lỗi vậy anh à. em ko biết sửa thế nào cả. anh sửa giúp e với.
|
Trích:
|
Anh Toàn à. Chả biết lỗi gì em sửa linh tinh thế lại được.
Đây là code của em nè. #include<16f877a.h> #include<def_877a.h> #device *=16, ADC=8 #use delay(clock=20M) #fuses NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT #use fast_io(b) // cau hinh port b la potr vao ra co ban #use delay(clock=20000000) void main() { setup_adc_ports(NO_ANALOGS); setup_adc(ADC_CLOCK_DIV_2); setup_psp(PSP_DISABLED); setup_spi(SPI_SS_DISABLED); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); //setup_comparator(NC_NC_NC_NC); //setup_vref(FALSE); // TODO: USER CODE!! PORTB = 0x00; PORTB=0xff; while(1) { PORTB=0; delay_ms(200); PORTB=0xff; delay_ms(200); } } |
Nếu em sửa Set_tris_b ý nó báo là too many nested #include ko biết dịch thế nào nữa.
À anh cho em hỏi luôn. 2 thanh ghi PORB= 0x00 và thanh ghi set_tris_b = 0x00. Nó khác nhau thế nào, cách sử dụng của chúng khác nhau ra làm sao ý, em ko hiểu lắm. Mong anh giải thích dùm em. |
Trích:
|
Trích:
rồi cop vào thư mục C:\Program Files\PICC\devices |
xin file def_877a.h
bác nào có file def_877a.h thì share em với. Thaks
|
Trích:
|
cac anh chi cho e xin cai thu vien "lcd_lib_4bit.c" e dang dau dau voi no.thank cac a c nhieu
mail: cubom_sg@yahoo.com.vn |
Mấy anh có file def_16f887.h cho Em xin với
|
Múi giờ GMT. Hiện tại là 02:33 PM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam