nếu đơn giản bạn chỉ muốn nháy led ở port b thôi sao bạn khai báo nhiều vậy
chỉ cần Code:
#include <16f877a.h> |
Cảm ơn anh. Đúng là nó bị lỗi trong device thật. Hôm qua có pro giúp em sửa máy. Mới học
gà quá, bị lỗi cũng ko biết. làm em vất vả với nó. |
à tại vì em mới học PIC nên toàn khai báo theo kiểu PIC winar. khai báo đầy đủ nào thì
#fuses nào thì setup ADC().... ^^. Bác thấy đoạn code của em thừa chỗ nào thì bỏ hộ em rồi post cho em xem với nhé. |
Có bác nào Viết code mà làm video học PIC luôn ko gửu cho em link với. Đọc sách nhiều cứ
u u cái đầu ý. Tks các pro nhiều |
Tks
Trích:
Cảm ơn anh nhé. Nó bị lỗi trong device thật. Giờ CCS chạy ngon rồi. ^^~ |
mình thử viết code dùng CCS điều khiển mấy chân IO của PIC16f877A. mô phỏng thì chạy ngon lành nhưng khi nạp vào chip thì không chạy. mình có POST code lên. ai biết chỉ giúp với. thanks.
Code:
#include<16F877A.h> |
Trích:
1/Phần config của thạch anh , mình thấy bạn set là HS trong khi clock lại là 4000000 . 2/Trên mạch thật của bạn có điện trở kéo lên cho MCLR chưa . Các chân nối với phím BUTTON của bạn có các điện trở kéo lên chứ ? HY vọng giúp được bạn . |
Trích:
|
có bác nào biết chỉ e với. điều khiển mỗi chân IO mà nó không xuất ra được.
|
Trích:
1/Bạn xem datasheet thì chắc cũng biết , với thạch anh dưới 10Mhz thì ta phải set OSC là XTAL chứ không phải HS 2/ Để điều khiển được từng bit thì bạn phải set bit đó là output trước đã . Thường nó có dạng TRISX.NUMBER=0 , với X là tên port ,vd : b , c . Còn NUMBER là thứ tự bit của PORT đó , vd : portb.0 , portc.5 .... Khi set cho cả port thì là trisb = %00000000 Trong code của bạn mình chưa thấy bạn làm công việc định chân output này . 3/ Tương tự để nhận một giá trị hoặc 1 bit nào đó thì bạn phải set port hoặc bit là input . Thường có dạng TRISX.NUMBER=1 là cho từng bit , hoặc có dạng TRISX = %11111111 . Trong code của bạn có các phím bấm nhưng mình cũng chưa thấy bạn set phần này . Về các bước phía trên bạn nên tham khảo thêm các code mẫu có trong diễn đàn nhé , vì mình không chuyên về CCS nên không thể giúp bạn từng câu lệnh được . Bạn mới bắt đầu nghiên cứu thì tốt hơn là nên thực hành với những bài tập nho nhỏ về phím bấm , về bật tắt led chứ chưa nên đi sâu vào ngắt , vào giao tiếp SPI .... Từ từ rồi sẽ quen thôi bạn . |
Sao phần này dành cho ngưới mới học pic mà nhiều bài viết các bạn gửi mình thấy cao siêu quá, không phải dành cho member là elementary thì phải!
|
Kính chào các bạn trong 4rum, Mình mới học PIC nên có 1 vấn đề nhỏ mong các bạn giúp đỡ;
Mình tạo 1 project bằng CCS 4.14 bằng PIC Wizard, biên dịch OK, chạy được. Nhưng khi mình Chép sang máy tính khác, mở lên, thì mở file lên không được. Hoặc là khi mình Copy toàn thư mục chứ Project sang 1 ổ đĩa khác thì tình trạng cũng tương tự. Vẫn mở lên nhưng không mở file main.c được. Mong các bác có Video hoặc gì đó giúp mình với... Link CCS 4.14 Mình up mê đi a phai các bạn tải về và làm các bước tạo dự án của các bạn và quay video gửi cho mình với nhé. Cám ơn nhiều các bạn giúp mình. Thân ái... http://www.mediafire.com/?xvd2fod6jvhgy4r |
e đang viết code để điều khiển động cơ bước. e muốn xuất ra 50 bước code của e ko biết vì sao nó chỉ xuất ta 1 bước mội nguòi xem giúp e nha
signed int i; void rephai() { for (i=0;i<=50;i++) { output_high(pin_b0); delay_ms(2); output_low(pin_b0); delay_ms(2); } } void turn_back() { for (i=0;i<=50;i++) { output_high(pin_b0); delay_ms(2); output_low(pin_b0); delay_ms(2); } } void main() { set_tris_b(0x00); //mac dinh port d la dau ra while(1) { output_low(pin_b1); delay_ms(100); rephai(); delay_ms(100); output_high(pin_b1); turn_back(); delay_ms(100); } } |
liên quan đến đếm 8bit dùng 8051?
Help me!
Chào mọi người, xin lỗi vì lại hỏi mọi người vào phần phúc đáp nhanh! code: #include<AT892051.h> void wait_a_second() { unsigned int x; for(x=0; x<33000; x++); } main() { int LED=0; for(;; ) { P1=~LED; LED++; wait_a_second(); } } Yêu cầu là dùng 8051 đếm 8 bít tăng dần rồi hiển thị ra led đơn! Em chưa hiểu là 1) làm sao lại tính được ra con số 33000 để tạo trễ cho chương trình khoảng 1s? 2) dòng lệnh for(;; ) có ý nghĩa như thế nào? Mong mọi người giải đáp giúp? |
Chào các Anh,
Em tập viết đoạn code này, mà cái speed nó cứ trơ trơ, không xuất ra chân nào cả, thử biến pulse_Ne, thì nó cũng thế (không bằng 0, cũng không ra giá trị nào cả). Nhờ các anh chỉ giùm, bế tắt quá. Em cảm ơn rất nhiều //================================================== ====== // Ten chuong trinh : DEM XUNG Ne BANG NGAT NGOAI // Nguoi thuc hien : Minh_mse // Ngay thuc hien : …………. // Phien ban : 1.0 // Mo ta phan cung : Dung PIC16F887. Thach anh 20MHz // : Xung vuong Ne vao chan RB0 (External interrupt) // : Xuat thu so do toc do ra cac chan RD4-RD6 // : //================================================== ====== #include<16F887.h> #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD,NOWRT #use delay(clock=20000000) int16 pulse_Ne; float speed; #int_EXT //Chuong trinh ngat ngoai duoc goi khi co tac dong o chan RB0 EXT_ISR() { ++pulse_Ne; } main() { while(1) { // Khoi tao ngat ngoai tai RB0 ext_int_edge(H_TO_L); // Ngat canh len RB0 enable_interrupts(INT_EXT); // Cho phep ngat ngoai enable_interrupts(GLOBAL); // Cho phép ngat toan cuc setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_8 ); //Khoi tao bo dinh thoi gian dem xung-Dung dao dong noi //(20*10^6)/8=2.500 xung/ms set_timer1(3037); //Gia tri ban dau cho timer1 la 65.537-62500=3.037 //timer1 16bits se tran khi bang 65.537 enable_interrupts(INT_TIMER1); speed=pulse_Ne/(25*1000); //Tinh bang vong/giay //Lay mau 25ms/lan if (speed==0) output_high(PIN_D4); if ((speed>=1) | (speed<=2))output_high(PIN_D5); if (speed>3) output_high(PIN_D6); } } |
Múi giờ GMT. Hiện tại là 09:40 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