;*********************************************************** ;FT-220Xdds.asm rev3.2 ;FT-220X用13.1MHz OSC X 3逓倍50MHz VFO ;2012.1.13debug ;*********************************************************** list p=16f84 INCLUDE __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC ;******************************************** ; Define Constant or Work ;******************************************** CBLOCK 0X0D DAT_CNT ;Dispaly Data Bits Counter CNT1 ;Timer Counter for CLOCK CNT2 ;Timer Counter for 10usec CNT3 ;Timer Counter for 5msec CNT4 ;Timer Counter for 1sec CNT5 ;Timer Counter for 100usec TEMP ;Tempolary Save Area KEY ;KEY DATA SAVE EN_T0 ;R_ENCODER T0時の状態 EN_T1 ;R_ENCODER T1時の状態 SW_T0 ;SW T0時の状態 SW_T1 F_STEP ;F_STEP 10Hz/100Hz FREQ_FLG ;FREQ CHANG FLG ONOFF_FLG ;VFO ONOFF FLAG SWSET_FLG ;SW SET FLAG PWRON_FLG ;power on時に1回だけセット TXMODE_FLG RITMODE_FLG TXON_FLG ;TX ON A_LO ;FREQ DATA A_LO TO A_TOP A_MD A_HI A_TOP B_LO ;FREQ DATA B_LO TO B_TOP B_MD B_HI B_TOP C_LO ;FREQ DATA C_LO TO C_TOP C_MD C_HI C_TOP CTEMP D_LO ;FREQ DATA D_LO TO D_TOP D_MD D_HI D_TOP FSTEP_LO FSTEP_MD FSTEP_HI FTX_LO ;RIT modeTX Freq FTX_MD FTX_HI FTX_TOP ;1/13 debug FRX_LO ;RIT Mode RX Freq FRX_MD FRX_HI STEP_LOW_BYTE ; DIGIT12 ;Hz,10Hz桁 DIGIT34 ;100Hz,1kHz桁 DIGIT56 ;10kHz,100kHz桁 DIGIT78 ;1MHz,10MHz桁 WORK1 TEMP1 LP_CNT ;main loop counter SHIFT E_ADRS VFOSW_T0 VFOSW_T1 MODESW_T0 MODESW_T1 TXONSW_T0 TXONSW_T1 E_DATA DATA_SAVE ENDC ;******************************** ; Main Program ;******************************** ORG 0 ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; Initialaization ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ call TIME5M call TIME5M call TIME5M call TIME5M call TIME5M call TIME5M call TIME5M call TIME5M call TIME5M call TIME5M CALL PORTA_SET ;PORT INITIALIZATION CALL PORTB_SET CALL FLG_INI ;All FLG INI set CALL DDS_INI ;WAKE-UP DDS(LET OUTPUT ON) CALL FREQ_INI ;SET INIT FREQ CALL SEND_DAT ;DATA SEND call SW_INI ;vfo_sw & mode_sw initilize call LPCNT_INT ;Loop Counter=0x13 CALL REG_MOV1 ;C_REG TO B_REGへ移動 CALL SEND_DAT ;DATA SEND CALL DAT_CAL ;DATA X 3 + 10.7MHz CALL DATCNV ;BINARY TO BCD CALL REG_MOV2 ;B_REG TO C_REGへ移動 CALL LED_DISP ;LED DISPLAY ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ;Main Routine ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ MAIN CALL PORTB_SET ; CALL LP_CHK ;Loop Count Check if LP=0 then goto EN_SCAN CALL VFO_SW ;VFO SW SET取り込み CALL MODE_SW ;MODE SW SET取り込み CALL EN_SCAN ;R_ENCODER UP/DWN 検出 CALL TXON_PWROFF ;TX ON & POWER OFF検出 CALL FLG_CHK ;変化したか CALL REG_MOV1 ;C_REG TO B_REGへ移動 CALL SEND_DAT ;DATA SEND CALL DAT_CAL ;DATA X 3 + 10.7MHz CALL DATCNV ;BINARY TO BCD CALL REG_MOV2 ;B_REG TO C_REGへ移動 CALL LED_DISP ;LED DISPLAY GOTO MAIN ;********** PORT A & B Initialize**************************** ; RA0,1 Input RA2-4 Output ; RB0-6 Input RB7 Output ;********************************************************* PORTA_SET CLRF PORTA CLRF PORTB BSF STATUS,RP0 ;Select bank1 MOVLW b'00000011' ;PortA RA0,RA1入力 他出力 MOVWF TRISA ;にセット BCF STATUS,RP0 ;Select Bank0 RETURN PORTB_SET BSF STATUS,RP0 ;SELECT Bank1 MOVLW b'01111111' ;PortB RB0-6 INPUT, MOVWF TRISB ;SET PORT B BCF STATUS,RP0 ;Select Bank0 RETURN ;********** Flag Clear & Initilize************************************* FLG_INI clrf SWSET_FLG clrf PWRON_FLG clrf RITMODE_FLG clrf TXON_FLG RETURN ;****** DDS INITIALIZE COMMAND=1*********************** DDS_INI CALL TIME5M ;WAIT 5mS CALL TIME5M ;WAIT 5mS CALL TIME5M ;WAIT 5mS CALL STROBE_1 ;STROBE=1 (NORMAL STB=1) ;ADDRESS SET CALL BIT1 ;CS0=1 CALL BIT1 ;CS1=1 CALL BIT1 ;CS2=1 ;COMMAND=1:SET DDS OUTPUT=1 CALL BIT1 CALL BIT0 CALL BIT0 CALL BIT0 ;8x3=24BITS FREQ.DATA(DUMMY=00H) MOVLW 00H CALL TX_BYTE MOVLW 00H CALL TX_BYTE MOVLW 00H CALL TX_BYTE ;2BITS DATA=00H CALL BIT0 CALL BIT0 CALL STROBE_0 ;STROBE=0 RETURN ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; EEPROM DATA CHCK ; if EEPROM Data 38.3