;****************************************************************************************** ; Program Name : 12F509 Sample Program ; Programer : ; Create date : 2009/06/20 ; History : ; Discription : ;****************************************************************************************** ; (1)Description ;****************************************************************************************** ; LIST P=PIC12F509,ST=OFF,R=DEC INCLUDE "P12F509.inc" __CONFIG _MCLRE_OFF & _CP_OFF & _WDT_OFF & _IntRC_OSC ; LP01 EQU 07H LPMOV01 EQU 08H LPMOV02 EQU 09H MOVDAT EQU 0AH LP1S1 EQU 0BH LP1S2 EQU 0CH ; ORG 0 GOTO START ; ; ********************************** ; 1.Initialize ; ********************************** START MOVLW B'000000' OPTION MOVLW B'111011' TRIS GPIO CLRF GPIO ; ; ********************************** ; 2.Main Program ; ********************************** MAIN ; (1)Move -60 MOVLW H'15' MOVWF MOVDAT CALL MOV01 CALL TIM1S ; (2)Move 0 MOVLW H'0F' MOVWF MOVDAT CALL MOV01 CALL TIM1S ; (3)Move 60 MOVLW H'09' MOVWF MOVDAT CALL MOV01 CALL TIM1S ; (4)Move 0 MOVLW H'0F' MOVWF MOVDAT CALL MOV01 CALL TIM1S GOTO MAIN ;****************************************************************************************** ; Function Name : MOV01 ; Title : Move ; Input : MOVDAT:(09[0x09] < 15[0x0F] < 21[0x15]) ; Output : ; Decription : 20mS * 100 => 2S ; Note : 0.9mS(-60) < 1.5mS(Center) < 2.1mS(60) Total:20mS ;****************************************************************************************** MOV01 MOVLW H'64' MOVWF LPMOV02 MOV01A1 ; (1)H-Plus BSF GPIO,2 ; ; MOVLW H'09' MOVFW MOVDAT MOVWF LPMOV01 MOV01A2 CALL TIM01 DECFSZ LPMOV01,F GOTO MOV01A2 ; (2)L-Plus BCF GPIO,2 ; MOVLW H'C8' MOVWF LPMOV01 MOVFW MOVDAT SUBWF LPMOV01,F ; MOVLW H'BE' MOVWF LPMOV01 MOV01A3 CALL TIM01 DECFSZ LPMOV01,F GOTO MOV01A3 ; DECFSZ LPMOV02,F GOTO MOV01A1 RETLW H'00' ;****************************************************************************************** ; Function Name : TIM1S ; Title : ; Input : ; Output : 10KHz(0.1mS)=100=>100Hz(0.01S)=100=>1Hz(1S) ;****************************************************************************************** TIM1S MOVLW H'64' MOVWF LP1S2 TIM1S2 MOVLW H'64' MOVWF LP1S1 TIM1S1 CALL TIM01 DECFSZ LP1S1,F GOTO TIM1S1 DECFSZ LP1S2,F GOTO TIM1S2 RETLW H'00' ;****************************************************************************************** ; Function Name : TIM01 ; Title : ; Input : ; Output : ; Description : 4MHz/4(1MHz)=100=>10KHz(0.1mS) ;****************************************************************************************** TIM01 MOVLW H'0A' MOVWF LP01 TIM01A NOP NOP NOP NOP NOP NOP NOP DECFSZ LP01,F GOTO TIM01A RETLW H'00' END