;****************************************************************************************** ; PIC10F322 Sample Program ; Project : ; Program Name : ; Programer : ; Create date : Version 1.0 H24.05.20 ; Replace date : ; History : ; Laungage : MPLAB MPASM ;****************************************************************************************** ; Description ; ;****************************************************************************************** LIST P=PIC10F322 INCLUDE "P10F322.inc" __CONFIG _FOSC_INTOSC & _BOREN_OFF & _WDTE_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _LVP_OFF & _LPBOR_OFF & _BORV_HI & _WRT_OFF ; ; Define Macro ; SELBNK0 MACRO BCF STATUS,RP0 BCF STATUS,RP1 ENDM ; ; Define General Purpose Registers (64 bytes maximum ; 40h-7fh) ; Bank 0 Only ; LP0 EQU 40H LP1 EQU 41H LP2 EQU 42H CNTER EQU 43H LPCNT EQU 44H LPM0 EQU 45H ORG 0 GOTO START ORG 4 GOTO START ; ********************************** ; 1.Initialized Segment ; ********************************** START ; (1)Select Bank 0 SELBNK0 ; (2)Define OSC (Internal OSC 16MHz) MOVLW B'01110000' MOVWF OSCCON ; (3)Define CLKRCON (Clock output disable) BCF CLKRCON,CLKROE ; (4)Define ANSELA Register (All Degital port) CLRF ANSELA ; (5)Define WPUA Register (All Pull-UP disable) CLRF WPUA ; (6)Define I/O interrupt (All interrupt disable) CLRF IOCAP CLRF IOCAN CLRF IOCAF ; (7)Define PORTA Register MOVLW B'00001000' MOVWF TRISA CLRF PORTA CLRF LATA ; ********************************** ; 2.Main Program ; ********************************** CLRF CNTER CLRF LPCNT MAIN ; (1)Check Push Switch CALL UP2CNT BTFSS PORTA,3 GOTO MAIN ; (2)Start Program ; 2-1)Sub loop MOVLW H'14' MOVWF LPM0 MAIN1 CALL DSPLED CALL UPCNT CALL WAIT01 DECFSZ LPM0,F GOTO MAIN1 ; 2-2)Main loop MOVFW LPCNT MOVWF LPM0 MAIN2 CALL DSPLED CALL UPCNT CALL WAIT01 DECFSZ LPM0,F GOTO MAIN2 ; CLRF LPCNT ; GOTO MAIN ;******************************************************************************************* ; Function Name : DSPLED     ; Function : ; Input : ; Output : ; Description : ;******************************************************************************************* DSPLED MOVFW CNTER XORLW H'00' BTFSC STATUS,Z GOTO DSPLED0 MOVFW CNTER XORLW H'01' BTFSC STATUS,Z GOTO DSPLED1 MOVLW H'04' MOVWF PORTA RETLW H'00' DSPLED0 MOVLW H'01' MOVWF PORTA RETLW H'00' DSPLED1 MOVLW H'02' MOVWF PORTA RETLW H'00' ;******************************************************************************************* ; Function Name : LP2CNT     ; Function : UP Counter (0-FF) ; Input : LPCNT ; Output : LPCNT ; Description : ;******************************************************************************************* UP2CNT MOVFW LPCNT XORLW H'0C' BTFSC STATUS,Z GOTO UP2CNT1 MOVLW H'01' ADDWF LPCNT,F RETLW H'00' UP2CNT1 MOVLW H'00' MOVWF LPCNT RETLW H'00' ;******************************************************************************************* ; Function Name : UPCNT     ; Function : UP Counter (0-2) ; Input : CNTER ; Output : CNTER ; Description : ;******************************************************************************************* UPCNT MOVFW CNTER XORLW H'02' BTFSC STATUS,Z GOTO UPCNT1 MOVLW H'01' ADDWF CNTER,F RETLW H'00' UPCNT1 MOVLW H'00' MOVWF CNTER RETLW H'00' ;******************************************************************************************* ; Function Name : WAIT01     ; Function : About 0.1 Second ; Input : ; Output : ; Description : Internal OSC 16MHz ;******************************************************************************************* WAIT01 MOVLW H'28' MOVWF LP2 WAIT01C MOVLW H'64' MOVWF LP1 WAIT01B MOVLW H'64' MOVWF LP0 WAIT01A NOP NOP NOP NOP NOP NOP NOP DECFSZ LP0,F GOTO WAIT01A DECFSZ LP1,F GOTO WAIT01B ; DECFSZ LP2,F ; GOTO WAIT01C ; RETLW H'00' END