honhutminh
04-12-2008, 11:15 AM
PROCESSOR P16F877A
#INCLUDE <P16F877A.INC>
__CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC &_LVP_OFF
CBLOCK 0X000
COUNT1
COUNT2
COUNT3
DV1
DV2
CH1
CH2
DONVI1
DONVI2
CHUC1
CHUC2
ORG 0X020
BCF STATUS,RP1
BSF STATUS,RP0
CLRF TRISB
CLRF TRISC
CLRF TRISD
BCF STATUS,RP0
MAIN MOVLW 0X021
MOVWF PORTD
CALL XANH1
GOTO MAIN
XANH1 MOVLW 0X05
MOVWF DV1
MOVLW 0X02
MOVWF CH1
MOVLW 0X00
MOVWF DV2
MOVLW 0X02
MOVWF CH2
LB CALL GM
CALL HTHI
DECF DV1,1
MOVF DV1,0
XORLW D'127'
BTFSS STATUS,Z
GOTO LB1
DECF CH1,1
GOTO LB1
LB1 DECF DV2,1
MOVF DV2,0
XORLW D'127'
BTFSS STATUS,Z
GOTO LB
DECF CH2,1
MOVF CH2,0
XORLW D'127'
BTFSS STATUS,Z
GOTO LB
RETURN
GM MOVF DV1,0
CALL TABLE
MOVWF DONVI1
MOVF DV2,0
CALL TABLE
MOVWF DONVI2
MOVF CH1,0
CALL TABLE
MOVWF CHUC1
MOVF CH2,0
CALL TABLE
MOVWF CHUC2
RETURN
HTHI MOVLW 0X04
MOVWF COUNT1
HTHI1 MOVLW 0X0100
MOVWF COUNT2
HTHI2 MOVF DONVI1,0
MOVWF PORTB
MOVLW 0X07F
MOVWF PORTC
CALL DELAY
MOVF DONVI2,0
MOVWF PORTB
MOVLW 0X0DF
MOVWF PORTC
CALL DELAY
MOVF CHUC1,0
MOVWF PORTB
MOVLW 0X0BF
MOVWF PORTC
CALL DELAY
MOVF CHUC2,0
MOVWF PORTB
MOVLW 0X0EF
MOVWF PORTC
CALL DELAY
DECFSZ COUNT2
GOTO HTHI2
DECFSZ COUNT1
GOTO HTHI1
RETURN
DELAY MOVLW 0X0FF
MOVWF COUNT3
DELAY1 DECFSZ COUNT3
GOTO DELAY1
RETURN
TABLE ADDWF PCL,1
DT 0XFC,0X0C,0XB6,0X9E,0X4E,0XDA,0XFA,0X8C,0XFE,0XDE
END
Cách đếm từ 25 về 0???
#INCLUDE <P16F877A.INC>
__CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC &_LVP_OFF
CBLOCK 0X000
COUNT1
COUNT2
COUNT3
DV1
DV2
CH1
CH2
DONVI1
DONVI2
CHUC1
CHUC2
ORG 0X020
BCF STATUS,RP1
BSF STATUS,RP0
CLRF TRISB
CLRF TRISC
CLRF TRISD
BCF STATUS,RP0
MAIN MOVLW 0X021
MOVWF PORTD
CALL XANH1
GOTO MAIN
XANH1 MOVLW 0X05
MOVWF DV1
MOVLW 0X02
MOVWF CH1
MOVLW 0X00
MOVWF DV2
MOVLW 0X02
MOVWF CH2
LB CALL GM
CALL HTHI
DECF DV1,1
MOVF DV1,0
XORLW D'127'
BTFSS STATUS,Z
GOTO LB1
DECF CH1,1
GOTO LB1
LB1 DECF DV2,1
MOVF DV2,0
XORLW D'127'
BTFSS STATUS,Z
GOTO LB
DECF CH2,1
MOVF CH2,0
XORLW D'127'
BTFSS STATUS,Z
GOTO LB
RETURN
GM MOVF DV1,0
CALL TABLE
MOVWF DONVI1
MOVF DV2,0
CALL TABLE
MOVWF DONVI2
MOVF CH1,0
CALL TABLE
MOVWF CHUC1
MOVF CH2,0
CALL TABLE
MOVWF CHUC2
RETURN
HTHI MOVLW 0X04
MOVWF COUNT1
HTHI1 MOVLW 0X0100
MOVWF COUNT2
HTHI2 MOVF DONVI1,0
MOVWF PORTB
MOVLW 0X07F
MOVWF PORTC
CALL DELAY
MOVF DONVI2,0
MOVWF PORTB
MOVLW 0X0DF
MOVWF PORTC
CALL DELAY
MOVF CHUC1,0
MOVWF PORTB
MOVLW 0X0BF
MOVWF PORTC
CALL DELAY
MOVF CHUC2,0
MOVWF PORTB
MOVLW 0X0EF
MOVWF PORTC
CALL DELAY
DECFSZ COUNT2
GOTO HTHI2
DECFSZ COUNT1
GOTO HTHI1
RETURN
DELAY MOVLW 0X0FF
MOVWF COUNT3
DELAY1 DECFSZ COUNT3
GOTO DELAY1
RETURN
TABLE ADDWF PCL,1
DT 0XFC,0X0C,0XB6,0X9E,0X4E,0XDA,0XFA,0X8C,0XFE,0XDE
END
Cách đếm từ 25 về 0???