![]() |
|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#61 | |
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 |
|
![]() |
![]() |
![]() |
#62 | ||
Trưởng lão PIC bang
|
Trích:
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 thay đổi nội dung bởi: namqn, 16-08-2006 lúc 08:51 PM. |
||
![]() |
![]() |
![]() |
#63 |
Đệ tử 6 túi
Tham gia ngày: Jun 2005
Bài gửi: 141
: |
Bây giờ thì đã thông. Thanks namqn
|
![]() |
![]() |
![]() |
#64 | |
Đệ tử 4 túi
Tham gia ngày: Feb 2006
Bài gửi: 66
: |
Trong P16F877A, một vài thanh ghi SFR có mặt trong cả 4 bank như: PCL, FSR, STATUS, PCLATH... như thế giá trị của chúng sẽ được tham chiếu qua lại và ta đều có thể truy cập đến mà không cần quan tâm đến vị trí bank hiện tại. Việc lưu trữ giá trị thanh ghi Status theo em chỉ có ý nghĩa đối với các bit cờ C, DC, Z,PD\ và TO\ thôi, còn các bit chọn bank thì không cần vì mỗi khi cần truy cập đến thanh ghi nào thì chỉ cần banksel thanhghi là ổn, hoặc có thói quen luôn có dòng page0 mỗi khi hoàn thành việc truy cập đến SFR.
riêng về PCLATH thì dòng note trang 30/phần PCL và PCLATH đã có chú ý rồi. còn phần này: Trích:
|
|
![]() |
![]() |
![]() |
#65 |
Trưởng lão PIC bang
|
Cái này được dịch từ datasheet của PIC16F87xA mà em, có điều em tìm ở chỗ không có nói, còn chỗ này có nói đến nó thì có lẽ em chưa tìm. Nó nằm ở mục 14.12 của DS39582B, trang 154.
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 |
![]() |
![]() |
![]() |
#66 |
Đệ tử 2 túi
Tham gia ngày: Jun 2006
Bài gửi: 28
: |
em đang làm chớp tắt trên led bằng TMR0 ;ngõ ra là porta ;sao khi làm em thấy 1 số lệnh như Comf portA và incf portA khi thực hiện nó ko xuất ra portA dc, muốn thực hiện điều đó thì em phải tác động qua 1 thanh ghi trung gian sau đó mới chuyển giá trị từ thanh ghi trung gian đó vào portA thì nó mới hiển thị!!!không hiểu tai sao lun!!!mong được chỉ thêm!
|
![]() |
![]() |
![]() |
#67 | |
Đệ tử 4 túi
Tham gia ngày: Feb 2006
Bài gửi: 66
: |
Trích:
COMF PORTA; lấy bù PORTA rồi ghi giá trị này vào W, giá trị PORTA không thay đổi. bạn sửa lại như thế này: COMF PORTA,F; lấy bù PORTA rồi ghi vào chính nó. và nhớ thiết lập PORTA là ngõ xuất: MOVLW H'FF'; W=0xFF MOVWF TRISA chắc bạn đang tư duy theo tập lệnh 8051 nên mới thế |
|
![]() |
![]() |
![]() |
#68 | |
Trưởng lão PIC bang
|
Trích:
Vấn đề sẽ không xảy ra nếu bạn dùng một ô nhớ để lưu trạng thái của PORTA, khi đó bạn sẽ thao tác trạng thái của PORTA thông qua biến trung gian, và không bị ảnh hưởng của hoạt động read-modify-write (vì ô nhớ không bị ảnh hưởng của hoạt động này). Bạn newuser viết nhầm chỗ thanh ghi TRISA luôn, để PORTA là các ngõ ra thì phải đặt TRISA = 0x00. 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 |
|
![]() |
![]() |
![]() |
#69 |
Đệ tử 2 túi
Tham gia ngày: Jun 2006
Bài gửi: 28
: |
bạn newuser ah mình cũng đã đặt portA la output và cũng đặt các đích nguồn của lệnh comf là thanh ghi F mà vẫn bị như vậy!
Anh namqn có thể nói rõ hơn về vấn đề đó ko , và những lệnh nào bi ảnh hưởng theo kiểu đó , nếu em ko lầm thì chỉ có những lệnh toán học thôi phải ko?phải bắt buộc phải thao tác qua thanh ghi trung gian như để có thể có kết quả hiển thị trên các port khi mình thao tác trực tiếp trên nó sao ??? |
![]() |
![]() |
![]() |
#70 | ||
Trưởng lão PIC bang
|
Trích:
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 |
||
![]() |
![]() |
![]() |
#71 |
Nhập môn đệ tử
Tham gia ngày: Oct 2006
Bài gửi: 3
: |
aho em hoi chut. bao gio co lop hoc pic moi day ? Neu ai biet thi nhan cho em qua dia chi sau khungbohanhtinh2000. thanks
|
![]() |
![]() |
![]() |
#72 | |
Đệ tử 2 túi
|
cho em hỏi có cách nào hay hơn không
Trích:
|
|
![]() |
![]() |
![]() |
#73 |
Đệ tử 1 túi
Tham gia ngày: Jan 2006
Bài gửi: 17
: |
xin hỏi 1 tí ,tui có 1 con 18F45 có thể dùng mạch của 16F877 cho con này dc ko ,vì tui chưa tìm dc sơ đồ mạch của chon 18F45
namqn: theo tôi biết thì không có PIC18 nào có số hiệu là PIC18F45, do đó câu hỏi của bạn chưa rõ ràng.
__________________
TRUNG TÂM ĐÀO TẠO ĐIỆN TỬ VÀ TỰ ĐỘNG HOÁ MTC MTC khai giảng khóa mới http://blog.360.yahoo.com/blog-kHh38....lgCr0J4220m40 thay đổi nội dung bởi: namqn, 18-12-2006 lúc 11:42 PM. |
![]() |
![]() |
![]() |
#74 |
Đệ tử 2 túi
Tham gia ngày: Mar 2007
Bài gửi: 43
: |
minh khong dao duoctai lieu cacban goi cho monh duockhong minh cam on nhieu lam
binhdt04@yahoo.com |
![]() |
![]() |
![]() |
#75 |
Đệ tử 2 túi
Tham gia ngày: Mar 2007
Bài gửi: 45
: |
chương trình em viet đề điều khiển 4 led chớp tắt và dùng ngắt RB để kết hợp điều chỉnh tốc độ không biết tại sao chương trình không chạy rồi có khi chạy rút nguồn ra ghim lại thì chương trình không chay nhờ các anh chỉ giúp
chương trình em viet như sau: Code:
include "E:\ccs c\chuong_trinh_ccsc\banh_kem_duc_thanh\chuong_trinh.h" #int_RB RB_isr() { int8 y; disable_interrupts(INT_RB); disable_interrupts(GLOBAL); if ( input(PIN_B6) ) //tang gia tri trong o nho { y = read_eeprom(0x00); y = y + 20; write_eeprom (0x00,y); } if ( input(PIN_B7) ) //giam gia tri trong o nho { y = read_eeprom(0x00); y = y - 20; write_eeprom (0x00,y); } delay_ms(1000); enable_interrupts(GLOBAL); enable_interrupts(INT_RB); } //===========CAC CHUONG TRINH CON============== void tao_tre(int16 x); //============================================ void main() { int8 x=10,y; output_B(0x00); output_A(0x00); enable_interrupts(INT_RB); enable_interrupts(GLOBAL); while(1) { output_high(pin_B0); tao_tre(1); output_low(pin_B0); tao_tre(1); output_high(pin_B1); tao_tre(1); output_low(pin_B1); tao_tre(1); output_high(pin_B2); tao_tre(1); output_low(pin_B2); tao_tre(1); output_high(pin_B3); tao_tre(1); output_low(pin_B3); tao_tre(1); output_low(pin_B0); output_low(pin_B1); output_low(pin_B2); output_low(pin_B3); tao_tre(1); output_high(pin_B0); output_high(pin_B1); output_high(pin_B2); output_high(pin_B3); tao_tre(1); output_low(pin_B0); output_low(pin_B1); output_low(pin_B2); output_low(pin_B3); tao_tre(1); } } //============================================ void tao_tre(int16 x) { int16 z,i; z = x + read_eeprom (0x00); delay_ms(100); for(i=0;i<z;++i) delay_ms(2); } //=========================================== và file.h #include <16F84A.h> #FUSES NOWDT,NOPUT,PROTECT //No Watch Dog Timer #FUSES HS #use delay(clock=10000000)
__________________
Cổng trường Đại học cao vời vợi Đồng ruộng mênh mong đón em về! thay đổi nội dung bởi: falleaf, 28-05-2007 lúc 08:55 AM. |
![]() |
![]() |
![]() |
|
|