|
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-03-2012, 12:18 AM | #1 |
Nhập môn đệ tử
Tham gia ngày: Mar 2012
Bài gửi: 9
: |
Giúp mình code pic 18f4550
Mình có tham khảo code này ở trên mạng. Nhưng khi chạy bị báo lỗi Undefined identifier LATB,LATA. Mình không biết lỗi này như thế nào. Mình đã tạo đường dẫn đến def_877a.h
Bạn nào biết có thể giúp mình được không. Cảm ơn. Đây là code của chương trình: #include "C:\Program Files\PICC\Projects\def_877a.h" // Program to Interface GPS with PIC18F4550 Microcontroller #define FREQ 12000000 #define baud 4800 #define spbrg_value (((FREQ/64)/baud)-1) #define rs LATA.F0 #define rw LATA.F1 #define en LATA.F2 #define lcdport LATB unsigned char rx_data(); void lcd_ini(); void lcdcmd(unsigned char); void lcddata(unsigned char); unsigned char longi_data[12]; unsigned char lati_data[12]; unsigned char data,value=0; unsigned int i=0,pos; void main() { TRISB=0; // Set Port B as output port LATB=0; TRISA=0; LATA=0; SPBRG=spbrg_value; // Fill SPBRG register to set the baud rate RCSTA.SPEN=1; // To activate serial port (Tx and Rx pins) RCSTA.CREN=1; // To enable continuous reception lcd_ini(); while(1) { data=rx_data(); // Check the string '$GPGGA,' if(data=='$') { data=rx_data(); if(data=='G') { data=rx_data(); if(data=='P'); { data=rx_data(); if(data=='G'); { data=rx_data(); if(data=='G') { data=rx_data(); if(data=='A') { data=rx_data(); if(data==',') { data=rx_data(); while(data!=',') data=rx_data(); for(i=0;data!='N';i++) data=rx_data(); lati_data[i]=data; // Store the Latitude data } data=rx_data(); if(data==',') { for(i=0;data!='E';i++) { data=rx_data(); longi_data[i]=data; // Store the Longitude data } } i=0; lcdcmd(0x80); while(i<11) { lcddata(lati_data[i]); // Print the Latitude data i++; } i=0; lcdcmd(0xC0); while(i<12) { lcddata(longi_data[i]); // Print the Longitude data i++; } } } } } } } } Delay_ms(1000); for(i=0;i<12;i++) { data=0; lati_data[i]=0; longi_data[i]=0; } } } unsigned char rx_data(void) { while(PIR1.RCIF==0); // Wait until RCIF gets low return RCREG; // Store data in Reception register } void lcd_ini() { lcdcmd(0x38); // Configure the LCD in 8-bit mode, 2 line and 5x7 font lcdcmd(0x0C); // Display On and Cursor Off lcdcmd(0x01); // Clear display screen lcdcmd(0x06); // Increment cursor lcdcmd(0x80); // Set cursor position to 1st line, 1st column } void lcdcmd(unsigned char cmdout) { lcdport=cmdout; //Send command to lcdport=PORTB rs=0; rw=0; en=1; Delay_ms(10); en=0; } void lcddata(unsigned char dataout) { lcdport=dataout; //Send data to lcdport=PORTB rs=1; rw=0; en=1; Delay_ms(10); en=0; } |
24-03-2012, 11:25 AM | #2 |
Đệ tử 2 túi
Tham gia ngày: May 2009
Bài gửi: 41
: |
file def_877a b xem lại xem có tương ứng với 84550 ko?^^
__________________
Các loại module, linh kiện tại http://dientuso1.com/ |
06-04-2012, 01:14 PM | #3 |
Nhập môn đệ tử
Tham gia ngày: Mar 2012
Bài gửi: 9
: |
Mình đã chỉnh sửa được code. Nhưng khi nạp mô phỏng trong proteus nó chỉ hiện mỗi chữ D. Mình thử tạo linh kiện UB93 trong proteus nhưng nó báo lỗi duplicate part reference. Bạn nào biết có thể chỉ hộ mình tại sao ko. Cảm ơn.
|
|
|