RB4: RB7

K

kim loại

Guest
Xin chào Guys

Tôi muốn sử dụng ngắt-on-thay đổi tính năng của PortB.pullups PortB sẽ được tất cả các kích hoạt, chuyển đổi một được kết nối với mỗi RB4: RB7.Bây giờ vấn đề, làm thế nào tôi có thể diffrentiate mà chuyển đổi đã được ép, bất kỳ ý tưởng tuyệt vời xin vui lòng, tôi đang sử dụng PICBasic Pro.

RB0 ngắt như điện đồng bộ cho các triacs
RB4 là on / off chuyển đổi.
RB5 như chọn chuyển đổi tốc độ.
RB6 như hẹn giờ khoảng chọn.
RB7 làm "Ngày tâm trí của tôi chỉ".

Làm thế nào tôi có thể làm cho bộ đếm thời gian trên cũng tương tự PIC, nó là một ý tưởng tốt để sử dụng tràn Timer1 bị gián đoạn.Cảm ơn

 
Bạn có thể lưu trữ các portb trong một hữu hiệu đối, sau đó khi bắt đầu ISR, chỉ cần so sánh các tiểu bang cũ m² đối với những người mới và bạn sẽ biết thay đổi pin mà.Tôi không thể giúp bạn trong timer1 vì tôi không bao giờ sử dụng pic cơ bản.

 
Chào

Nó làm việc nếu tôi sử dụng bốn IF báo cáo để so sánh các giá trị của RB4: RB7 và chi nhánh để một thói quen cụ thể.

 
Chào

Tại sao chọn trường hợp là tốt hơn so với đa IF báo cáo??

Tôi đã tự hỏi, nếu các-inerrupt về biến đổi-bật, và giá trị nhập vào RB4: RB7 đang thay đổi, Ví dụ như kéo-up được kích hoạt, vì vậy khi bắt đầu làm việc đã PIC những người thân của mình trên PortB, và chuyển mạch kết nối xuống đất, nếu tôi đẩy Up trên RB4, do đó, chuyển đổi kết nối RB4 xuống đất, và tôi loại bỏ ngón tay của tôi vì vậy giá trị trả về để một cuz của kéo-up, hiện giá trị latched trên RB4 trở thành số không thay vì một.Những gì hiện vi mạch có nghĩa là bằng cách nói gián đoạn các-on-thay đổi có thể được kết thúc khi PortB được đọc??

Tôi thực sự không thể hiểu những gì thực sự xảy ra ở đây, trong ngày, thay đổi, gián đoạn, có thể nào xin vui lòng giải thích nó thotoughly.

Thanx

 
Bạn phải đọc PortB trước khi đầu vào là latched.Các đầu vào latched được so sánh với các đầu vào thực tế và không phù hợp bất kỳ nguyên nhân một ngắt về biến đổi.

Thật không may, một bcf hoặc BSF cho bất kỳ pin trên PortB sẽ đọc PortB sau đó thiết lập hoặc xóa pin.Nói chung, nếu tôi làm bất cứ điều gì với PortB trong khi sử dụng gián đoạn về sự thay đổi, tôi kiểm tra tình trạng của Cảng và so sánh nó với một đăng ký có chứa các giá trị mới "" và chăm sóc những thay đổi bằng tay.Nếu không, những gián đoạn sẽ làm điều đó.

Trong ví dụ của bạn, bạn sẽ có một gián đoạn khi bạn nhấn RB4.Thông thường, các bước trong việc thường xuyên gián đoạn là: (1) Tìm hiểu PortB (điều này chốt giá trị), (2) Hãy phân biệt chân của bạn bằng cách so sánh với một oldPortB "" đăng ký, (3) lưu trữ "oldPortB", (4) rõ ràng RBIF flag.Vì vậy, bây giờ RB4 là latched không và oldPortB, 4 là số không.Sau đó, bạn sẽ có một ngắt khi bạn phát hành chuyển đổi cũng có.

Tôi không sử dụng PicBasic và không biết tại sao "trường hợp" là tốt hơn.Tôi tưởng tượng trình biên dịch tạo ra hiệu quả hơn bằng cách sử dụng mã "trường hợp".

 
Chào

Cảm ơn đã trả lời tốt đẹp, liên quan đến việc chuyển đổi debouncing, là nó có thể là lúc tức thời sự tôi đọc PortB khác đăng ký như bạn nói, trong khi chuyển đổi được nhấn, mà nó nảy và một số không được đọc.

Tôi nghĩ rằng tôi sẽ từ bỏ ý tưởng sử dụng ngắt-on-thay đổi và sử dụng nút lệnh.

Bạn có nhớ tốt jonw0224, cảm ơn bạn.

 

Welcome to EDABoard.com

Sponsor

Back
Top