Professional Documents
Culture Documents
FT 180a FC 01asm
FT 180a FC 01asm
;*** use 0x3FF1 for the PIC16F84, 0x3FF9 for the PIC16C84
W EQU 0x00
F EQU 0x01
ORG 0x00
GOTO START
DECFSZ COUNT,1
GOTO ADJDEC
RETLW 0
ADJDEC MOVLW R3
MOVWF FSR
CALL ADJBCD
MOVLW R2
MOVWF FSR
CALL ADJBCD
MOVLW R1
MOVWF FSR
CALL ADJBCD
MOVLW R0
MOVWF FSR
CALL ADJBCD
GOTO LOOP16
;****************************************
MOVLW 0x03
MOVWF RB ;8 BIT MODE
BSF RA,ENA ;ENA HIGH
NOP ;MORE THAN 470 NS
BCF RA,ENA ;ENA LOW
CALL MS100 ;WAIT FOR DISPLAY TO CATCH UP
MOVLW 0x03
MOVWF RB ;8 BIT MODE
BSF RA,ENA ;ENA HIGH
NOP ;MORE THAN 470 NS
BCF RA,ENA ;ENA LOW
CALL DELAY ;WAIT FOR DISPLAY TO CATCH UP
MOVLW 0x03
MOVWF RB ;8 BIT MODE
BSF RA,ENA ;ENA HIGH
NOP ;MORE THAN 470 NS
BCF RA,ENA ;ENA LOW
CALL DELAY ;WAIT FOR DISPLAY TO CATCH UP
MOVLW 0x02
MOVWF RB ;4 BIT MODE
BSF RA,ENA ;ENA HIGH
NOP ;MORE THAN 470 NS
BCF RA,ENA ;ENA LOW
CALL DELAY ;WAIT FOR DISPLAY
MOVLW 0xB7
MOVWF 0X01 ;PRESCALER /256, RB PULL UP DIS.
BCF 3,5 ;SWITCH TO F REGISTER PAGE 0
CLRF RA
CLRF RB
IORLW 0x86
CALL STROBE
CALL MS2
MOVLW 'V'
CALL DATS
MOVLW 'I'
CALL DATS
MOVLW 'V'
CALL DATS
MOVLW 'A'
CALL DATS
IORLW 0xC3
CALL STROBE
CALL MS2
MOVLW 'H'
CALL DATS
MOVLW 'O'
CALL DATS
MOVLW 'M'
CALL DATS
MOVLW 'E'
CALL DATS
MOVLW 'B'
CALL DATS
MOVLW 'R'
CALL DATS
MOVLW 'E'
CALL DATS
MOVLW 'W'
CALL DATS
MOVLW 'E'
CALL DATS
MOVLW 'R'
CALL DATS
CALL HOME
MOVLW 'F'
CALL DATS
MOVLW '='
CALL DATS
MOVLW 0x04
MOVWF UDC ;UPDATE DISPLAY EVERY 4 COUNTS
BSF RB,UP_CNT
BSF RB,GATE ;OPEN GATE'S
CALL MS100 ;100MS DELAY
BCF RB,GATE ;CLOSE GATE(COUNT COMPLETE)
BCF RB,UP_CNT
MOVF H_BYTE,W
MOVWF TEMP
CLK_AGN MOVF TEMP,W
XORWF RTCC,W
BTFSC STATUS,Z
GOTO UP_1
NOP
NOP
BCF STATUS,CARRY
MOVLW 0xFF
MOVWF TEMP
MOVF M_BYTE,W
SUBWF TEMP,W
MOVWF M_BYTE
GOTO M_DONE
TST_FLG MOVLW 0XB0 ;STORE I.F. OFFSET IS 10.7 MHZ = 1053B0 HEX =
1070000 DEC
MOVWF COUNT1
MOVLW 0X53
MOVWF COUNT2
MOVLW 0X10
MOVWF COUNT3
DECF COUNT2,F
MOVF M_BYTE,W
SUBWF COUNT2,F
BTFSS STATUS,CARRY
DECF COUNT3,F
MOVF H_BYTE,W
SUBWF COUNT3,F
BTFSS STATUS,CARRY
GOTO SET_FLG
BSF FLAGS,LOK_FLG ;VCO < IF, (VICE VERSA VCO > IF -->
FLAGS,LOK_FLG = 0)
GOTO CONVERT
SET_FLG BCF FLAGS,LOK_FLG ;VCO > IF, (VICE VERSA VCO < IF -->
FLAGS,LOK_FLG = 1)
BTFSS STATUS,CARRY
DECF COUNT2,F
MOVF M_BYTE,W
SUBWF COUNT2,W
MOVWF M_BYTE
BTFSS STATUS,CARRY
DECF COUNT3,F
MOVF H_BYTE,W
SUBWF COUNT3,W
MOVWF H_BYTE
GOTO DONE
;VCO > IF --> The IF is subtracted by adding the (2's) compliment of the IF.
MOVLW 0x02
MOVWF UDC ;UPDATE DISPLAY EVERY 2 COUNTS
CALL ADR_FRQ
MOVLW 0x30
MOVWF TEMP ;AMOUNT TO ADD TO CONVERT TO ASCII
MOVLW '.'
CALL DATS
MOVLW '.'
CALL DATS
END