|
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 |
|
11-09-2007, 03:45 PM | #1 |
Đệ tử 6 túi
Tham gia ngày: Jun 2005
Bài gửi: 141
: |
Có một vấn để về cái nút bấm đó là hiện tượng rung phím. Cái này ai hiểu rồi ko nói làm gì , còn bạn nào chưa hiểu thì phải biết. Khi bạn ấn một nút bấm thì các lá đồng tiếp xúc trong phím bấm nó không dính vào nhau ngay lập tức mà nó bật đi bật lại vài lần mới tiếp xúc hẳn (do tính đàn hồi của vật liệu đồng lò xo). Khoảng thời gian lập bập này tuy ngắn nhưng so với tốc độ xử lý của PIC thì còn phải chạy dài. Với chương trình trứoc thì hiện tượng rung phím này không ảnh hưởng gì, nhưng với bài toán như: Bấm phím 1 Led 1 sáng, bấm phát nữa nó tắt thì sẽ có vấn đề. Nhiều khi bạn bấm 1 cái nó vẫn tắt là bởi vì phím bấm nó rung nên thực ra là pic nó tưởng bạn bấm nhiều lần nên lúc sáng lúc tắt kết quả là tắt. Để xử lý vấn đề này thì ta cho chương trình khi phát hiện có bấm nút thì trễ đi một khoảng thoài gian dài hơn hiện tượng rung phím là ok. Khi bấm nút RB1 PIC tạo trễ 1 khoảng thời gian 50ms sau đó kiểm tra xem RB1 còn được bấm không? nếu còn thì cho sáng LED.
thay đổi nội dung bởi: tinhthanthep, 11-09-2007 lúc 04:01 PM. |
11-09-2007, 03:59 PM | #2 |
Đệ tử 6 túi
Tham gia ngày: Jun 2005
Bài gửi: 141
: |
Vậy ta làm nốt bài toán sau là xong hẳn về cái nút bấm: Bài toán là ta bấm phím RB1 thì LEd1 sáng, bấm phát nữa thì nó tắt....Chương trìng như sau:
Code:
void MAIN() { PORTB = 0; // Xoá dữ liệu cổng B TRISB = 0xFF; // Định nghĩa cổng B là input PORTE = 0; TRISE = 0; ADCON1 = 0xE; Loop: if (PORTB.F1 == 0) { // Kiểm tra nút ấn RB1 có bấm không? Nếu bấm thì if (PORTE.F0 == 0) PORTE.F0 = 1 // kiểm tra xem đèn đang tắt không? nếu đúng thì bật lên else PORTE.F0 = 0; // nếu sai thì tắt nó đi Delay_ms(50); // Tạo trễ 50ms để khử hết hiện tượng rung phím Loop1: if (PORTB.F1 == 0) goto Loop1; // chạy lòng vòng đợi đến khi tay người nhá hẳn nút bấm ra } goto Loop; // Lặp lại vòng lặp kiểm tra nút bấm } thay đổi nội dung bởi: namqn, 19-09-2007 lúc 02:47 AM. Lý do: định dạng lại code |
|
|