![]() |
|
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 |
Nhập môn đệ tử
Tham gia ngày: Oct 2005
Bài gửi: 5
: |
![]() các bác cho em hỏi tý:
Code:
; Bài toán yêu cầu :nhấn 2 lần nút button(nối tại RA0) led nối với RB0 ; sẽ sáng(mạch dùng luôn của bác Chính vậy chỉ khác có cái button ; nối với VCC qua RA0 xuống đất) ; chương trình sẵn: ; Project: Two pushes to turn on a LED Processor 16F84a include <p16F84a.inc> __CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _RC_OSC ORG 0 ;This is the start of memory for the program. SetUp BSF 03,5 ;Go to Bank 1 CLRF 06 ;Make all port B output MOVLW 01 ;Load W with 0000 0001 MOVWF 05 ;Make RA0 input BCF 03,5 ;Go to Bank 0 - the program memory area. CLRF 1F ;Clear the button file CLRF 06 ;Blank the output GOTO Main Delay NOP ;Create approx 250mS delay DECFSZ 1A,1 GOTO Delay DECFSZ 1B,1 GOTO Delay RETURN Delay2 NOP ;Create 1mS debounce delay DECFSZ 1A,1 GOTO Delay2 RETURN Sw BTFSS 05,0 ;Test the push button GOTO Sw3 ;Button not pressed BTFSC 1F,2 ;Test end-of-flash flag RETURN BTFSC 1F,0 ;First pass? RETLW 00 ;No BTFSS 1F,1 ;Test first-press flag GOTO Sw2 ;First press BSF 06,0 ;Button has been pressed twice. Illuminate LED CALL Delay ;Keep LED on CALL Delay ;Keep LED on BCF 1F,1 ;Clear second-push flag bit BSF 1F,2 ;Set end-of-flash flag BCF 06,0 ;Turn LED off RETURN Sw2 BSF 1F,1 ;Set the first-press flag BSF 1F,0 ;Set button pass flag bit RETURN Sw3 BCF 1F,0 ;Clear button pass flag bit BCF 1F,2 ;Clear end-of-flash flag RETURN Main CALL Sw CALL Delay2 ;Debounce switch GOTO Main END ;Tells assembler end of program 1.Các file 1A,1B mặc định bao nhiêu mà tạo được các thời gian trễ như trên 2.File 1F với các bit hoạt động ra sao 3.Chương trình này hoạt động thế nào :em chư hiểu giải thuật ,tại sao nhấn nút button lần 1 led chưa sáng,lần 2 led mới sáng Chỗ này: Code:
Sw BTFSS 05,0 ;Test the push button GOTO Sw3 ;Button not pressed BTFSC 1F,2 ;Test end-of-flash flag RETURN BTFSC 1F,0 ;First pass? RETLW 00 ;No BTFSS 1F,1 ;Test first-press flag GOTO Sw2 ;First press BSF 06,0 ;Button has been pressed twice. Illuminate LED CALL Delay ;Keep LED on CALL Delay ;Keep LED on BCF 1F,1 ;Clear second-push flag bit BSF 1F,2 ;Set end-of-flash flag BCF 06,0 ;Turn LED off RETURN Sw2 BSF 1F,1 ;Set the first-press flag BSF 1F,0 ;Set button pass flag bit RETURN Vậy thì sau khi nó trở về từ Sw2 sẽ BSF 06,0 ;Button has been pressed twice. Illuminate LED. Em hiếu sai ở đâu ,mong anh Chính và mọi người trả lời hộ(Giait thích kĩ hộ em sử dụng các file 1A,1B,nhất là 1F) Em cảm ơn nhiều thay đổi nội dung bởi: ntc, 03-04-2006 lúc 12:55 PM. Lý do: SỬA LẠI CÁCH VIẾT CODE |
![]() |
|
|
![]() |
||||
Ðề tài | Người gửi | Chuyên mục | Trả lời | Bài mới |
TUT về USART trong PIC16F877A | mafd_47a | MPASM | 16 | 19-02-2025 05:32 AM |
TUT ve I2C ( pic16f877a ) | mafd_47a | MPASM | 28 | 28-01-2025 10:45 PM |
Lập nhóm PIC16F877A | nhh | Cơ bản về vi điều khiển và PIC | 285 | 08-03-2017 11:08 PM |
Bộ so sánh và PWM cho PIC16F877A | anhquangngai | Cơ bản về vi điều khiển và PIC | 24 | 08-09-2012 09:00 AM |
CCS C for PIC16F877A | nhh | Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) | 405 | 24-04-2008 12:00 PM |