?? ia4420fifo(pic).asm
字號:
;-----------------------------------------------------------------------------
;
; File Name : IA4420FIFO.asm
;
; Assembler : PIC16F876
;
; Purpose : Sample program for IA4420 initialize and Transceiver testing
;
; Copyright (c) 2005 by Grandatech, All Rights Reserved
;
; Prepare By: Find Duan
;
; Support Email: findduan@grandatech.com.cn
;
; Notice: Use four lines mode,they are SDO,SDI,NSEL,SCK.
; (NFFS must contact High level)
;
;-----------------------------------------------------------------------------
LIST P =16F876
#INCLUDE P16F876A.INC
;#DEFINE IRQ PORTB,0
;#DEFINE FFIT PORTB,1
;#DEFINE FSK PORTB,2
#DEFINE SDO PORTB,3
#DEFINE CS PORTB,4
#DEFINE CLK PORTB,5
#DEFINE SDI PORTA,5
#DEFINE DIRQ PORTA,0
#DEFINE DCLK PORTA,1
#DEFINE DCS PORTA,2
#DEFINE DSDI PORTA,3
DISPLAYBUFF EQU 30H
INDEX EQU 3BH
INDEXBUF EQU 3DH
CHARCODE EQU 3EH
RXDATABUFF EQU 40H
TXDATABUFF EQU 50H
COMDATA1 EQU 60H
COMDATA2 EQU 61H
SPIDATA EQU 62H
BITCOUNT EQU 63H
BYTECOUNT EQU 64H
DELAYDATA1 EQU 6AH
DELAYDATA2 EQU 6BH
GENCOUNT EQU 6CH
FLAGBYTE1 EQU 6DH
FLAGBYTE2 EQU 6EH
DATABUFF EQU 6FH
#DEFINE REVFRAME FLAGBYTE1,0
#DEFINE SCIREVFRAME FLAGBYTE1,1
#DEFINE REVERROR FLAGBYTE1,2
#DEFINE REVSTOP FLAGBYTE1,3
#DEFINE KEYUP FLAGBYTE1,5
#DEFINE NEWKEY FLAGBYTE1,6
#DEFINE NEWKEY2 FLAGBYTE1,7
#DEFINE BITALNUM FLAGBYTE2,0
#DEFINE BITSINSEL FLAGBYTE2,1
#DEFINE BITINNUMOK FLAGBYTE2,2
#DEFINE BITSETADR FLAGBYTE2,3
#DEFINE BITIDMOD1 FLAGBYTE2,4
#DEFINE BITIDMOD2 FLAGBYTE2,5
#DEFINE BITIDMOD3 FLAGBYTE2,6
#DEFINE BITCHANNEL FLAGBYTE2,7
ORG 0X00
NOP
GOTO MAIN
ORG 0X30
MAIN
NOP
MOVLW B'00001111'
MOVWF PORTA
MOVLW B'10010101'
MOVWF PORTB
MOVLW B'10000111'
MOVWF PORTC
BSF STATUS,RP0
MOVLW 06H
MOVWF ADCON1
MOVLW B'11010001'
MOVWF TRISA
MOVLW B'10001011'
MOVWF TRISB
MOVLW B'10000111'
MOVWF TRISC
BCF STATUS,RP0
MOVLW 0FAH
MOVWF DELAYDATA2
CALL DELAY4NMS
CLRF PCLATH
MOVLW 02DH
MOVWF 50H
MOVLW 0D4H
MOVWF 51H
MOVLW 0FAH
MOVWF 52H
MOVLW 08H
MOVWF 53H
MOVLW 012H
MOVWF 54H
MOVLW 034H
MOVWF 55H
MOVLW 56H
MOVWF 56H
MOVLW 078H
MOVWF 57H
MOVLW 09AH
MOVWF 58H
MOVLW 0BCH
MOVWF 59H
MOVLW 0DEH
MOVWF 5AH
MOVLW 055H
MOVWF 5BH
MOVLW 055H
MOVWF 5CH
CALL IA4420INIT
CALL SPIREVTWOBYTE
MOVLW 82H ;電源管理
MOVWF COMDATA1
MOVLW 88H
MOVWF COMDATA2
CALL SPISENDCOMMAND
MAINLOOP
MOVLW 0CAH ;FIFO COMMAND
MOVWF COMDATA1
MOVLW 83H
MOVWF COMDATA2
CALL SPISENDCOMMAND
MOVLW 0AH
MOVWF BYTECOUNT
MOVLW 40H
MOVWF FSR
CLRF GENCOUNT
; CALL SPIREVTWOBYTE
NOP
NOP
BTFSS REVFRAME
GOTO MAINLOOP1
BCF REVFRAME
MAINLOOP1
BSF CS
NOP
NOP
BCF SDI
BCF CS
BTFSC SDO
GOTO REVSTART
BTFSC PORTC,0
GOTO MAINLOOP1
; BTFSS PORTC,0
; GOTO $-1
MOVLW 0AH
MOVWF BYTECOUNT
CALL TXREGSENDFRAME
CALL DELAY1MS
CALL DELAY1MS
CALL DISPINIT
CALL DELAY1MS
CALL DELAY1MS
MOVLW 0AH
MOVWF DELAYDATA2
CALL DELAY4NMS
GOTO MAINLOOP
REVSTART
CALL FIFOREVFRAME
NOP
NOP
GOTO MAINLOOP
IA4420INIT
MOVLW 80H ;配置命令
MOVWF COMDATA1
MOVLW 0FDH
MOVWF COMDATA2
CALL SPISENDCOMMAND
MOVLW 82H ;電源管理
MOVWF COMDATA1
MOVLW 01H
MOVWF COMDATA2
CALL SPISENDCOMMAND
MOVLW 0A4H ;頻率設置(A7D0)
MOVWF COMDATA1
MOVLW 07DH
MOVWF COMDATA2
CALL SPISENDCOMMAND
MOVLW 0C6H ;波特率設置
MOVWF COMDATA1
MOVLW 23H
MOVWF COMDATA2
CALL SPISENDCOMMAND
MOVLW 94H ;接收控制
MOVWF COMDATA1
MOVLW 083H
MOVWF COMDATA2
CALL SPISENDCOMMAND
MOVLW 0C2H ;數據濾波
MOVWF COMDATA1
MOVLW 0ECH
MOVWF COMDATA2
CALL SPISENDCOMMAND
MOVLW 0CAH ;FIFO COMMAND
MOVWF COMDATA1
MOVLW 81H
MOVWF COMDATA2
CALL SPISENDCOMMAND
MOVLW 0C4H ;AFC COMMAND
MOVWF COMDATA1
MOVLW 0E7H
MOVWF COMDATA2
CALL SPISENDCOMMAND
MOVLW 098H ;TXCTRL
MOVWF COMDATA1
MOVLW 40H
MOVWF COMDATA2
CALL SPISENDCOMMAND
MOVLW 0FFH ;WAKEUP
MOVWF COMDATA1
MOVLW 0FFH
MOVWF COMDATA2
CALL SPISENDCOMMAND
MOVLW 0C8H ;間歇工作
MOVWF COMDATA1
MOVLW 0EH
MOVWF COMDATA2
CALL SPISENDCOMMAND
MOVLW 0C0H ;時鐘輸出
MOVWF COMDATA1
MOVLW 60H
MOVWF COMDATA2
CALL SPISENDCOMMAND
RETURN
FIFOREVFRAME
CALL SPIREVBYTE
CALL SPIREVBYTE
CALL SPIREVBYTE
BSF CS
MOVF SPIDATA,W
MOVWF INDF
INCF FSR,F
DECFSZ BYTECOUNT,F
GOTO FIFOREVWAIT
BSF REVFRAME
BSF CS
MOVLW 0CAH ;FIFO COMMAND
MOVWF COMDATA1
MOVLW 81H
MOVWF COMDATA2
CALL SPISENDCOMMAND
RETURN
FIFOREVWAIT
BCF SDI
BCF CS
; INCF GENCOUNT
; BTFSC STATUS,Z
; RETURN
; CALL DELAY100US
BTFSS SDO
GOTO FIFOREVWAIT
; CLRF GENCOUNT
GOTO FIFOREVFRAME
TXREGSENDFRAME
; MOVLW 0B8H
; MOVWF COMDATA1
; MOVLW 0AAH
; MOVWF COMDATA2
; CALL SPISENDCOMMAND
; MOVLW 0B8H
; MOVWF COMDATA1
; MOVLW 0AAH
; MOVWF COMDATA2
; CALL SPISENDCOMMAND
; CALL SPIREVTWOBYTE
MOVLW 82H ;電源管理
MOVWF COMDATA1
MOVLW 28H
MOVWF COMDATA2
CALL SPISENDCOMMAND
MOVLW 52H
MOVWF FSR
BCF CS
BTFSS SDO
GOTO $-1
; CALL DELAY100US
MOVLW 0B8H
MOVWF COMDATA1
MOVLW 0AAH
MOVWF COMDATA2
CALL SPISENDCOMMAND
BCF CS
BTFSS SDO
GOTO $-1
; CALL DELAY100US
MOVLW 0B8H
MOVWF COMDATA1
MOVLW 02DH
MOVWF COMDATA2
CALL SPISENDCOMMAND
BCF CS
BTFSS SDO
GOTO $-1
; CALL DELAY100US
MOVLW 0B8H
MOVWF COMDATA1
MOVLW 0D4H
MOVWF COMDATA2
CALL SPISENDCOMMAND
NEXTBYTE
BCF CS
BTFSS SDO
GOTO $-1
; CALL DELAY100US
MOVLW 0B8H
MOVWF COMDATA1
MOVF INDF,W
MOVWF COMDATA2
CALL SPISENDCOMMAND
INCF FSR
DECFSZ BYTECOUNT
GOTO NEXTBYTE
BCF CS
BTFSS SDO
GOTO $-1
; CALL DELAY100US
MOVLW 0B8H
MOVWF COMDATA1
MOVLW 0AAH
MOVWF COMDATA2
CALL SPISENDCOMMAND
BCF CS
BTFSS SDO
GOTO $-1
MOVLW 82H ;電源管理
MOVWF COMDATA1
MOVLW 88H
MOVWF COMDATA2
CALL SPISENDCOMMAND
CALL SPIREVTWOBYTE
RETURN
SPISENDCOMMAND
BCF CS
MOVF COMDATA1,0
MOVWF SPIDATA
CALL SPISENDBYTE
MOVF COMDATA2,0
MOVWF SPIDATA
CALL SPISENDBYTE
BSF CS
RETURN
SPISENDBYTE
MOVLW 08H
MOVWF BITCOUNT
NEXTBIT
CLRC
BCF CLK
RLF SPIDATA
BTFSC STATUS,C
GOTO SENDBIT1
BCF SDI
GOTO SENDBIT
SENDBIT1
BSF SDI
NOP
SENDBIT
BSF CLK
; NOP
; NOP
DECFSZ BITCOUNT
GOTO NEXTBIT
NOP
NOP
BCF CLK
BCF SDI
CLRF SPIDATA
RETURN
SPIREVTWOBYTE
BCF CS
CALL SPIREVBYTE
MOVF SPIDATA,0
MOVWF COMDATA1
CALL SPIREVBYTE
MOVF SPIDATA,0
MOVWF COMDATA2
BSF CS
RETURN
SPIREVBYTE
MOVLW 08H
MOVWF BITCOUNT
BCF SDI
BCF CLK
REVNEXTBIT
BSF CLK
BTFSC SDO
GOTO REVBIT1
BCF STATUS,C
GOTO REVBIT
REVBIT1
BSF STATUS,C
NOP
REVBIT
BCF CLK
RLF SPIDATA
DECFSZ BITCOUNT
GOTO REVNEXTBIT
RETURN
DELAY1MS
MOVLW 07CH
MOVWF DELAYDATA1
DELAYLOOP
NOP
NOP
NOP
NOP
NOP
DECFSZ DELAYDATA1
GOTO DELAYLOOP
NOP
RETURN
DELAY4NMS
CALL DELAY1MS
NOP
CALL DELAY1MS
NOP
CALL DELAY1MS
NOP
CALL DELAY1MS
DECFSZ DELAYDATA2
GOTO DELAY4NMS
RETURN
DELAY100US
MOVLW 0BH
MOVWF DELAYDATA1
DELAYLOOP1
NOP
NOP
NOP
NOP
NOP
DECFSZ DELAYDATA1
GOTO DELAYLOOP1
NOP
RETURN
DISPINIT
MOVLW 01H
MOVWF DATABUFF
CALL LCDWRITECMD
NOP
NOP
MOVLW 03H
MOVWF DATABUFF
CALL LCDWRITECMD
CALL DELAY100US
BCF DCS
NOP
BSF DSDI
NOP
BCF DCLK
NOP
BSF DCLK
MOVLW 40H
MOVWF DATABUFF
CALL IICSENDBYTE
MOVLW 30H
MOVWF CHARCODE
BSF PCLATH,4
CALL CHARDISP
MOVLW 31H
MOVWF CHARCODE
CALL CHARDISP
MOVLW 32H
MOVWF CHARCODE
CALL CHARDISP
MOVLW 33H
MOVWF CHARCODE
CALL CHARDISP
MOVLW 34H
MOVWF CHARCODE
CALL CHARDISP
MOVLW 35H
MOVWF CHARCODE
CALL CHARDISP
NOP
NOP
BSF DCS
CLRF PCLATH
CALL DELAY100US
RETURN
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -