![]() |
|
|
|
|
#1 |
|
Đệ tử 6 túi
Tham gia ngày: Oct 2006
Bài gửi: 147
: |
cam on anh rất nhiều !
|
|
|
|
|
#2 |
|
Đệ tử 6 túi
Tham gia ngày: Oct 2006
Bài gửi: 147
: |
cám ơn anh lần nữa nha
anh có thể dịch cho em masy nghĩa của từ trên kia được ko ạ. |
|
|
|
|
#3 |
|
Đệ tử 4 túi
Tham gia ngày: May 2007
Bài gửi: 65
: |
Đây là chưong trinh :
Code:
#include <16F877A.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#device 16F877*=16 ADC=8
#use delay(clock=10000000)
#use fast_io(b)
int8 adc;
main()
{set_tris_b(0);
setup_adc(adc_clock_internal);
setup_adc_ports(AN0);
set_adc_channel(0);
delay_ms(10);
while(true)
{
adc=read_adc();
output_B(adc);
}
}
![]() sau khi chạy thì tất cả các led đều sáng.Em không hiểu tại sao. Do sai ở mạch hay do chương trình. ![]() Có bác nào giúp em với |
|
|
|
|
#4 |
|
Đệ tử 9 túi
|
![]() Giữa biến trở và tụ C5 của bạn cần kéo xuống đất, nếu ko ngõ ra biến trở luôn ở mức cao 5V nên portB của bạn 8 đèn luôn sáng. Thành thật cáo lỗi vì nhầm lẫn ngớ ngẩn này! |
|
|
|
|
#5 |
|
Đệ tử 4 túi
Tham gia ngày: May 2007
Bài gửi: 65
: |
Các bác ơi! Em gặp nhiều trường hợp vẽ orcad bị nhầm. Theo em biết thì proteus có thể mô phỏng và thiết kế mạch in nữa. Vậy tại sao không dùng Proteus? Có ai so sánh hai món này giúp em ko? Cho em hỏi thêm: Làm sao để tạo bus trong proteus. Cảm ơn các bác rất nhiều!
|
|
|
|
|
#6 |
|
Đệ tử 6 túi
Tham gia ngày: Oct 2006
Bài gửi: 147
: |
cái đoạn code này:
#include <16F877A.h> #fuses HS,NOWDT,NOPROTECT,NOLVP #device 16F877*=16 ADC=8 #use delay(clock=10000000) #use fast_io(b) int8 adc; main() {set_tris_b(0); setup_adc(adc_clock_internal); setup_adc_ports(AN0); set_adc_channel(0); delay_ms(10); while(true) { adc=read_adc(); output_B(adc); } } ///////////////////////////// setup_adc_ports(AN0); //tại sao lại lại chọn chân AN0, mình có thể chọn chân khác được không.nếu chọn chân khác thì mình có phải thay thông số nào khác nữa không? thank! |
|
|
|
|
#7 |
|
Đệ tử 7 túi
|
To anh giỏi @ : bạn phải nắm đuợc các tập lệnh sẵn của ccs
Như lệnh Setup_ADC_port (value) dùng để xác định chân nhận tín hiệu Analog và điện thế chuẩn sử dụng (Vref), thường thì mình hay dùng (all_analogs) tức là dùng hết các chân analog mà VDK cung cấp và điện thế chuẩn bằng VDD, nhưng tuỳ vào nguời sử dụng muốn biến một chân Analog thành pin I/O và Vref từ một nguồn khác thì sẽ chọn value này khác đi .Lệnh Set_ADC_channel (channel) dùng để chọn chân đọc giá trị ADC channel là các số từ 0->n (n phụ thuộc vào từng loại vi điều khiển đuợc trang bị bao nhiêu cổng ADC) ví dụ như bạn nhìn thấy chân AN3, và bạn muốn đọc giá trị từ chân này thì bạn sẽ đánh vào là (3) rất đơn giản phải không Ví dụ cho bạn chút nhá : setup_adc(adc_clock_internal); // chọn xung lấy mẫu ADC = xung nội setup_adc_ports(all_analogs); //sử dụng tất cả các chân ADC và vef=VDD While(true){ // vòng lặp chính while(true){ set_adc_channel(0); // chọn chân lấy mẫu là ANO delay_ms(10); // tạo trễ để lấy mẫu ADC chuẩn xác adc0=read_ADC(); // nạp giá trị đọc đuợc vào biến adc0 set_adc_channel(1); // chọn chân lấy mẫu là AN1 delay_ms(10); adc1=read_ADC(); } sau đó bạn muốn làm gì đó với các giá trị thu đuợc thì làm OK } To dvnccbmacbt @ : Proteus hỗ trợ luôn cho nguời dùng tiện ích là Ares (thần nam tính theo ngữ hi lạp cổ ), mình có thể dùng để vẽ mạch khá tốt, đồ hoạ khá bắt mắt (có hỗ trợ cả chức năng mô phỏng mạch 3D), giải thuật giải đẩy khi đi mạch của nó cũng khá thông minh (hơn cả Orcad tất nhiên là theo mình thui), nhưng nó có một điểm cực yếu là khi đi vào cấy hình chi tiết các thông số cho mạch in thì nó không có đủ , nên nếu là các mạch dơn giản thì Proteus là một trong những lựa chọn hàng đầu của mình, Orcad điểm mạnh là các thông số OK (quá chi tiết), trình nhiều nguời dùng nên có thể giao lưu học hỏi qua lại, phần help dễ nắm bắt..v.v... tuy nhiên điểm yếu của nó là cực kỳ dễ nhầm lẫn trong thiết kế (chỉ cần phần nguyên lý bạn không cẩn thận chồng dây hay gì đó là sinh chuyện rồi ), đồ hoạ thì xấu hoắc, thuật đi mạch thì ngốc hết biết (thường thấy mấy anh dùng toàn vẽ tay ),... Nên lựa chọn hàng đầu của mình hiện giờ là Protel hoàn hảo hết tất cả những gì mình muốn ,khuyên bạn nên dùng Protel nếu như cảm thấy mình có khả năng tự tiếp thu tốt (do tài liệu hiện rất ít và chẳng đầy đủ) và chọn Orcad khi muốn học hỏi lớp nguời đi trước , Còn về vẽ Bus trong Proteus thì quá đơn giản rùi bạn chọn cái tool nào có hình giống như "sợi bus" vậy là xong, sau đó nối các đường dây từ linh kiện vào dùng tiếp tool net_label đặt nhãn cho từng đường để bus còn biết đâu là các đầu dây của cùng một dây , nếu vẫn chưa hiểu rõ về bus thì bạn phải tìm về một ví dụ nào đó rồi xem tại sao lại nối như vậy Chú ý nếu bạn vẫn chưa rõ thì hãy rê chuột lên trên các tool chờ 1 lát trình sẽ hiện lên tên của từng tool (cái này giúp ích bạn rất nhiều khi mò mẫm một phần mềm nào đấy )
__________________
_____________________________Tri nhân tri tự bất tri tâm_____________________________ _ _ _ _ _ _ _ _ Yêu mến tất cả anh em Picvietnam.com _ _ _ _ _ _ _ _ . . . . . . . . . . . . . . . . Để post đuợc một câu hỏi rõ ràng xin tham khảo link sau : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . http://www.picvietnam.com/forum/showthread.php?t=1263. . . . . . . . . . . . . . . . |
|
|
|
|
#8 | |
|
Trưởng lão PIC bang
|
Trích:
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 |
|
|
|
|
|
#9 |
|
Đệ tử 2 túi
Tham gia ngày: Jun 2007
Bài gửi: 43
: |
Chương trình ngắt đây
Các bạn coi gium` mình có sai chỗ nào không mà mình delay không được
Mình muốn khi đóng RB4 thì LED sẽ nháp nháy với delay 50ms chẳng hạn. Phần ngắt chuyển chế độ thì mình làm được nhưng delay trong mỗi chế độ thì potay. Code:
#include <16F877A.h>
#fuses NOWDT,PUT,XT,NOPROTECT
#use delay(clock=1000000)
#use fast_io(b)
#byte portb=0x06
#byte intcon=0x000B
#bit RB4=portb.4
#bit RB5=portb.5
#bit RBIF=intcon.0 //dinh nghia co ngat RB
#bit RBIE=intcon.3 //dinh nghia bit cho phep ngat RB
// Chuong trinh ngat
#int_RB
void ngat_RB()
{
if((RBIF)&&(RBIE))
{
//Kiem tra sw1
{
if(RB4==0)
{
portb=0b00000001;
delay_ms(200);
portb=0b00001111;
delay_ms(200);
}
}
//Kiem tra sw2
{
if(RB5==0)
{
portb=0b00001000;
}
}
RBIF=0; //Xoa co ngat RB
}
}
// Chuong trinh chinh
main()
{
set_tris_b(0b11110000);
portb=0b11110000;
enable_interrupts(global);
enable_interrupts(int_RB);
ext_int_edge(H_to_L);
while(true)
{
}
}
|
|
|
|
|
#10 | |
|
Đệ tử 9 túi
|
Trích:
Code:
#include <16F877A.h>
#fuses NOWDT,PUT,XT,NOPROTECT
#use delay(clock=4000000)
#use fast_io(b)
#byte portb=0x06
#byte intcon=0x000B
#bit RB4=portb.4
#bit RB5=portb.5
#bit RBIF=intcon.0 //dinh nghia co ngat RB
#bit RBIE=intcon.3 //dinh nghia bit cho phep ngat RB
// Chuong trinh ngat
#int_RB
void ngat_RB()
{
if((RBIF)&&(RBIE))
{
//Kiem tra sw1
{
if(RB4==0)
{
portb=0b00000001;
delay_ms(50);
portb=0b00001111;
delay_ms(50);
}
}
//Kiem tra sw2
{
if(RB5==0)
{
portb=0b00001000;
}
}
RBIF=0; //Xoa co ngat RB
}
}
// Chuong trinh chinh
main()
{
set_tris_b(0b11110000);
portb=0b11110000;
enable_interrupts(global);
enable_interrupts(int_RB);
ext_int_edge(H_to_L);
while(true)
{
}
}
|
|
|
|
|
|
#11 |
|
Đệ tử 4 túi
Tham gia ngày: May 2007
Bài gửi: 65
: |
Tui có cuốn sách này về CCS. hi vọng có thể giúp cho cho 1 số bạn :
http://d3.myfreefilehosting.com/d1/C...update%20I.pdf |
|
|
|
|
#12 |
|
Đệ tử 2 túi
Tham gia ngày: Jun 2007
Bài gửi: 43
: |
Mình đã sữa lại thành 1000ms và đã chạy mô phỏng được,có điều khi chuyển chế độ (nhấn button tới 2 lần và mối làn nhấn phải giữ một thời gian) thì mới chuyển được .
Mình muốn nhấn button (1 lần) thì chế đọ 1 chạy,nhấn button 2 thi chế độ 2 chạy,vạy thôi.Mình hi vọng các bạn có thể sửa giùm mình thêm đoạn code đó nha. #include <16F877A.h> #fuses NOWDT,PUT,XT,NOPROTECT #use delay(clock=4000000) #use fast_io(b) #byte portb=0x06 #byte intcon=0x000B #bit RB4=portb.4 #bit RB5=portb.5 #bit RBIF=intcon.0 //dinh nghia co ngat RB #bit RBIE=intcon.3 //dinh nghia bit cho phep ngat RB // Chuong trinh ngat #int_RB void ngat_RB() { if((RBIF)&&(RBIE)) { //Kiem tra sw1 { if(RB4==0) while(RB5==1) { portb=0b00000001; delay_ms(1000); portb=0b00001111; delay_ms(1000); } } //Kiem tra sw2 { if(RB5==0) while(RB4==1) { portb=0b00001000; delay_ms(1000); portb=0b00001111; delay_ms(1000); } } RBIF=0; //Xoa co ngat RB } } // Chuong trinh chinh main() { set_tris_b(0b11110000); portb=0b11110000; enable_interrupts(global); enable_interrupts(int_RB); ext_int_edge(H_to_L); while(true) { } } |
|
|
|
|
#13 |
|
Đệ tử 2 túi
Tham gia ngày: Mar 2007
Bài gửi: 45
: |
BẠN SỪA LẠI #fuses NOWDT,PUT,XT,NOPROTECT THÀNH
#fuses NOWDT,PUT,HS,NOPROTECT LÀ CHƯƠNG TRÌNH ỔN RỒI
__________________
Cổng trường Đại học cao vời vợi Đồng ruộng mênh mong đón em về! |
|
|
|
|
#14 |
|
Đệ tử 2 túi
Tham gia ngày: Mar 2007
Bài gửi: 45
: |
Lúc Bạn Viết Chương Trình Ngắt Thì Trong Chương Trình Này Phải Cấm Ngắt Toàn Cục Xử Lí Xong Mới Cho Phép Ngắt Lại
Vài điều Trao đổi Cùng Bạn!
__________________
Cổng trường Đại học cao vời vợi Đồng ruộng mênh mong đón em về! |
|
|
|
|
#15 |
|
Đệ tử 2 túi
Tham gia ngày: Jun 2007
Bài gửi: 43
: |
thx bạn nhiều.Mình chạy được rồi,ah,mà bạn giải thích mình thay "Xt" trong dòng đó bằng "HS" la sao hả bạn.
|
|
|
![]() |
|
|
Similar Threads
|
||||
| Ðề tài | Người gửi | Chuyên mục | Trả lời | Bài mới |
| TUT về USART trong PIC16F877A | mafd_47a | MPASM | 16 | 19-02-2025 05:32 AM |
| TUT ve I2C ( pic16f877a ) | mafd_47a | MPASM | 28 | 28-01-2025 10:45 PM |
| Lập nhóm PIC16F877A | nhh | Cơ bản về vi điều khiển và PIC | 285 | 08-03-2017 11:08 PM |
| Bộ so sánh và PWM cho PIC16F877A | anhquangngai | Cơ bản về vi điều khiển và PIC | 24 | 08-09-2012 09:00 AM |
| Pic16f877a TỪ DỄ TỚi KhÓ | ntc | Cơ bản về vi điều khiển và PIC | 373 | 23-05-2009 10:24 PM |