![]() |
|
![]() |
#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ổ ![]() ![]() ![]() ![]() ![]() 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 ![]() 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_____________________________ _ _ _ _ _ _ _ _ ![]() ![]() . . . . . . . . . . . . . . . . Để 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.
|
![]() |
![]() |
Ðiều Chỉnh | |
Xếp Bài | |
|
|
![]() |
||||
Ðề 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 |