;****************************************************************************************** ; PIC16F84 Sample Program : ; Project : ; Program Name : ; Programer : ; Create date : Version 1.0 H27.02.15 ; History : ; Laungage : MPLAB MPASM ; ;****************************************************************************************** ; Description ; OSC : External OSC 10MHz ;****************************************************************************************** LIST P=PIC16F84,ST=OFF,R=DEC INCLUDE "P16F84.inc" __CONFIG _HS_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF ; ; Define GENERAL PURPOSE RAM AREA (68 bytes maximum) 0Ch-4fh ; TMP_G EQU 0CH TMP_LED EQU 0DH TMP_CNT1 EQU 0EH TMP_CNT2 EQU 0FH TMP_CNT3 EQU 10H ; ; Define Macro ; BANK0 MACRO BCF STATUS,RP0 BCF STATUS,RP1 ENDM BANK1 MACRO BSF STATUS,RP0 BCF STATUS,RP1 ENDM ; ; Program Start ; ORG 0h GOTO START ORG 4h GOTO START START ; ***************************** ; 1.Initialized ; ***************************** ; (1)Define I/O port BANK1 MOVLW B'11111111' MOVWF TRISA MOVLW B'00000000' MOVWF TRISB ; (2)Initialized the variable BANK0 MOVLW B'00000001' MOVWF TMP_LED ; ***************************** ; 2.Program main ; ***************************** ; Main loop MAIN ; (1)Puts the value to the port BANK0 MOVFW TMP_LED MOVWF PORTB ; (2)Move the flashing LED MOVFW TMP_LED XORLW B'10000000' BTFSC STATUS,Z GOTO MAIN_A RLF TMP_LED,F BCF TMP_LED,0 GOTO MAIN_1 MAIN_A MOVLW B'00000001' MOVWF TMP_LED MAIN_1 ; (3)Wait for 1 millisecond CALL WAIT_TM GOTO MAIN ;****************************************************************************************** ; Program : WAIT_TM ; Title : Wait for 1 second ; Input : ; Output : ;****************************************************************************************** WAIT_TM BANK0 MOVLW H'64' ; 100Hz/100 ==> 1Hz MOVWF TMP_CNT1 WAIT_TM1 MOVLW H'64' ; 10KHz/100 ==> 100Hz MOVWF TMP_CNT2 WAIT_TM2 MOVLW H'19' ; 10MHz/4(PIC)/250 ==> 10KHz MOVWF TMP_CNT3 WAIT_TM3 NOP NOP NOP NOP NOP NOP NOP NOP DECFSZ TMP_CNT3,F GOTO WAIT_TM3 DECFSZ TMP_CNT2,F GOTO WAIT_TM2 DECFSZ TMP_CNT1,F GOTO WAIT_TM1 RETURN END