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 24-04-2008, 12:03 PM   #1
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
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 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-04-2008, 12:07 PM   #2
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
Trích:
Nguyên văn bởi bean984 View Post
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 View Post
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ả
- 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 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ứ , bạn nên xem lại set i/o của bạn cho hai chân RC6 và RC7 đã đúng chưa , 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

Chúc các bạn thành công.
Thân.
Trích:
Nguyên văn bởi bean984 View Post
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
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-04-2008, 09:07 AM   #3
lion
Đệ tử 6 túi
 
lion's Avatar
 
Tham gia ngày: May 2007
Bài gửi: 127
:
bác F cho em vài link về CCS C 4.xxx
lion vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-04-2008, 09:11 AM   #4
lion
Đệ tử 6 túi
 
lion's Avatar
 
Tham gia ngày: May 2007
Bài gửi: 127
:
tìm trong diễn đàn này mệt quá
lion vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-04-2008, 05:48 PM   #5
picthanh
Đệ tử 2 túi
 
Tham gia ngày: Jun 2007
Bài gửi: 44
:
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.
__________________
VÔ DANH !!!
picthanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-04-2008, 06:54 PM   #6
Hard
Đệ tử 2 túi
 
Tham gia ngày: May 2006
Nơi Cư Ngụ: Huế
Bài gửi: 26
:
Send a message via Yahoo to Hard
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.
Hard vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 27-04-2008, 12:27 PM   #7
tyhon
Đệ tử 1 túi
 
Tham gia ngày: Nov 2007
Bài gửi: 22
:
Exclamation 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ư!
tyhon vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 27-04-2008, 05:21 PM   #8
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
Trích:
Nguyên văn bởi lion View Post
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
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-04-2008, 11:10 AM   #9
Tuane06_spkt
Nhập môn đệ tử
 
Tham gia ngày: Mar 2008
Bài gửi: 5
:
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
Tuane06_spkt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-04-2008, 11:10 AM   #10
lion
Đệ tử 6 túi
 
lion's Avatar
 
Tham gia ngày: May 2007
Bài gửi: 127
:
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 ???
lion vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-04-2008, 12:27 PM   #11
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
Trích:
Nguyên văn bởi lion View Post
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
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-04-2008, 10:28 PM   #12
kennybk04
Đệ tử 1 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 11
:
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)
    {
    }
}

thay đổi nội dung bởi: namqn, 30-04-2008 lúc 10:34 PM.
kennybk04 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-04-2008, 10:39 PM   #13
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
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,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-05-2008, 06:29 PM   #14
Tuane06_spkt
Nhập môn đệ tử
 
Tham gia ngày: Mar 2008
Bài gửi: 5
:
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
Tuane06_spkt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-05-2008, 01:50 AM   #15
tyhon
Đệ tử 1 túi
 
Tham gia ngày: Nov 2007
Bài gửi: 22
:
Question

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
        }
}

thay đổi nội dung bởi: namqn, 06-05-2008 lúc 02:09 AM.
tyhon 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à 09:21 AM.


Đượ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