;****************************************************************************************** ; PIC12F1822 Sample Program ; Project : ; Program Name : ; Programer : ; Create date : Version 1.0 H24.07.01 ; History : ; Laungage : MPLAB MPASM Version 8.85 ;****************************************************************************************** ; (1)Description ; Oscillator : External Crystal Oscillator 8MHz ; I/O Port : PORTA(0) : Mode Switch 0 ; PORTA(1) : Mode Switch 1 ; PORTA(2) : Output ; PORTA(3) : No connection ; PORTA(4) : External Crystal 8MHz ; PORTA(5) : External Crystal 8MHz ;****************************************************************************************** LIST P=PIC12F1822,ST=OFF,R=DEC INCLUDE "P12F1822.inc" __CONFIG _CONFIG1 , _FOSC_HS & _WDTE_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOREN_OFF & _CLKOUTEN_OFF & _IESO_OFF & _FCMEN_OFF __CONFIG _CONFIG2 , _WRT_OFF & _PLLEN_ON & _STVREN_OFF & _BORV_19 & _LVP_OFF ; ; Define GENERAL PURPOSE RAM AREA (80 bytes maximum) ; WAT1M1 EQU 20H ; ; Define Common RAM AREA (16 bytes) ; TMP_C EQU 70H ; Define Macro SELBANK MACRO #BANK_NO MOVLW #BANK_NO MOVWF BSR ENDM MNOP100 MACRO MNOP10 MNOP10 MNOP10 MNOP10 MNOP10 MNOP10 MNOP10 MNOP10 MNOP10 MNOP10 ENDM MNOP50 MACRO MNOP10 MNOP10 MNOP10 MNOP10 MNOP10 ENDM MNOP10 MACRO MNOP5 MNOP5 ENDM MNOP5 MACRO NOP NOP NOP NOP NOP ENDM ORG 0h GOTO START ORG 4h GOTO START START ; ***************************** ; 1.Initialized ; ***************************** ; (1)Define I/O port SELBANK 3 CLRF ANSELA SELBANK 1 MOVLW B'11111011' MOVWF TRISA SELBANK 0 ; ***************************** ; 2.Program main ; ***************************** ; (1)Main loop BTFSC PORTA,0 GOTO MAIN1 BTFSC PORTA,1 CALL PUT100K CALL PUT1MHZ MAIN1 BTFSC PORTA,1 CALL PUT10K CALL PUT1K MAIN GOTO MAIN ;****************************************************************************************** ; Function name : PUT1MHZ ; Title : 1MHz Oscillator ; Input : ; Output : ; Description : OSC 8MHz ;****************************************************************************************** PUT1MHZ MOVLW B'00000100' MOVWF PORTA NOP NOP NOP CLRF PORTA GOTO PUT1MHZ ;****************************************************************************************** ; Function name : PUT100K ; Title : 100KHz Oscillator ; Input : ; Output : ; Description : OSC 8MHz ;****************************************************************************************** PUT100K MOVLW B'00000100' MOVWF PORTA NOP NOP NOP NOP MNOP10 MNOP10 MNOP10 MNOP5 CLRF PORTA NOP MNOP10 MNOP10 MNOP10 MNOP5 GOTO PUT100K ;****************************************************************************************** ; Function name : PUT10K ; Title : 10KHz Oscillator ; Input : ; Output : ; Description : OSC 8MHz ;****************************************************************************************** PUT10K MOVLW B'00000100' MOVWF PORTA NOP CALL PUT10KB CLRF PORTA CALL PUT10KB GOTO PUT10K ;****************************************************************************************** ; Function name : PUT10KB ; Title : ; Input : ; Output : ; Description : ;****************************************************************************************** PUT10KB MNOP100 MNOP100 MNOP100 MNOP50 MNOP10 MNOP10 MNOP10 MNOP10 NOP NOP NOP RETURN ;****************************************************************************************** ; Function name : PUT1K ; Title : 1KHz Oscillator ; Input : ; Output : ; Description : OSC 8MHz ;****************************************************************************************** PUT1K MOVLW B'00000100' MOVWF PORTA NOP CALL PUT10KB CALL PUT10KB CALL PUT10KB CALL PUT10KB CALL PUT10KB CALL PUT10KB CALL PUT10KB CALL PUT10KB CALL PUT10KB CALL PUT10KB MNOP10 MNOP10 MNOP5 NOP CLRF PORTA CALL PUT10KB CALL PUT10KB CALL PUT10KB CALL PUT10KB CALL PUT10KB CALL PUT10KB CALL PUT10KB CALL PUT10KB CALL PUT10KB CALL PUT10KB MNOP10 MNOP10 MNOP5 NOP GOTO PUT1K END