![]() |
![]() |
#106 |
Đệ tử 5 túi
Tham gia ngày: Jun 2008
Bài gửi: 112
: |
Trich:
Code:
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) câu lệnh này là khai báo sử dụng cổng nối tiếp RS232,chân C6 là chân truyền data,C7 là nhận.tốc độc truyền là 9600 bauld.em thấy nó ko có liên quan gì đến ADC hết.chắc do chương trình mô phỏng rồi!!
__________________
** xin hãy cho tôi là tượng đá ** Để muôn đời không nhớ thương ai ..!! |
![]() |
![]() |
![]() |
#107 |
Nhập môn đệ tử
Tham gia ngày: May 2008
Bài gửi: 8
: |
Cho em hỏi: có cách nào convert tu CCS sang Mikro C ko ah?
|
![]() |
![]() |
![]() |
#108 |
Đệ tử 4 túi
|
em khai báo chế độ power pwm cho pic18f4431.hoạt động ở chế độ independent.vậy mà khi set_power_pwm3_duty();cho các chân thì CCS C báo là undefined identify cho các chân 1,3,5. còn các chân 0,2,4 thì ok.vậy em phải khai báo thêm cho nó ở chỗ nào.
các anh giúp với ạ!! |
![]() |
![]() |
![]() |
#109 |
Đệ tử 4 túi
|
hình như không có cách nào làm theo yêu cầu em muốn được.bởi trong data sheet thì chỉ có 1 thanh ghi duty cycle cho 2 chân 0 và 1 .tức là 2 chân này sẽ xuất xung giống nhau ở chế độ independent!! các huynh check lại dùm đệ xem đúng vậy ko!!?
|
![]() |
![]() |
![]() |
#110 |
Đệ tử 4 túi
|
các anh ui!! ai có file def_18f4431 .cho em xin với nhé.nếu chưa có thì chắc em phải mần hết 1 ngày quá!! thanks các huynh!!
|
![]() |
![]() |
![]() |
#111 |
Đệ tử 3 túi
Tham gia ngày: Dec 2007
Bài gửi: 51
: |
giúp mình với!!!!
ai rành về counter xin chi mình cách thiết lập timer ở chế độ đếm?nếu có code thì tốt quá!!! có phải cứ có 1 xung đếm thì timer sẽ ngắt 1 lần? mình thử viết như thế này nhưng k thấy nó chạy j cả. Code:
#include "16F877A.h" // PIC16F877A header file #device 16F877A*=16 ADC=10 #include <defs_16F877A.h> #fuses HS, NOWDT, PUT, NOPROTECT, NOLVP // for debug mode #use delay(clock=8000000) // for 4Mhz crystal #use fast_io(b) int16 count0; int8 b0; /////////////////////////////////////////////////////////// #INT_TIMER0 TIMER0_ISR() { ++count0; if (count0==100) { count0=0; b0=b0+1;// dich trai a 1bit //portd=170; } if (b0==2) { b0=0; count0=0; //HTGT0=1; portb=0; //portd=252; disable_interrupts(int_timer0); } } ///////////////////////////////////////////////////////////////////// void main(void) { set_tris_a(255); // Chi co dau vao tuong tu set_tris_b(0); set_tris_d(0); portb=255; //portd=255; count0=b0=0; enable_interrupts(global); enable_interrupts(int_timer0); setup_TIMER_0(RTCC_EXT_L_TO_H ); setup_COUNTERS(RTCC_EXT_L_TO_H,RTCC_DIV_2); set_TIMER0(1); while(true) { } } |
![]() |
![]() |
![]() |
#112 |
Đệ tử 4 túi
|
có lẽ là do đoạn code trên bạn ạ. bạn nhầm tại câu lệnh "disable_interrupts(int_timer0);" có phải bạn muốn xóa cờ ngắt cho lần tiếp theo nhưng câu lệnh trên là xóa bit enable cho ngắt timer0. bạn đọc kĩ lại help CCS C và datasheet của 877a nhé. xem mình có đúng ý bạn ko!! good luck!!
|
![]() |
![]() |
![]() |
#113 |
Nhập môn đệ tử
Tham gia ngày: Oct 2008
Bài gửi: 2
: |
chào các bác
các bác cho em hỏi la:khi viết bàng CSS ma mình sài chức năng UART voi máy tinh. ma khi khai báo ngắt của no thi không bao giờ dược cả ,vi khi dó nó sẽ báo là ngắt toàn cục bị cấm trong khi chương trình chính đang thực hiện : vd: puts i ma trong khai báo ngắt #int_tbe() { led=!led; } thi không bao giờ led nay chớp tăt nghĩa la nó không bao giờ nhảy vao ngát la so vây. mình thi sử dụng được hết các chức năng khác nhưng chỉ con ngắt của Uart la không sai dược, bực mình quá. nhưng mình viết bằng hợp ngữ thi ok. mong cac bác chỉ giáo . |
![]() |
![]() |
![]() |
#114 |
Đệ tử 5 túi
Tham gia ngày: Oct 2008
Bài gửi: 95
: |
![]() các bạn cho mình hỏi về đoạn code này :khai báo hàm if(tmr1if==1) sao ki vay tmr1if là gì vậy.Với intcon là gì vậy ? Cảm ơn các bạn .Mình còn yếu.
//////////////////////////////////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(55535); // Trong 1ms if(tmr1if==1) { intcon=0; //stop ngat a1=1; } } |
![]() |
![]() |
![]() |
#115 |
Đệ tử 4 túi
|
có lẽ đó là 1 biến hay đó là bit cờ ngắt của timer 1!! người sử dụng đặt trong file define!!bạn xem trong 2 file mà họ include trong code mẫu!!! có thể từ "if" làm bạn nghĩ là lệnh IF ! thực ra nó là interrupt flag!!
chúc may mắn! |
![]() |
![]() |
![]() |
#116 |
Nhập môn đệ tử
Tham gia ngày: Aug 2008
Bài gửi: 5
: |
Mới học lập trình ccs ai cho e hỏi file defs_16f877A.h và file def_16f877A.h khác nhau thế nào? Ai có file defs_16F877A up lên cho e được kô. Thanks!
|
![]() |
![]() |
![]() |
#117 |
Nhập môn đệ tử
Tham gia ngày: Oct 2008
Bài gửi: 2
: |
bác F ơi cho em xin phần mềm css cho dsp đi ,em tìm hoài mà không thấy . con thằng mikroe thì không biết làm sao ma nạp nó không chạy ,chắc là nó có nhiều fuse quá em không biết chon cái nào cả ,bác có thể giúp em được không.
sẵn cho em hỏi luôn là sử dụng chức năng usb của pic18f4550 như thế nào và máy tính khai báo ra sao khi em dùng VB để giao tiếp vời pic. |
![]() |
![]() |
![]() |
#118 |
Đệ tử 2 túi
Tham gia ngày: Oct 2007
Bài gửi: 29
: |
hỏi về dinh thời gian trong ngắt dung timer
em sử dụng thạch anh 20MHZ cho 16f877a, em viet chuong trình ngắt timer0 1s, nhưng em kiểm tra thấy nó nhanh hon 1s rất nhiều, bác nào chỉ em cho sai chổ nao với. chương trinh của e như sau:
#include <16f877a.h> #fuses HS,NOWDT,NOPROTECT,NOLVP #use delay(clock=20000000) #byte PORTB = 0x06 int16 count; int8 a; //Chuong trinh ngat TMR0 #int_timer0 void interrupt_timer0() { set_timer0(251); ++count; if(count == 1000000) // 1000000*1us = 1000000us = 1s { count=0; rotate_left(&a,1); } } //Chuong trinh chinh void main(void) { set_tris_b(0); enable_interrupts(int_timer0); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2); enable_interrupts(global); a = 0x01; while(true) { PORTB = a; } } |
![]() |
![]() |
![]() |
#119 |
Đệ tử 4 túi
|
do bạn set prescale cho timer là 2 nên timer tăng lên sau mỗi 0.4us tức là 0.4*5=2us thì timer ngắt 1 lần chứ ko phải là 1us. bạn nên tham khảo thêm trong phần Help củ PIC C!!
vấn đề thứ 2 là biến count của bạn là biến int 16 bit tức giá trị tối đa chỉ là 2^16=65536!! thì điều kiện If của bạn liệu có đúng ko?? thân!! |
![]() |
![]() |
![]() |
#120 |
Đệ tử 5 túi
Tham gia ngày: Jun 2008
Bài gửi: 112
: |
trích :
Code:
vấn đề thứ 2 là biến count của bạn là biến int 16 bit tức giá trị tối đa chỉ là 2^16=65536!! thì điều kiện If của bạn liệu có đúng ko?? Mọi người chú ý đến phạm vi hoạt động của biến được khai báo nếu không sẽ bị tràn làm sai kết quả
__________________
** xin hãy cho tôi là tượng đá ** Để muôn đời không nhớ thương ai ..!! |
![]() |
![]() |
![]() |
|
|