PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) (http://www.picvietnam.com/forum/forumdisplay.php?f=12)
-   -   CCS C for PIC16F877A (http://www.picvietnam.com/forum/showthread.php?t=357)

vuongctho 26-09-2007 11:21 PM

em dang hoc lap trinh c cho pic, a nao co tai lieu tieng viet huong dan lap trinh css cho pic cho e xin voi!!!!hepl!

cho em hoi!em muon lam lich van nien viet phan mem bang ccs,cac "thay" nao da tung lam roi cho em biet minh lam ntn voi??huong dan em viet ccs cho mach nay voi!!!cam on!!!!

tungtot_vl 28-09-2007 08:28 AM

các anh ơi cho em hỏi cái này tí
em dùng ccs để lập trình cho bài led matrix. em mới mã hóa font cho vài từ thì chương trình đã báo là không đủ RAM.
thế làm cách nào để nâng cấp thêm RAM cho CCS hả các anh.
còn về phần cứng em cũng chưa biết dùng RAM gì cho đủ để mã hóa toàn bộ font cho đủ. còn cách giao tiếp với RAM ngoài thì thế nào em cũng chưa biết. các anh chỉ giúp em nhé.
vì em đang ở tp qui nhơn nên không có điều kiện họi hỏi mong các anh giúp đỡ

nhh 28-09-2007 09:33 AM

Trích:

Nguyên văn bởi tungtot_vl (Post 11649)
thế làm cách nào để nâng cấp thêm RAM cho CCS hả các anh.

Trình biên dịch chẳng liên quan gì đến RAM của chip cả.

Xin hỏi bạn dùng con pic nào? Với ứng dụng ko lớn thì 16F877A (887A) dùng thoải mái.

Nếu ko đủ thì bạn có thể lựa chọn chip có dung lượng lớn hơn, pic18F chẳng hạn.

namqn 28-09-2007 06:42 PM

Trích:

Nguyên văn bởi tungtot_vl (Post 11649)
các anh ơi cho em hỏi cái này tí
em dùng ccs để lập trình cho bài led matrix. em mới mã hóa font cho vài từ thì chương trình đã báo là không đủ RAM.
thế làm cách nào để nâng cấp thêm RAM cho CCS hả các anh.
còn về phần cứng em cũng chưa biết dùng RAM gì cho đủ để mã hóa toàn bộ font cho đủ. còn cách giao tiếp với RAM ngoài thì thế nào em cũng chưa biết. các anh chỉ giúp em nhé.
vì em đang ở tp qui nhơn nên không có điều kiện họi hỏi mong các anh giúp đỡ

Để mã hóa font cho các ứng dụng led ma trận thì người ta thường dùng flash (bộ nhớ chương trình), vì RAM trên chip không nhiều và việc sử dụng RAM làm bảng mã hóa là sử dụng không đúng mục đích.

Thân,

tungtot_vl 01-10-2007 09:30 AM

Trích:

Nguyên văn bởi namqn (Post 11664)
Để mã hóa font cho các ứng dụng led ma trận thì người ta thường dùng flash (bộ nhớ chương trình), vì RAM trên chip không nhiều và việc sử dụng RAM làm bảng mã hóa là sử dụng không đúng mục đích.

Thân,

lại làm phiền anh nam nữa rồi.
anh nam ơi vì em học lập trình qua mạng nên kinh nghiệm còn non lắm. từ trước đến giờ em chỉ biết xuất dữ liệu trực tiếp ra port thôi. em chưa biết cách lưu data vào flash như thế nào. em nhờ anh chỉ cho vài đường để hiểu biết thêm. em dùng pic 877. và trình dịch ccs
thank you
pic xuất hiện đầu tiên tại thành phố qui nhơn

tungtot_vl 01-10-2007 04:53 PM

ai giải thích cho mình cái này nhỉ
khi dùng : unsigned char font[] = {...}; thì chương trình báo lỗi không đủ RAM
khi dùng : unsigned char const font[] = {...}; thì chương trình hết báo lỗi và dung lượng RAM giảm xuống rất nhiều.
mong giúp đỡ

nbchien 02-10-2007 03:28 PM

Sao luồng này trầm thế nhỉ. Lâu lâu không thấy các cao thủ post bài cho bọn đàn em học tập với nhỉ

thaithienanh 03-10-2007 12:43 AM

Trích:

Nguyên văn bởi tungtot_vl (Post 11721)
ai giải thích cho mình cái này nhỉ
khi dùng : unsigned char font[] = {...}; thì chương trình báo lỗi không đủ RAM
khi dùng : unsigned char const font[] = {...}; thì chương trình hết báo lỗi và dung lượng RAM giảm xuống rất nhiều.
mong giúp đỡ

:) Với cách khai báo thứ nhất sẽ có ý nghĩa là một mảng biến có kiểu ký tự cho nên dung lượng Ram lúc này sẽ tốn rất đáng kể.

Còn với cách khai báo thứ hai sẽ chỉ là một mảng các hằng số kiểu ký tự mà thôi cho nên việc bạn nhìn thấy dung lượng Ram giảm xuống rất nhiều là điều bình thường :)

thaithienanh 03-10-2007 01:06 AM

1 Attachment(s)
Trích:

Nguyên văn bởi nbchien (Post 11566)
Cảm ơn bác nhh đã trả lời câu hỏi của em. Bác có thể viết tiếp 1 chương trình đếm số xung đưa vào PIC trong 1 thời gian nhất định (1s chẳng hạn) để em và mọi người cùng tham khảo được không ạ?

Ừhm với câu hỏi này bạn có thể tham khảo qua ví dụ của anh Linh :)

thongtr 08-10-2007 02:50 AM

1 Attachment(s)
Em vừa mới viết xong ct hiển thị LCD 4 bit! có hiệu ứng chữ chạy rất hay!! em post lên cho các pác tham khảo nhé! và góp ý cho em nhé!

#include <16F877A.h>
#include <DEFS_16F877A.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#define use_portb_lcd TRUE
#include <lcd.c>
const unsigned char line1[]={'H','E','L','L','O',' ','P','I','C','V','N','!','#'};
const unsigned char line2[]={'Y','H',':','T','H','O','N','G','T','R','0','6', '0','1','@',\
'Y','A','H','O','O','.','C','O','M','#'};

void main(void)
{ while(true)
{
int I=0,y=0,k=0,z=0;
delay_ms(100); // tao tre 100ms cho LCD khoi dong
lcd_init();
lcd_gotoxy(1,1);
while (line1[y]!='#')
{
lcd_putc(line1[y]);
delay_ms(200);
y++;
}
lcd_gotoxy(1,2);
while (i<16)
{
lcd_putc(line2[I]);
i++;
delay_ms(200);
}
i=2;

while (line2[z]!='#')
{
lcd_init();
lcd_gotoxy(1,1);
y=0;
while (line1[y]!='#')
{
lcd_putc(line1[y]);
y++; }

lcd_gotoxy(1,2);
k=i+16;
for(z=i;z<k;z++)
{lcd_putc(line2[z]);}
delay_ms(400);
i++;
}
}
}

Nguoidumuc204 11-10-2007 09:14 AM

Mình thấy khai báo mảng của bạn hơi phức tạp , sao không khai báo là

const unsigned char line1[]={"Hello PICVIETNAM#"};
const unsigned char line2[]={"YH :xxx"};

vậy thì đơn giản, dễ hiểu và kết quả vẫn vậy.

và hàm lcd_init(); chỉ cần dùng một lầm duy nhất là đủ,như vấy sẽ không làm cho lcd bị nháy khi hiển thị các câu khác nhau. Nếu muốn xóa trắng màn hình thì chỉ việc dùng lệnh lcd_putc("\f");

Nguoidumuc204 11-10-2007 09:29 AM

Có cao thủ nào có thể cho em biết công thức liên hệ giữa Resolution và Overflow trong con PIC 16F877A không?
Em dùng thạch anh 4Mhz, timer0 , Resolution : 8us, Overflow : 2ms. Nhưng em không hiểu chúng liên hệ với nhau thế nào.
Em mới ra nhập làng VDK nói chung và Pic nói riêng,mong các bác giúp đỡ.

Nguoidumuc204 11-10-2007 11:16 AM

Trích:

Nguyên văn bởi Nguoidumuc204 (Post 11990)
Có cao thủ nào có thể cho em biết công thức liên hệ giữa Resolution và Overflow trong con PIC 16F877A không?
Em dùng thạch anh 4Mhz, timer0 , Resolution : 8us, Overflow : 2ms. Nhưng em không hiểu chúng liên hệ với nhau thế nào.
Em mới ra nhập làng VDK nói chung và Pic nói riêng,mong các bác giúp đỡ.


Chờ cả buổi mà chẳng bác nào tra lời,đi ăn xin nhiều nơi mới hiểu ra, thôi thì cứ POST lên cho anh em nào chưa rõ thì coi.

Timer0 là bộ định thời có khoảng chia cho trước , các khoảng chia theo 2 lũy thừa 1 2 4 8 ... ( tùy theo chip )

Ví dụ ở câu hỏi trên của em thì câu lệnh
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_4); // Prescale 4us,Overflow 2us

có nghĩa là :
cứ 4us ( 4 xung đồng hồ ) ==> 1 xung timer
cứ 255 xung timer ( 8 bit ) ==> 1 lần tràn
==> timer sẽ tràn từ 0xFF -> 0x00 trong khoảng thời gian 4 x 255 = 1020 us

Sangcao 11-10-2007 02:57 PM

Bác nào giúp em với:! Em muon truyền 1 tín hiệu 4 - 20mA bằng dây dẫn khoảng cách 1000m, đang định sd 485 nhưng nghe có vẽ ko ổn lắm, sợ nhiễu. tín hiệu thu về cũng là 4-20mA. Ko biết bác nào có cánh hay hơn ko thì giúp mình với! cảm ơn nhiều nhé!

vandungevn 11-10-2007 05:03 PM

Timer có nhiều kiểu chia tần, dùng chia trước và sau (prescale và postscale)
là chia trước và chia sau, có nhiều cách đặt tỉ lệ cho Timer từ 1:1 - 1:256 tức là cách chia này giúp cho ta nhận được xung kích vào Timer sẽ được chậm đi n lần ( 1:n ) so với 1Tcy (Fosc/4), và như vậy ta sẽ được xung kich chậm hơn:
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_4); // 4Mhz => dùng dao động nội, chế độ prescal 1:4 => clock cho Timer0 la Fosc/4/4 = Fosc/16.
Khi này ta có Fosc/4 => Tcy = 1us. Ttimer0 = Fosc/16 => 4us
Timer0 tràn 8 bit => 4x8bit = 1024us.
8 bit có 256 trạng thái chứ không phải 255 trạng thái, do đó x256,

Còn cách thứ 2 Postscale (Only Timer2) thì nó sẽ đếm số lần tràn của Timer2,
Nghĩa là
1:2 - 2 làn tràn cho ra 1 lần xung .....
1:16 - 16 làn Timer2 tràn
giả sử Áp dụng với Timer2 thay Timer0 ở trên và với postscale 1:8 ta sẽ thu được đầu ra là : 4x256x8 = 8192 us


Múi giờ GMT. Hiện tại là 01:49 AM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam