PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT PIC,...)

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 21-11-2008, 12:30 AM   #16
dientudong
Đệ tử 5 túi
 
Tham gia ngày: Oct 2008
Bài gửi: 95
:
Bạn Nam nói <Làm sao bạn biết được cần phải gộp file "lcd.c" do CCS C lúc ban đầu? Vì khi CCS C chưa tạo ra file đó thì bạn làm sao biết được tên của nó là gì.
Về chỗ bạn chưa rõ, bạn đọc tài liệu hướng dẫn của CCS C, mục nói về #include. Link download ở đây: http://www.ccsinfo.com/downloads/ccs_c_manual.pdf. Nếu dùng #include <lcd.c> thì thư mục của project sẽ được tìm kiếm sau cùng (theo tài liệu hướng dẫn của CCS C), do đó nếu một trong những thư mục được CCS C dùng để tìm kiếm tập tin gộp (đọc tài liệu hướng dẫn để biết chúng được thiết lập ở đâu) cũng có một tập tin tên là "lcd.c" thì CCS C sẽ dùng tập tin đó, chứ không phải tập tin vừa được tạo trong thư mục của project đang biên dịch. Và hiện thời, chúng ta chưa biết nội dung của tập tin (nếu có) đó.>
Cho Mình hỏi :
Vậy có phải là nếu file lcd.c mà tìm không thấy thì CCS sẽ tự tạo ra file này không bạn?
dientudong vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-11-2008, 10:33 AM   #17
tungtot_vl
Đệ tử 6 túi
 
tungtot_vl's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 154
:
trong này sao lộn sộn quá nhỉ.
"các bạn cho mình hỏi là "khi mở CCS lên,vào chọn projiectwizard,rồi chọn loại Pic,có cần chọn luôn các thông số khác như timer,Lcd,...) luôn không hay là cứ Ok rồi viết chương trình của mình." khônh cần phải làm dài dòng như thế đau.
bạn chỉ cần soạn thảo chương trình xong vào Project/new/Manual Create. trong phần Target Device chọn pic 16f877a là xong không cần khai báo gì thêm cả. nhấn create, rồi nhất F9 để biên dịch là xong
"Bạn à ,sao mình nghe nói là #include<lcd.c> dùng để khai báo các hàm hay chương trình con cho LCD" #include<lcd.c> dùng để khai báo đường dẫn đến chương trình con, trong nó có các hàm mà bạn cần gọi ra để sử dụng trong chương trình mà bạn đang viết. các chương trình con này có thể đặt bất cứ nơi nào trong ổ cứng của bạn, miẽn là khi khai báo bạn cần chỉ đường dẫn đến nó là được. các chương trình con là do chúng ta tự tạo ra dùng để khi viết chương trình nếu cần dùng nó thì chỉ việc gọi ra để sử dụng chứ không cần viết đi viết lại cho dài dòng thôi.
Pic6F877A
các bạn cho mình hỏi :#byte PORTC = 0x07 có ý nghĩa là gán giá trị 0x07 vào biến PORTC
"chứ đâu phải định nghĩa PORTC ở địa chỉ 0x07.vậy #BYTE portB=0xC6 thì hiểu thế nào?0xC6 đâu phải địa chỉ của portB" portb có địa chỉ là 0x06 chứ không phải là 0xc6.
porta hay b đó chỉ là cái tên bạn gán cho địa chỉ của nó thôi. bạn cũng có thể gán tên của bạn là :#byte cuteo = 0x06 cũng được khi đó ví dụ cuteo = 0xff; thì các chân RC có giá trị là 1 thế thôi
tungtot_vl vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-11-2008, 10:36 AM   #18
tungtot_vl
Đệ tử 6 túi
 
tungtot_vl's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 154
:
led

Trích:
Nguyên văn bởi dientudong View Post
Bạn Nam nói <Làm sao bạn biết được cần phải gộp file "lcd.c" do CCS C lúc ban đầu? Vì khi CCS C chưa tạo ra file đó thì bạn làm sao biết được tên của nó là gì.
Về chỗ bạn chưa rõ, bạn đọc tài liệu hướng dẫn của CCS C, mục nói về #include. Link download ở đây: http://www.ccsinfo.com/downloads/ccs_c_manual.pdf. Nếu dùng #include <lcd.c> thì thư mục của project sẽ được tìm kiếm sau cùng (theo tài liệu hướng dẫn của CCS C), do đó nếu một trong những thư mục được CCS C dùng để tìm kiếm tập tin gộp (đọc tài liệu hướng dẫn để biết chúng được thiết lập ở đâu) cũng có một tập tin tên là "lcd.c" thì CCS C sẽ dùng tập tin đó, chứ không phải tập tin vừa được tạo trong thư mục của project đang biên dịch. Và hiện thời, chúng ta chưa biết nội dung của tập tin (nếu có) đó.>
Cho Mình hỏi :
Vậy có phải là nếu file lcd.c mà tìm không thấy thì CCS sẽ tự tạo ra file này không bạn?
tìm không thấy thì nó báo lỗi chứ làm sao nó tự tạo ra được
tungtot_vl vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-11-2008, 11:06 AM   #19
dientudong
Đệ tử 5 túi
 
Tham gia ngày: Oct 2008
Bài gửi: 95
:
Bạn cho mình hỏi là mình khi viết trong file lcd.c có cần phải xác định chân cho LCD luôn không.Hay là xác định chân cho LCD trong chương trình chính.
dientudong vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-11-2008, 10:50 AM   #20
tungtot_vl
Đệ tử 6 túi
 
tungtot_vl's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 154
:
Thumbs up lcd

Trích:
Nguyên văn bởi dientudong View Post
Bạn cho mình hỏi là mình khi viết trong file lcd.c có cần phải xác định chân cho LCD luôn không.Hay là xác định chân cho LCD trong chương trình chính.
bạn xác định chân lcd ở đâu cũng được.
nếu đặt trong chương trình chính thì phải khai báo tên các chân trước rồi mới liên kết đến file LCD.c
vi dụ: #bit RS = porta.0
#bit RW = porta.1
#bit E = porta.2
#include<path\LCD.c> // nếu LCD. nằm trong thư viện của CCS thì không cần path

còn nếu đặt trong LCD.c thì nó phải đặt ở đầu chương trình hay nằm trên các hàm trong LCD.
tungtot_vl vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-11-2008, 10:27 PM   #21
dientudong
Đệ tử 5 túi
 
Tham gia ngày: Oct 2008
Bài gửi: 95
:
#include <16F877A.h> // //
#include <def_877a.h> //
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT //
#use delay(clock=20000000)
#bit RS = portd.2
#bit E = portd.3 //
#include <lcd.c> //
float vantoc,soxung; //
int8 a,b,c,d,a1; //
int16 sovong,i; //
/////////////////ket thuc phan khai bao thu vien va cac bien//////////////////////
////////////khai bao va chuong trinh ngat cho TIMER1/////////////////////
#int_TIMER1 //
void TIMER1_isr(void) //
{ //
soxung=get_timer0(); //Lay so xung ma Timer0 dem //
set_timer1(65535); // Trong 1ms //
if(tmr1if==1) //
{ //
intcon=0; //stop ngat //
a1=1; //
} //
} //
//////////////////////////ket thuc phan TIMER1///////////////////////////
//////////////////////////bat dau chuong trinh chinh////////////////////////////


void main()
{
trisa=0xFF; //set RA4 input
trisb=0;
trisc=0;
trisd=0;
lcd_init();
lcd_gotoxy(1,1);
lcd_putc("Beginning....");
delay_ms(1000);
lcd_putc('\f');
setup_timer_2(T2_DIV_BY_16,255,1);
setup_ccp1(CCP_PWM);
for(i=0;i<1024;i++) //tu 0 den 1024 thi toc do tang dan
{
set_pwm1_duty(i); // Toc do tang dan
delay_ms(1);
set_timer0(0);
set_timer1(65535);
setup_timer_0(RTCC_EXT_H_TO_L|RTCC_DIV_1); //Che do counter
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
enable_interrupts(INT_TIMER1);
enable_interrupts(GLOBAL);
delay_ms(50); //cai vao

if(a1==1)
{
vantoc=((float)(60*soxung)/(0.01*100)); //Tinh van toc
a=vantoc/1000; //chia lay phan nguyen
b=(int)(vantoc-1000*a)/100; //chia lay phan nguyen
c=(int)(vantoc-1000*a-100*b)/10; //chia lay phan nguyen
d=(int)vantoc%10; //chia lay phan du
/////////////////////////////////hien thi LCD//////////////////
lcd_gotoxy(3,3); //den vi tri hang 3 cot 3
lcd_putc(a+48); //in ra a
lcd_gotoxy(3,4); //den vi tri hang 3 cot 4
lcd_putc(b+48); //in ra b
lcd_gotoxy(3,5); //den vi tri hang 3 cot 5
lcd_putc(c+48); //in ra c
lcd_gotoxy(3,6); //den vi tri hang 3 cot 6
lcd_putc(d+48); //in ra d
lcd_gotoxy(4,3); //den vi tri hang 4 cot 3
lcd_putc("vong/phut"); //in ra "vong/phut"
lcd_gotoxy(2,2); //den vi tri hang 2 cot 2
lcd_putc("toc do dc"); //in ra "toc do dc"
delay_ms(5); //Vong for tu 0->1000 nen delay it thoi
tmr0if=0;tmr1if=0; //Xoa tran
}
}
}
Các bạn cho mình hỏi khi biên dịch thì ở file LCD.c báo lỗi ở dòng này
struct lcd_pin_map { // This structure is overlayed
lỗi là "A#DEVICE required before this line
dientudong vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-11-2008, 10:53 PM   #22
dientudong
Đệ tử 5 túi
 
Tham gia ngày: Oct 2008
Bài gửi: 95
:
Bạn cho mình hỏi nếu chân RW của LCD nối max thì khai báo chân thế nào
dientudong vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-11-2008, 11:08 PM   #23
dientudong
Đệ tử 5 túi
 
Tham gia ngày: Oct 2008
Bài gửi: 95
:
Bạn làm ơn chỉ bảo mình với .mình rối quá .
dientudong vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-11-2008, 02:43 AM   #24
dientudong
Đệ tử 5 túi
 
Tham gia ngày: Oct 2008
Bài gửi: 95
:
Các bạn à , sao mình thấy việc gọi các thư viện hàm Trong CCS quá phức tạp đi , toàn bị báo lỗi thôi , chẳng hiểu nổi , chắc là mình phải nghĩ cách tự viết Code từ đầu tới đuôi thôi , chứ trông chờ vào thư viện thấy mệt quá , chỉ cái thư viện 16F877A.h thôi mà đã báo lỗi tùm lum rồi , huống chi mấy thư viện khác nữa ...Bạn nào có ý gì giúp mình với .Mình bế tắc !
dientudong vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-11-2008, 11:24 AM   #25
tungtot_vl
Đệ tử 6 túi
 
tungtot_vl's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 154
:
lcd

Trích:
Nguyên văn bởi dientudong View Post
Các bạn à , sao mình thấy việc gọi các thư viện hàm Trong CCS quá phức tạp đi , toàn bị báo lỗi thôi , chẳng hiểu nổi , chắc là mình phải nghĩ cách tự viết Code từ đầu tới đuôi thôi , chứ trông chờ vào thư viện thấy mệt quá , chỉ cái thư viện 16F877A.h thôi mà đã báo lỗi tùm lum rồi , huống chi mấy thư viện khác nữa ...Bạn nào có ý gì giúp mình với .Mình bế tắc !
bạn đang viết code cho LCD 4 bit hay 8 bit vậy
tungtot_vl vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-11-2008, 06:21 PM   #26
Mr.Bi
Đệ tử 7 túi
 
Tham gia ngày: Jul 2007
Nơi Cư Ngụ: Đà Nẵng
Bài gửi: 188
:
Trích:
Nguyên văn bởi dientudong View Post
Bạn cho mình hỏi nếu chân RW của LCD nối max thì khai báo chân thế nào
làm ơn vô đọc hết mấy bài ở đây. Chưa chịu đọc & tìm hiểu cách giao tiếp mà cứ mún lập trình
http://www.picvietnam.com/forum/show...p?t=357&page=4
Mr.Bi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-11-2008, 07:37 PM   #27
dientudong
Đệ tử 5 túi
 
Tham gia ngày: Oct 2008
Bài gửi: 95
:
LCD cua mình là loại 4 hàng 16 cột
dientudong vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 07:14 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam