[ create a new paste ] login | about

Link: http://codepad.org/5K8TFegy    [ raw code | fork ]

C, pasted on Apr 15:
#INCLUDE <p18f45k20.inc>
    CONFIG FOSC = INTIO67
    CONFIG WDTEN = OFF, LVP = OFF, MCLRE = OFF

    CBLOCK  000H
led_count:    1
switch_delay:  1
table_num:      1
CNT1:           1
CNT2:           1
count125:       1
    ENDC

    ORG 0
    GOTO    main
    ORG 08H
    GOTO    interrupt



interrupt
    BTFSS   INTCON,INT0IF
    RETFIE  FAST
    time_loop
        RCALL     loop125
        NOP
        DECFSZ  switch_delay
        BRA time_loop
    BCF     INTCON,INT0IF
    BTFSC   PORTB,RB0
    RETFIE  FAST
    RCALL   table
    NOP
    RETFIE  FAST

;**************************************************************
;**************************************************************
main
    CLRF    led_count
    MOVLW   01H
    MOVWF   switch_delay
    MOVWF   table_num
    MOVLW   125
    MOVWF   count125

;init I/O
    CLRF    TRISD
    BSF     TRISE,TRISE0
    BCF     INTCON2,RBPU
    BSF     WPUB,WPUB0

;set initial clock speed
    MOVF    table_num,W
    RCALL   table
    NOP

;init switch and turn on interrupts
    BCF     INTCON2,INTEDG0
    BCF     INTCON,INT0IF
    BSF     INTCON,INT0IE

    BCF     RCON,IPEN
    BSF     INTCON,PEIE
    BSF     INTCON,GIE

loop
    INCF    led_count,F
    MOVFF   led_count,LATD
    RCALL   TIM10M
    NOP
    BRA     loop
;*******************************************************************
;*******************************************************************

loop125
    DECFSZ  count125
    BRA     loop125
    MOVLW   125
    MOVWF   count125
    RETURN



; 100usec?????????
TIM100
	MOVLW	0C7H		;??199??
	MOVWF	CNT1		;???????
LOOP1
	NOP			;???NOP
	NOP			;(2+3)*199-1=994 cycle
	DECFSZ	CNT1,F		;??????
	BRA	LOOP1		;????
	RETURN			;2+994+2=998 cycle
;*********
; 10msec?????????
TIM10M
	MOVLW	064H		;??100??
	MOVWF	CNT2		;???????
LOOP2
	CALL	TIM100		;100usec????
	DECFSZ	CNT2,F 		;??????
	BRA	LOOP2		;????
	RETURN			;??????




table
    ADDWF   table_num,W
    ADDWF   PCL,F
    NOP
    GOTO    C_250kHz
    GOTO    C_4MHz
    GOTO    C_64MHz

C_250kHz
    MOVLW   10H
    MOVWF   OSCCON
    BCF     OSCTUNE,PLLEN
    MOVLW   02H
    MOVWF   table_num
    MOVLW   01H
    MOVWF   switch_delay
    RETURN

C_4MHz
    MOVLW   50H
    MOVWF   OSCCON
    BCF     OSCTUNE,PLLEN
    MOVLW   03H
    MOVWF   table_num
    MOVLW   16H
    MOVWF   switch_delay
    RETURN

C_64MHz
    MOVLW   70H
    MOVWF   OSCCON
    BSF     OSCTUNE,PLLEN
    MOVLW   01H
    MOVWF   table_num
    MOVLW   255
    MOVWF   switch_delay
    RETURN

END


Create a new paste based on this one


Comments: