PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   Help!!! Xử lý ngắt bấm phím (http://www.picvietnam.com/forum/showthread.php?t=656)

Jerry 05-10-2006 03:54 PM

Help!!! Xử lý ngắt bấm phím
 
Em dùng PortB nối với phím bấm để tạo ngắt onchange. Nhưng em vẫn chưa hiểu cách quét phím bấm vì nghe nói còn phải có trễ bấm phím, trễ nhả phím...gì đó. Nói chung em chưa có kinh nghiệm. Mong bác Nam, bác Falleaf cùng các cao thủ Picbang chỉ giáo, viết cho em 1 đoạn chương trình mô tả việc này với ạ. Thanks các bác nhiều nhiều, vote các bác nghìn sao luôn nhé.

Jerry 05-10-2006 04:16 PM

Chương trình của em đây ạ, em viết chưa có đoạn xử lý trễ bấm phím, nhả phím :

Code:

#DEFINE      ScrButton      PortB,6
#DEFINE      ResetButton      PortB,7

    .....................
OnChange_INT:
        movf        PORTB,0                ;End mismatch
        bcf        INTCON,RBIF
        btfss        INTCON,RBIE
        goto        Exit_ISR

        btfss        ScrButton
        goto        Button
        btfss        ResetButton
        goto        Reset
        goto        Exit_ISR                      ; Thoat ngat

Reset:
        btfss        ScrButton_F
        goto        Exit_ISR
        bcf        ScrButton_F
        bsf        ModeSelect,1       
            ; do some other work       
        goto        Exit_ISR

Button:
        bsf        STATUS,RP0                ;
        bcf        OPTION_REG,T0CS        ;
        bsf        INTCON,T0IE                ;Activate and enable TMR0
        bsf        ScrButton_F
            ; do some other works
        goto        Exit_ISR


Nếu xử lý thêm trễ bấm phím, nhả phím thì phải viết như thế nào hả các bác??? Mong các bác nhanh tay kíu giúp em với!!!

Jerry 05-10-2006 04:18 PM

Úi giời, chẳng biết viết như thế nào cho nó dễ nhìn. Post code nhìn 1 cục thế kia rối hết cả mắt. Mod ơi, dạy em cách post code sao cho dễ nhìn với!!!

namqn 05-10-2006 07:11 PM

Trích:

Nguyên văn bởi Jerry (Post 5283)
Úi giời, chẳng biết viết như thế nào cho nó dễ nhìn. Post code nhìn 1 cục thế kia rối hết cả mắt. Mod ơi, dạy em cách post code sao cho dễ nhìn với!!!

Bạn chọn đoạn code cần định dạng, sau đó nhấn vào nút có hình dấu "#" (Wrap [CODE] tags around selected text), nút này ở phía bên phải thanh công cụ phía trên cửa sổ soạn thảo.

Thân,

Jerry 05-10-2006 08:21 PM

Ơ cái bác Nam này lười quá, không giúp em viết chương trình tí à. Hí hửng thấy bài reply tưởng được bác trả lời... Còn đại ca falleaf đâu mất tiêu roài???

falleaf 05-10-2006 10:50 PM

Câu hỏi của em chả hiểu là câu hỏi gì, nên không trả lời được. Em đặt câu hỏi cho rõ ràng, và tránh kiểu viết mập mờ lưng tưng.

Em nên đọc bài này
http://www.picvietnam.com/forum//showthread.php?t=530

Em xác định rõ những gì em muốn hỏi, những gì em muốn làm, thì mọi người mới giúp em được, bởi vì mọi người rất bận, nếu có đọc bài của em thì cũng chỉ đọc lướt qua để xem, nếu thấy không rõ ràng, sẽ không ai trả lời cho em đâu.

Chúc vui.

phamthaihoa 06-10-2006 12:48 AM

Trích:

Nguyên văn bởi Jerry (Post 5279)
Em dùng PortB nối với phím bấm để tạo ngắt onchange. Nhưng em vẫn chưa hiểu cách quét phím bấm vì nghe nói còn phải có trễ bấm phím, trễ nhả phím...gì đó. Nói chung em chưa có kinh nghiệm. Mong bác Nam, bác Falleaf cùng các cao thủ Picbang chỉ giáo, viết cho em 1 đoạn chương trình mô tả việc này với ạ. Thanks các bác nhiều nhiều, vote các bác nghìn sao luôn nhé.

Khi bấm phím, do kết cấu cơ khí không tốt sẽ tạo ra rất nhiều xung kim tại thời điểm bạn bấm, nếu bạn không xử lý thì nó sẽ vào ngắt rất nhiều lần. Điều này không chỉ xảy ra với việc bấm phím mà còn xảy ra khi nhả phím.

Cách khác phục thì có nhiều cách, nếu dùng phần cứng thì dùng một mạch RC đơn giản, còn dùng phần mềm thì cách đơn giản nhất là khi có phím bấm, tức là xảy ra ngắt onchange, bạn disable ngắt đó đi, sau đó relay khoảng 50-300ms để qua đoạn xung nhiễu, sau đó bạn đọc lại mức ở chân phím bấm, có thể đọc một vài lần cho chắc, nếu nó vẫn giữ nguyên giá trị thì bạn bắt đầu xử lý và tất nhiên phải enable ngắt để còn xử lý tiếp.

Code nguồn thì bạn phải tự thân vận động, không ai có thời gian mà ngồi viết cho bạn đâu.


Múi giờ GMT. Hiện tại là 08:48 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