mrbin611
29-08-2011, 06:58 PM
em đang làm 1 cái đề tài là ON/OFF cho đèn dùng PIC 16f877a.
Đề tài như sau :
nếu nút gạt ở vị trí RB1 thì đèn hoạt động.
......................... RB2 ............... dừng
..........................RB3 ............... hoạt động nhưng khi từ vị trí RB3 về RB2 thì đèn sẽ tắt sau khoảng thời gian là 3 phút.
Nếu khi đèn hoạt động mà RB0 đc tác động thì đèn sẽ tắt.
có lẽ do code em viết sai nên khi RB3 về RB2 thì đèn tắt ngay không chờ sau 3' mới tắt . :(
đây là đoạn chương trỉnh em viết :
PROCESSOR 16F877A
#INCLUDE <P16F877A.INC>
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF
DEM EQU 20H
DEM1 EQU 21H
ORG 0000H
BCF STATUS,6
BCF STATUS,5
CLRF PORTB
CLRF PORTD
BSF STATUS,5
CLRF TRISD
CLRF TRISB
BSF TRISB,0
BCF TRISD,0
BSF TRISB,1
BSF TRISB,2
BSF TRISB,3
BCF STATUS,5
MAIN
CLRF DEM
CALL KT
BTFSS PORTB,2
GOTO OFF
GOTO KT1
KT
BTFSS PORTB,0
GOTO OFF
RETURN
KT1
BTFSS PORTB,1
GOTO ON1
GOTO KT2
KT2
BTFSS PORTB,3
GOTO ON
GOTO MAIN
ON
BTFSS PORTB,3
GOTO ON1
GOTO OFF_DELAY
ON1
BSF PORTD,0
GOTO MAIN
OFF
BCF PORTD,0
GOTO MAIN
OFF_DELAY
CALL LOOP
GOTO OFF
LOOP
CALL DELAY
INCF DEM,1
MOVLW D'180'
XORWF DEM,0
BTFSS STATUS,2
GOTO LOOP
RETURN
DELAY
BCF OPTION_REG,3
BSF OPTION_REG,2
BCF OPTION_REG,1
BCF OPTION_REG,0
MOVWF DEM1
BATDAU
MOVLW D'5'
MOVWF TMR0
BCF OPTION_REG,5
LOOP1
BTFSS INTCON,2
GOTO LOOP1
BCF INTCON,2
DECFSZ DEM1,1
GOTO BATDAU
RETURN
END
Đề tài như sau :
nếu nút gạt ở vị trí RB1 thì đèn hoạt động.
......................... RB2 ............... dừng
..........................RB3 ............... hoạt động nhưng khi từ vị trí RB3 về RB2 thì đèn sẽ tắt sau khoảng thời gian là 3 phút.
Nếu khi đèn hoạt động mà RB0 đc tác động thì đèn sẽ tắt.
có lẽ do code em viết sai nên khi RB3 về RB2 thì đèn tắt ngay không chờ sau 3' mới tắt . :(
đây là đoạn chương trỉnh em viết :
PROCESSOR 16F877A
#INCLUDE <P16F877A.INC>
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF
DEM EQU 20H
DEM1 EQU 21H
ORG 0000H
BCF STATUS,6
BCF STATUS,5
CLRF PORTB
CLRF PORTD
BSF STATUS,5
CLRF TRISD
CLRF TRISB
BSF TRISB,0
BCF TRISD,0
BSF TRISB,1
BSF TRISB,2
BSF TRISB,3
BCF STATUS,5
MAIN
CLRF DEM
CALL KT
BTFSS PORTB,2
GOTO OFF
GOTO KT1
KT
BTFSS PORTB,0
GOTO OFF
RETURN
KT1
BTFSS PORTB,1
GOTO ON1
GOTO KT2
KT2
BTFSS PORTB,3
GOTO ON
GOTO MAIN
ON
BTFSS PORTB,3
GOTO ON1
GOTO OFF_DELAY
ON1
BSF PORTD,0
GOTO MAIN
OFF
BCF PORTD,0
GOTO MAIN
OFF_DELAY
CALL LOOP
GOTO OFF
LOOP
CALL DELAY
INCF DEM,1
MOVLW D'180'
XORWF DEM,0
BTFSS STATUS,2
GOTO LOOP
RETURN
DELAY
BCF OPTION_REG,3
BSF OPTION_REG,2
BCF OPTION_REG,1
BCF OPTION_REG,0
MOVWF DEM1
BATDAU
MOVLW D'5'
MOVWF TMR0
BCF OPTION_REG,5
LOOP1
BTFSS INTCON,2
GOTO LOOP1
BCF INTCON,2
DECFSZ DEM1,1
GOTO BATDAU
RETURN
END