; *** COMPILED WITH BAS2PIC VERSION 0.30 *** ; ' Test Program for BAS2PIC compiler 0.30 ; ' Use with Microchip PICkit1 and a PIC12f675 ; ' Shows how to control the HC4LED display module list p=12f675 ;DEVICE 12f675 #include errorlevel -302 ;Ignore BANK warnings __INTW EQU 0x20 __INTSTATUS EQU 0x21 __TEMP EQU 0x22 ; ' FOLLOWING LINE IS FOR DEVICE CONFIGURATION SEE DEVICE DOCUMENATION __CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _INTRC_OSC_NOCLKOUT & _MCLRE_OFF & _CPD_OFF ORG 0x00 ;PROGRAM START NOP ;REQUIRED FOR DEBUGGER GOTO START ORG 0x04 ;INTERRUPT VECTOR GOTO __INTERRUPT ; ' Define Pins #DEFINE Clk GPIO,5 ;DIM Clk AT GPIO.5 #DEFINE Dat GPIO,4 ;DIM Dat AT GPIO.4 ; ' Define Variables cnt EQU D'35' ;DIM cnt AS BYTE segments EQU D'36' ;DIM segments AS BYTE #DEFINE segmentsMSB segments,7 ;DIM segmentsMSB AT segments.7 START: BCF STATUS,RP0 ; BANK 0 CLRF GPIO ; GPIO=%00000000 'All output off MOVLW B'00000111' ; CMCON=%00000111 'No comparitors MOVWF CMCON BSF STATUS,RP0 ; BANK 1 ' SET REGS IN BANK 1 MOVLW B'11111111' ; TRISIO=%11111111 'All pins inputs MOVWF TRISIO CLRF VRCON ; VRCON=0 ' VRef Off MOVLW B'00010001' ; ANSEL=%00010001 ' Analog Select MOVWF ANSEL BCF STATUS,RP0 ; BANK 0 MOVLW B'00000001' ; ADCON0=%00000001 ' Analog Configure MOVWF ADCON0 MOVLW B'11001111' ; TRISIO = %11001111 ' Make Clk & Dat outputs BSF STATUS,RP0 MOVWF TRISIO BCF STATUS,RP0 BSF Clk ; HIGH Clk AGAIN: MOVLW D'71' ; segments = 71 MOVWF segments CALL SendSegments ; GOSUB SendSegments MOVLW D'15' ; segments = 15 MOVWF segments CALL SendSegments ; GOSUB SendSegments MOVLW D'109' ; segments = 109 MOVWF segments CALL SendSegments ; GOSUB SendSegments MOVLW D'28' ; segments = 28 MOVWF segments CALL SendSegments ; GOSUB SendSegments CLRF __TEMP ; 255+1=0 ; DELAY 255,255 MOVLW D'0' ; 255+1=0 ADDLW 0xFF BTFSS STATUS,Z GOTO $-2 DECFSZ __TEMP,F GOTO $-4 ; ' Clear display CALL SendSegments ; GOSUB SendSegments CALL SendSegments ; GOSUB SendSegments CALL SendSegments ; GOSUB SendSegments CALL SendSegments ; GOSUB SendSegments CLRF __TEMP ; 255+1=0 ; DELAY 255,255 MOVLW D'0' ; 255+1=0 ADDLW 0xFF BTFSS STATUS,Z GOTO $-2 DECFSZ __TEMP,F GOTO $-4 GOTO AGAIN ; GOTO AGAIN SendSegments: MOVLW D'1' ; FOR cnt=1 TO 8 MOVWF cnt __FOR_cnt_1: BCF Dat ; LOW Dat BTFSS segmentsMSB ; IF segmentsMSB = 0 THEN DatSet GOTO DatSet BSF Dat ; HIGH Dat DatSet: BCF Clk ; LOW Clk MOVLW D'10'+D'1' ; DELAY 10 ADDLW 0xFF BTFSS STATUS,Z GOTO $-2 BSF Clk ; HIGH Clk MOVLW D'10'+D'1' ; DELAY 10 ADDLW 0xFF BTFSS STATUS,Z GOTO $-2 BCF STATUS,C ; segments = segments << 1 RLF segments,F MOVLW D'8' ; NEXT cnt SUBWF cnt,W BTFSC STATUS,Z GOTO $+3 INCF cnt,F GOTO __FOR_cnt_1 RETURN ; RETURN SLEEP ;END GOTO $ __INTERRUPT: ;DEFAULT INTERRUPT CODE RETURN ;RETURN WITHOUT ENABLING FURTHER INTERRUPTS END