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 cho PIC/dsPIC phiên bản 4.xxx (http://www.picvietnam.com/forum/showthread.php?t=2296)

falleaf 24-04-2008 12:03 PM

CCS C cho PIC/dsPIC phiên bản 4.xxx
 
Luồng này tiếp theo luồng CCS C cho PIC16F877A.

- Tutorial của nhh đã cũ, CCS C có nhiều thay đổi, do vậy từ CCS C 4.xxx một số câu lệnh và ký hiệu được thay đổi.
- Luồng trước quá dài, chúng tôi tạm khoá để mở luồng mới, các thành viên sẽ dễ theo dõi hơn.

Chúc vui

falleaf 24-04-2008 12:07 PM

Trích:

Nguyên văn bởi bean984 (Post 15729)
cho mình hỏi
port c của con 16f877a này có gì đặc biệt không vậy?
mình dùng 3 chân RC0,RC1,RC2 để nối đến 3 chân điều khiển LCD.nhưng tại sao khi mình không set_tris cổng này mà vẫn điều khiển được LCD.
mình hỏi một câu nữa nhé.
khi dùng các chân RC6,RC7 để truyền nhận thì không được set_tris cổng C? nếu vậy muốn dùng các chân khác với mục đích I/O thì làm ntn?
mình cảm ơn nhiều!!!

Trích:

Nguyên văn bởi thaithienanh (Post 15731)
Port C của 16f877a tích hợp các modul truyền nhận dữ liệu theo các chuẩn khác nhau như I2C, SPI, .... chứ cũng chẳng có gì đặc biệt cả :o
- Bạn không set_tris nhưng vẫn điều khển được LCD là vì trình dịch CCS hỗ trợ, nó sẽ set_tris giùm bạn ở mỗi câu lệnh liên quan đến I/O => tốc độ xử lý và bộ nhớ giảm đi đáng kể do hành động set_tris lập đi lập lại nhiều lần dẫn đến dài dòng thừa thải :o code đơn giản thì không sao chứ nếu code đòi hỏi tốc độ và dung lượng bộ nhớ lớn thì mình khuyên nên dùng set_tris.
- Bạn dùng lệnh set_tris thì không giao tiếp đuợc với PC qua chuẩn 232, mình cũng chưa để ý cái này, nhưng mình nghĩ chắc chắn là đuợc chứ :o, bạn nên xem lại set i/o của bạn cho hai chân RC6 và RC7 đã đúng chưa :o, lưu ý lại với bạn ở đây chân RC6 là chân truyền (tranmister) tức ngõ ra và chân RC7 là chân nhận (Receiver) tức ngõ vào. Với lại trong câu lệnh set tris để set ngõ vào thì dùng bit (1), và ngõ ra tương ứng với bit (0).

Còn bạn gì ở trên kia muốn tìm hiểu giao tiếp với PC thì tìm lại trên diễn đàn nhé, có quá nhiều bài viết hướng dẫn và cả ví dụ mẫu về nó rồi đấy :o

Chúc các bạn thành công.
Thân.

Trích:

Nguyên văn bởi bean984 (Post 15744)
nhưng mình đã thử lại I/O của port C bằng cách nháy led. Hoàn toàn không được nếu không set_tris. và với các port khác cũng vậy????


Luồng này tiếp tục thảo luận ở đây

Chúc vui

lion 25-04-2008 09:07 AM

bác F cho em vài link về CCS C 4.xxx

lion 25-04-2008 09:11 AM

tìm trong diễn đàn này mệt quá

picthanh 25-04-2008 05:48 PM

to hard : chắc phải tháo ra cài lại thôi, lưu là thằng này và thằng Deepfreeze ko ưa gì nhau, nên cài vào ko chạy dc, báo lỗi tùm lum, lúc trước tui bị một lần rồi.

Hard 25-04-2008 06:54 PM

Hi,
Đành phải xin phép câu thêm một bài vậy. Bác có thể giải quyết vấn đề bằng cách down phiên bản 4.065 về. Trong phiên bản này có IDEUTILS sẵn, chỉ cần chạy file này để cài đặt, nó tương thích cho cả version 4.068. Bên thread Trình biên dịch và mô phỏng đã đề cập đến vấn đề này rồi. Chúc bác thành công.
Thân ái.

tyhon 27-04-2008 12:27 PM

Giao tiếp Pic(16f877a) với máy tính
 
em đang làm về phần giao tiếp giữa pic(16f877a) với máy tính dùng phần mềm ccs để lập trình
anh nào có tài liệu thì có thể giúp đơ em, em đang rất cần
mail của em là qvinh_bk86@yahoo.com.vn,
em cảm ơn nhiều
Rất mong thư!

falleaf 27-04-2008 05:21 PM

Trích:

Nguyên văn bởi lion (Post 15773)
bác F cho em vài link về CCS C 4.xxx

Bạn đã đọc list của diễn đàn chưa? Bạn nghĩ rằng bạn có thể tìm cái chương trình nạp đó ở đâu?

Chúc vui

Tuane06_spkt 29-04-2008 11:10 AM

Hic cac bac oi help me,em down các tài liệu trên điễn đàn về nhà và làm theo như các bác nói,nhưng mà sao nó không chạy,em đang dùng CCS V4.057 hôm nay em quên không mang theo đoan code em làm,nhưng đại loại là em đã khai báo #include <16F877A.h> nhưng không hiểu sao khi compiler lại báo là lỗi "A#device" cần phải thêm vào là sao các bác(hi em dịch ra đầy không biết có đúng không),các bác giúp em nhé,em đang làm đồ án liên quan đến Pic mà lại lập trình bằng C

lion 30-04-2008 11:10 AM

tui đang dùng phiên bản CCS 4.065
không biết còn phiên bản nào cao hơn không hả anh em ???

falleaf 30-04-2008 12:27 PM

Trích:

Nguyên văn bởi lion (Post 15901)
tui đang dùng phiên bản CCS 4.065
không biết còn phiên bản nào cao hơn không hả anh em ???

Bạn vẫn không chịu nhìn kỹ các tiêu đề được dán lên à? Hãy đọc những bài đầu tiên ở đó trở xuống.

Chúc vui

kennybk04 30-04-2008 10:28 PM

Thắc mắc ngắt timer
 
Em viết chương trình ngắt timer nhấp nháy led, nhưng nạp vào pic phải đợi 1 lúc sau nó mới bắt đầu nháy led, bác nào khắc phục jùm em với.
Đây là code.

Code:

#include <16F877A.h>
#include <DEFS_16F877A.h>
#device 16F877*=16 ADC=10
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=4000000)
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)

#int_timer0
void interrupt_timer0(){
  int1 a;
  int16 count;
  set_timer0(56);
  ++count;
  if(count == 500)
  {
      count=0;
      a=~a;
      RB0=a;
  }
     
   
}
void main()
{
    set_tris_b(0);
    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2);
    enable_interrupts(int_timer0);
    enable_interrupts(global);
    set_timer0(56);
   
    while(true)
    {
    }
}


namqn 30-04-2008 10:39 PM

Trước khi vào vòng while(true) trong main(), bạn nên đặt trước giá trị của count, nếu không thì count có thể mang giá trị bất kỳ, và điều kiện (count == 500) của bạn có thể phải sau khi count được tăng vài chục ngàn giá trị mới thỏa mãn (nếu tình cờ sau khi PIC reset biến count mang giá trị ngẫu nhiên là 501 chẳng hạn).

Tôi thường khởi tạo biến count ngay trước khi vào vòng while(true) trong main(), và dùng điều kiện (count >= 500) thay cho (count == 500) trong phần xử lý ngắt.

Thân,

Tuane06_spkt 02-05-2008 06:29 PM

hi hi em sửa được lỗi đó rùi,nhưng vẫn không hiểu,bác nào giải thích hộ em với,khi em tạo một project mới,ví dụ em tạo trong thư mục "C:\Bai_tap" thỉ trong phần soạn thảo của em xuất hiện khai báo #include "C:\Bai_tap\nhapnhayB.h" nếu em để nguyên như này thì khi compiler sẽ báo lỗi " a #device" gì đó,nhưng khi em bỏ dòng này đi thì mọi việc ok,hic

tyhon 06-05-2008 01:50 AM

Em có đoạn code sau nhưng em không hiểu là lệnh adcHI và adcLO làm gì (với khai báo
char adcHI,adcLO).Anh nào giải thích hộ em

Code:

  while(TRUE)
        {
              adcValue = read_adc(); // Get ADC reading
 
              adcHI = (char)((adcValue >> 5)& 0x1f);     
              adcLO = (char)((adcValue & 0x1f)|0x80);   
                     
              putc(adcHI); 
              putc(adcLO); 
 
              delay_ms(10);  // Preset delay, repeat every 10ms
        }
}



Múi giờ GMT. Hiện tại là 07:02 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