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)

fdv 15-03-2007 06:40 PM

cám ơn bạn,nhưng mình mới học pic ,nên không hiểu lắm ,bạn có thể cho mình biết cách sửa chữa cụ thể hơn không,mình xài thach anh 10000000,va sơ đồ mạch lắp đúng với chỉ dẩn của những bài đăng trước

namqn 15-03-2007 07:07 PM

Bạn thiết lập AN0 là ngõ vào analog, nhưng lại dùng nó như ngõ vào digital trong chương trình. Bạn nói rõ hơn về ý định của bạn. 'không chạy được' theo bạn nói là như thế nào? (không thấy thay đổi gì ở portB chăng?)

Thân,

fdv 15-03-2007 07:20 PM

em đang muốn lập trình cho robot bằng tay ,em muốn kick bằng tay cầm port a(hay 1 port bất kì nào cũng được) len mức cao ,tương ứng với các nút trên tay cầm em muốn xuất ra port b các mức thấp tương ứng để điều khiển động cơ
em lập trình pic lần đầu nên còn nhiều thứ căn bản chưa biết mong anh giúp đỡ

thaithienanh 15-03-2007 07:35 PM

bạn đang dùng project phải không (mình ít dùng cái này vì trông nó có vẻ luộm thuộm quá), mình khoái tự khai báo hơn vì nó gọn, theo như bạn nói thì phần code chỉ bây nhiêu đây là đủ rồi :
Code:

#include<16F877A.h>
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=10000000)

void main(){
while(true){
IF (input(pin_a0))  output_low(pin_b0);
else  output_high(pin_b0);
}


fdv 16-03-2007 02:46 PM

chuong trình khi mình viết 1 cổng input thì chạy được ,còn viết input cho nhiều cổng thì lại chỉ chạy được 1 input đầu tiên thôi,chương trình mình viết như thế này mong các bạn xem giúp mình
#include<16F877A.h>
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=10000000)

void main(){
while(true){
IF (input(pin_a0)) output_low(pin_b0);
else output_high(pin_b0);
IF (input(pin_a1)) output_low(pin_b1);
else output_high(pin_b1);
}}

chương trình trên khi mình nạp thì chỉ chạy được input pina0 à
không biết sao nữa,mong các bạn sửa giúp mình
cám ơn

Sangcao 16-03-2007 04:24 PM

Ban xem lai cau truc lenh, chu y su dung dau {} trong lenh IF
Vi du
if()
{thuc hien lenh;}
else ();
ok!

thaithienanh 16-03-2007 06:26 PM

vậy thì lạ thật :confused: mình thấy code đúng rùi mà.

namqn 16-03-2007 10:01 PM

Trích:

Nguyên văn bởi fdv (Post 7754)
chuong trình khi mình viết 1 cổng input thì chạy được ,còn viết input cho nhiều cổng thì lại chỉ chạy được 1 input đầu tiên thôi,chương trình mình viết như thế này mong các bạn xem giúp mình
#include<16F877A.h>
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=10000000)

void main(){
while(true){
IF (input(pin_a0)) output_low(pin_b0);
else output_high(pin_b0);
IF (input(pin_a1)) output_low(pin_b1);
else output_high(pin_b1);
}}

chương trình trên khi mình nạp thì chỉ chạy được input pina0 à
không biết sao nữa,mong các bạn sửa giúp mình
cám ơn

Để khẳng định nhận xét trên của bạn, bạn hãy thử viết code cho 1 input và 1 output, nhưng dùng RA1 thay vì RA0, xem PIC chạy ra sao.

Tôi cho rằng cần xác định thêm trạng thái cho các thanh ghi như ADCON1, TRISA, và TRISB nữa. Tôi không bao giờ viết code mập mờ như vậy, vì tôi không rõ CCS C có xác định trạng thái cho các thanh ghi đó hay không.

Thân,

tranvanthuong 17-03-2007 02:34 PM

mấy anh ơi, em tai mấy phần mên MPLAP Luon phiên bản 7.20,7.50,752 nhưng không biết cách viết bằng CSS anh chi em voi(minh hoạ bằng hình ảnh em cám ơn nhiều

khangcodt 17-03-2007 03:24 PM

Chào bạn tranvanthuong!..
Bạn tải CCSC (trong trang này, mục 'chương trình dịch & các công cụ mô phỏng') về rồi cài ra (tự động nó sẽ plug-in vào MPLAB). Sau đó chọn trong Project của bạn mục Project->Select language Toolsuite là CCSC là được.

khangcodt 17-03-2007 03:42 PM

Trích:

Nguyên văn bởi fdv (Post 7754)
chuong trình khi mình viết 1 cổng input thì chạy được ,còn viết input cho nhiều cổng thì lại chỉ chạy được 1 input đầu tiên thôi,chương trình mình viết như thế này mong các bạn xem giúp mình
#include<16F877A.h>
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=10000000)

void main(){
while(true){
IF (input(pin_a0)) output_low(pin_b0);
else output_high(pin_b0);
IF (input(pin_a1)) output_low(pin_b1);
else output_high(pin_b1);
}}

chương trình trên khi mình nạp thì chỉ chạy được input pina0 à
không biết sao nữa,mong các bạn sửa giúp mình
cám ơn

Chương trình của bạn viết không vấn đề gì đâu. Mình tin là nó chạy đúng theo 2 input. Có điều lưu ý viết từ khóa thôi. Bạn nên viết 'if' ... thì đúng hơn. (Mình không rõ 'IF' viết hoa thì ct dịch nó có hiểu là lệnh if không?).

Trivinhu 18-03-2007 02:25 PM

help me!ai co chuong trinh viet bang CCS ve van de dieu khien nhiet do dung 16F877A co nhieu chu thich thi gui len mang di.tui cong luc thap kem moi tu luyen duoi qua

kysikodau 26-03-2007 11:17 AM

chào các bác, em vừa cài MPLAB 7.51 thấy có nhúng sẵn CCS C nhưng ko biết là phiên bản mấy và CCS C mới nhất bi giừ là bao nhiêu rùi

tranvanthuong 09-04-2007 02:33 PM

em tải phần mền ở trang 1 ở đâu bây giờ hở các anh?

hoanglinh23 10-04-2007 01:42 PM

Mình viết chương trình ngắt cho các chân từ RB4-RB7.Khi có ngắt thì đọc ADC và gửi ra portc.Nhưng không hiểu sao nó cứ đọc liên tục và gửi ra liên tục như kiểu cờ ngắt không bị xóa đi sau khi thực hiện ngắt vậy.Bạn nào rõ về ngắt chỉ dùm mình với.


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

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