⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ia4420fifo(pic).asm

📁 IA4420的收发操作源代码 是汇编做的,PIC 单片机
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;-----------------------------------------------------------------------------
;
; 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 + -