Trích:
|
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
|
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
|
em tải phần mền ở trang 1 ở đâu bây giờ hở các anh?
|
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.
|
Trích:
Thân, |
Em viết trương trinh CCS có đoạn mã sau:
#include<16f877.h> #use delay(clock=20000000) #device *=16 ADC=8 khi dich chương trình báo lỗi sau: *** Error 23 "ADC877.c" Line 3(8,9): Can not change device type this far into the code *** Error 43 "ADC877.c" Line 3(9,11): Expecting a declaration *** Error 43 "ADC877.c" Line 3(11,13): Expecting a declaration *** Error 48 "ADC877.c" Line 3(14,17): Expecting a ( *** Error 43 "ADC877.c" Line 3(18,19): Expecting a declaration 5 Errors, 0 Warnings. dòng 3 lỗi là dòng : #device *=16 ADC=8 Em dùng bản CCS v4.01 ko biết tại sao lỗi mong các sư huynh chỉ dúp ?? |
Thắc mắc về ngắt các chân RB4-RB7
các anh cho em hỏi tại sao khi em dùng ngắt các chân từ RB4-RB7 của pic 16f877a thì ngắt cứ xảy ra liên tục không thoát là sao với a.Em lập trình bằng CCSC.Cụ thể là chương trình ngắt các chân này em viết cứ khi nào có ngắt xảy ra thì đọc ADC và gửi ra portC.Nhưng khi em kich hoạt ngắt thử thì thấy nó cứ đọc ADC liên tục.Em cảm ơn các anh.
namqn: Bạn đã hỏi câu này ở trên, và tôi cũng đã trả lời ở trên rồi. Bạn đã xem lại những gì mình hỏi và được trả lời chưa? |
Trích:
http://www.picvietnam.com/forum//sho...p?t=357&page=1 |
Cam ơn huynh đã quan tâm em khắc được lỗi đó rồi bằng cách đưa khai báo #device *=16 ADC=8 nằm ngay dưới include...
|
các anh ơi giúp em nha!em caì mplab rồi nhưng khi viết chương trình theo hướng dẫn của mấy anh, em kiếm file soure của 16f877a không có(picc/device/..)chỉ có 16f54.. thoi em bây giờ làm sao ha anh!
|
re
Trích:
Good luck! |
em hieu roi
|
hi hi em cam on anh nhe!
em xai ccs khoi nhung mplab cho khoe, may anh co file def_16f877a.h cua anh Nguyen Chí Linh cho em với(linh308@yahoo.com) em đang rất cần vì em học từ các chương trình của anh ấy viết anh khangcodt có không? cho em nha! cám ơn anh trước nha |
lộn rồi anh linhnc308@yahoo.com mới đúng!
|
liên hệ em cho anh!!!!
Trích:
than chao anh! |
Trích:
char LINE[] = { "SGN Tech" ,"Xin chao" }; for (i = 0; i < 8; i++) lcd_display_char(0, i, LINE[i]); for (i = 9; i < 16; i++) lcd_display_char(1, i-8, LINE[i]); À, bạn có bài nào trong C sử dụng kỹ thuật bảng giống bài trong MPLAB của bác Falleaf không, mình khai báo nhiều hằng kiểu char quá nên RAM tốn kinh khủng. |
Trích:
Code:
char LINE[] = {"SGN TechXin chao"}; Code:
char const LINE[] = {"SGN TechXin chao"}; |
cần hỏi
:
//************************************************** *************************** // Author : nhh // Date : 03/04/06 // Hardware: PIC16F877A //************************************************** *************************** #include <16F877A.h> #fuses NOWDT,PUT,XT,NOPROTECT #use delay(clock=4000000) #use fast_io(b) #use fast_io(d) #byte portb=0x06 #byte portd=0x08 const unsigned char digital[]={0b00000110, 0b01011011, 0b01001111, 0b01100110,\ 0b01101101, 0b01111101, 0b00000111, 0b01111111, 0b01101111}; // ma hoa digital duoi dang mang // Chuong trinh ngat #int_ext void ngat_RB0() { int i; if(i<9) { portd=digital[i]; ++i; } if(i==9) { i=0; } } // Chuong trinh chinh main() { set_tris_b(0b00000001); set_tris_d(0); enable_interrupts(global); enable_interrupts(int_ext); ext_int_edge(H_to_L); portd=0b00111111; while(true) { // chi doi ngat nen vong lap nay ko co gi ca ! } } cho mình hỏi trong chương trình này thì : lệnh này : #use fast_io(b) #use fast_io(d) #byte portb=0x06 #byte portd=0x08 có ý nghĩa là gì vậy? và lệnh này nữa: #int_ext chưa hết: enable_interrupts(global); enable_interrupts(int_ext); ext_int_edge(H_to_L); cám ơn nha |
Trích:
- #byte portb=0x06: địa chỉ portb - #int_ext: chỉ thị hàm ngắt ngoài trên chân RB0 - enable_interrupts(global);: cho phép ngắt toàn cục - enable_interrupts(int_ext);: cho phép ngắt ngoài trên chân RB0 - ext_int_edge(H_to_L);: kiểu ngắt cạnh xung cao xuống thấp Bạn cố gắng tìm hiểu trong help của trình biên dịch, có cả đó. Đừng hỏi những câu dạng như thế này vì sẽ không ai trả lời cho bạn đâu. |
[QUOTE=nhh;8442]- #use fast_io(b): dùng cái này thì trình dịch chỉ set chân i/o với 1 lệnh duy nhất, nhớ là trong hàm main() phải dùng lệnh set_trix_x(); thì mới được.
- #byte portb=0x06: địa chỉ portb -tấc cả nhửng cái này đã được định nghĩa rất kĩ và dể hiểu bạn tìm các bài của anh linhnc308, tìm bài nói về file _def_877a.h ấy. chúc may mắn!!! |
Trích:
vâng! em cám ơn anh.em cũng chưa kịp đọc help nên mới như vậy. |
1 Attachment(s)
Mọi người cho em hỏi chút ạ,
Em đang viết ct hiện số cho led 7 thanh như mạch dưới dùng polling nhưng ko sao chạy được T_T. Nhất là ko chọn được 2 chân Anode chung, lúc nào cũng hiện cả 2 led cùng lúc. Đoạn code của em như sau: Code:
int chuso[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; |
Trích:
Còn code khi tăng thời gian delay lên 1000 thì thấy rõ nhưng không hiểu bạn định làm gì. Sao ko post được file đính kèm :(. Nhấn vào tải file từ máy rồi mà nó ko hiện ra |
Trích:
Dù sao cũng cám ơn bạn nhé. |
Mình viết chương trình đọc giá trị trả về từ bộ ADC của PIC, sau đó xử lý dữ liệu để xuất ra LED 7 đoạn. Khi chạy thử thì thấy hiển thị sai, hiển thị lung tung. Kiểm tra lại phần cứng và phần mềm thấy OK. Cho chạy Deburg thì phát hiện CCS thực hiện phép chia sai (kết quả luôn bằng 0 bất chấp kiểu của biến).Bó tay!
Có ai biết lí do xin chỉ giúp mình với. Cảm ơn! |
Anh nào có phần mền viết font 32 x 16 cho em xin với em chân thành cám on
|
Code:
#include<16F876A.h> Ah, em đã thử thêm dòng lệnh Code:
ADCON1 = 0x06; Cho em hỏi chương trình em viết có thiếu gì không? và thiếu thì thêm như thế nào? Em xin cám ơn. |
Trích:
Bạn cho G5 = 0; thì đèn sáng thôi. |
Em viết lại đoạn code này và cho chạy:
Code:
#include<16F876A.h> 2 lệnh Code:
#byte adcon1=0x9F |
Trích:
Thông thường để hạn dòng bạn chỉ nên dùng 470 ohm. Trích:
Đã lỡ sửa bạn thì sửa luôn, không có ngõ vào cực thu hở chỉ có ngõ ra cực thu hở. Ở đây gọi chính xác là cực máng hở - Open Drain, cực thu hở - Open Collector chỉ trong các mạch logic TTL. Trích:
|
ok, thanks các bác nhiều, thật ra em dùng điện trở hạn dòng 330, còn điện trở kéo lên Vcc là 4k7 mà ghi nhầm, sory. Thanks các bác.
|
Trích:
mail cua mình: anh_gioi@yhaoo.com cám ơn cậu nha |
Đo tấn số
Xin chào! Tôi là thành viên mới. Thấy anh em trong diễn đàn tao đổi hay quá, tôi xin tham gia cùng. Tôi gửi chương trình làm với PIC6F876A cho anh em tham khảo cùng. Mạch này đo được tần số lên đến 50MHz. Tôi muốn anh em giúp tôi khi muốn đo tần số sóng mang trong tín hiệu đã điều chế biên độ thì làm thế nào? Code:
/*============================================================================== |
Chào anh nhh!
Cảm ơn anh đã post lên nhiều chương trình rất dễ hiểu. Anh cho hỏi: Tôi muốn vừa tiến hành đo điện áp và hiển thị lên LCD vừa định thời gian thì làm thế nào?. Cụ thể là tôi có bài tập tiến hành đo điện áp của 1 thiết bị sạc ác quy, vấn đề này thì không có gì, nhưng tôi muốn đo thời gian nó đã sạc nữa, đơn vị tính thời gian là phút. Mong anh nhh va các anh em trong diễn đàn giúp đỡ! Thanks alot! |
frequencymeter
Code:
#include <16f628.H> |
Cảm ơn bạn Necati đã Post lên chương trình mà tôi và nhiều anh em đang quan tâm. Tôi muốn hỏi thêm là nếu muốn đo 1 tần số sóng mang nằm trong tín hiệu điều chế thì giải quyết như thế nào. Giả sử có 1 tín hiệu cần điều chế có f = 2KHz độ rộng xung là 2us, tín hiệu sóng mang có f0 = 20MHz, nghĩa là trong 2us của tín hiệu điều chế sẽ có 20*2 = 40 chu kỳ xung của sóng mang trong đó. Bài toán ở đây là đo được tần số 20MHz từ tín hiệu đã điều chế đó.
Rất mong anh Necati và các anh em trong diễn đàn giúp đỡ! Thanks alot! |
Tôi đọc kỹ thì thấy chương trình của anh Necati cũng đo tần số liên tục, nhưng sử dụng thêm Timer0 để định thời 1 giây, và Timer1 cũng để lấy giá trị đếm số lần xuất hiện xung vào. Tất nhiên, chương trình viết rất chuyên nghiệp, đó cũng là điều mà tôi và nhiều anh em cần học hỏi thêm rất nhiều. Chân thành cảm ơn anh!
|
Xin hỏi tại sao chương trình dùng ngắt timer0 em làm giống nhu hướng dẫn mà nó không chịu chạy?
|
#include<18F4450.h>
#fuses NOWDT,PUT,HS,NOPROTECT #use delay(clock=20000000) #use fast_io(b) #byte portb=0x6 #define led pin_B0 int8 a; void ngat() { delay_ms(1000); a=a<<1; // dich trai a 1bit if(a==256) a=1; } main() { a=1; set_tris_b(0); while(true) { ngat(); output_b(a); } } Cách này thì PIC18F4550 cũng dịch leds vô tư. Nhưng mà muốn dùng TIMER0 như của bác nhh . Khi mình làm không hiểu tại sao lại không thể chạy. Nhờ bác chỉ giáo giùm nhé! #include <18F4550.h> #fuses NOWDT,PUT,XT,NOPROTECT #use delay(clock=20000000) . Mình đã sửa lại code của nhh như vậy để phù hợp với PIC18F4550, nhưng không hiểu sao vẫn không chạy đơợc. Bạn có thể hướng dẫn kỹ hơn về Interrup và Timer không, cảm on bạn nhiều. |
Múi giờ GMT. Hiện tại là 07:25 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