;****************************************************************************************** ; PIC10F322 Sample Program ; Project : ; Program Name : ; Programer : ; Create date : Version 1.0 H24.05.25 ; 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 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'00111011' MOVWF TRISA CLRF PORTA CLRF LATA ; (8)Initialized NCO Module CALL INITNCO ; ********************************** ; 2.Main Program ; ********************************** MAIN GOTO MAIN ;******************************************************************************************* ; Function Name : INITNCO     ; Function : Initialize NCO Module ; Input : ; Output : ; Description : ;******************************************************************************************* INITNCO ; ********************************** ; 1.NCOxCON: NCOx 制御レジスタの定義 ; NCOxCON[7] NxEN: NCOx イネーブルビット ; 1 = NCOx モジュールを有効にする ; 0 = NCOx モジュールを無効にする ; NCOxCON[6] NxOE: NCOx 出力イネーブルビット ; 1 = NCOx 出力ピンを有効にする ; 0 = NCOx 出力ピンを無効にする ; NCOxCON[5] NxOUT: NCOx 出力ビット ; 1 = NCOx 出力がHigh である ; 0 = NCOx 出力がLow である ; NCOxCON[4] NxPOL: NCOx 極性ビット ; 1 = NCOx 出力信号をアクティブHigh にする ; 0 = NCOx 出力信号をアクティブLow にする ; NCOxCON[3-1] 未実装: 「0」として読み出し ; NCOxCON[0] NxPFM: NCOx パルス周波数モードビット ; 1 = NCOx をパルス周波数モードで動作させる ; 0 = NCOx を固定デューティ サイクル モードで動作させる ; ********************************** MOVLW B'11000000' MOVWF NCO1CON ; ********************************** ; 2.NCOxCLK: NCOx 入力クロック制御レジスタの定義 ; NCOxCLK[7-5] NxPWS<2:0>: NCOx 出力パルス幅選択ビット(1, 2) ; 111 = NCOx クロック128 周期 ; 110 = NCOx クロック64 周期 ; 101 = NCOx クロック32 周期 ; 100 = NCOx クロック16 周期 ; 011 = NCOx クロック8 周期 ; 010 = NCOx クロック4 周期 ; 001 = NCOx クロック2 周期 ; 000 = NCOx クロック1 周期 ; NCOxCLK[4-2] 未実装: 「0」として読み出し ; NCOxCLK[1-0] NxCKS<1:0>: NCOx クロック源選択ビット ; 11 = LC1OUT ; 10 = HFINTOSC ; 01 = Fosc ; 00 = NCO1CLK ; ********************************** MOVLW B'00000001' MOVWF NCO1CLK ; ********************************** ; 3.NCOxACCU: NCOx アキュムレータ レジスタ - 最上位バイトの定義 ; NCOxACCU[3-0] NCOx アキュムレータ、最上位バイト NCOxACC<19:16> ; NCOxACCH: NCOx アキュムレータ レジスタ - 上位バイトの定義 ; NCOxACCH[7-0] NCOx アキュムレータ、上位バイト NCOxACC<15:8> ; NCOxACCL: NCOx アキュムレータ レジスタ - 下位バイトの定義 ; NCOxACCL[7-0] NCOx アキュムレータ、下位バイト NCOxACC<7:0> ; ********************************** MOVLW H'00' MOVWF NCO1ACCU MOVLW H'00' MOVWF NCO1ACCH MOVLW H'00' MOVWF NCO1ACCL ; ********************************** ; 4.NCOxINCH: NCOx インクリメント レジスタ - 上位バイトの定義 ; NCOxINCH[7-0] NCOxINC<15:8>: NCOx インクリメント レジスタ - 上位バイト ; NCOxINCL: NCOx インクリメント レジスタ - 下位バイトの定義 ; NCOxINCL[7-0] NCOxINC<7:0>: NCOx インクリメント レジスタ - 下位バイト ; 注)NCOxINCレジスタは、NCOxINCH=>NCOxINCLの順に設定する必要がある!!! ; ********************************** ; F(Hz)=16MHz*(NCO1INCL)/(2^21) ==> F(Hz)=(NCO1INCL)*7.629394531 ==> NCO1INCL=F(Hz)/7.629394531 ; F(Hz):50Hz 50Hz /7.629394531=>0d6.5536 =>0x6 ; F(Hz):100Hz 100Hz /7.629394531=>0d13.1072=>0xD ; F(Hz):1KHz 1KHz /7.629394531=>0d131.072=>0x83 ; F(Hz):10KHz 10KHz /7.629394531=>0d1310.72=>0x51F ; F(Hz):100KHz 100KHz/7.629394531=>0d13107.2=>0x3333 ; F(Hz):500KHz 500KHz/7.629394531=>0d65536 =>0x10000 MOVLW H'00' MOVWF NCO1INCH MOVLW H'83' MOVWF NCO1INCL RETURN END