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

📄 philips0.asm

📁 philips i2c turner fi1256
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	MOV	A,BEICHUL
	SUBB	A,#98H
	MOV	A,BEICHUM
	SUBB	A,#8DH
	MOV	A,BEICHUH
	SUBB	A,#07H
	JC	SETUP_VHF
	;---------------------------------------
SETUP_UHF:	MOV	PB,#01111111B
	;	SETB	P0.7
	;	CLR	P0.6
	;	CLR	P0.5
	AJMP	CHUFSTEP
SETUP_VHF:	MOV	PB,#10011111B
	;	SETB	P0.6
	;	CLR	P0.7
	;	CLR	P0.5
	AJMP	CHUFSTEP
SETUP_LHF:	MOV	PB,#10101111B
	;	SETB	P0.5
	;	CLR	P0.6
	;	CLR	P0.7
	AJMP	CHUFSTEP
	;----------------------------------------
	;将合成的二进制加中频38MHZ后除以步进频率50(KHZ)
CHUFSTEP:	MOV	CHUSHUH,#0	
	MOV	CHUSHUL,#50
	LCALL	CHUFA
	;----------------------------------------
	MOV	DB2,SHANGL
	MOV	DB1,SHANGM
	MOV	ADBW,#11000010B
	MOV	CB,#10001000B
	;	ACALL	DISLCD3
SEND_TURNER:	ACALL	WRITE_TURN
	RET
	;*************************************
	;*************************************
DISLCD1:	MOV	ZLING,#86H	;显示键盘输入频率值
	ACALL	WRTC
	;-------------------------------------
	MOV	A,DISSHIWAN
	MOV	DPTR,#ADDR_LCD
	MOVC	A,@A+DPTR
	MOV	SHUJU,A
	ACALL	WRTS
	;-------------------------------------
	MOV	A,DISWAN
	MOV	DPTR,#ADDR_LCD
	MOVC	A,@A+DPTR
	MOV	SHUJU,A
	ACALL	WRTS
	;-------------------------------------
	MOV	A,DISQIAN
	MOV	DPTR,#ADDR_LCD
	MOVC	A,@A+DPTR
	MOV	SHUJU,A
	ACALL	WRTS
	;-------------------------------------
	MOV	SHUJU,#00101110B
	ACALL	WRTS
	;-------------------------------------
	MOV	A,DISBAI
	MOV	DPTR,#ADDR_LCD
	MOVC	A,@A+DPTR
	MOV	SHUJU,A
	ACALL	WRTS
	;-------------------------------------
	MOV	A,DISSHI
	MOV	DPTR,#ADDR_LCD
	MOVC	A,@A+DPTR
	MOV	SHUJU,A
	ACALL	WRTS
	;-------------------------------------
	MOV	A,DISGE
	MOV	DPTR,#ADDR_LCD
	MOVC	A,@A+DPTR
	MOV	SHUJU,A
	ACALL	WRTS
	;-------------------------------------
	MOV	SHUJU,#01001101B
	ACALL	WRTS
	;--------------------------------------
	MOV	SHUJU,#01001000B	;显示“H”
	ACALL	WRTS
	;--------------------------------------
	MOV	SHUJU,#01111010B	;显示“Z”
	ACALL	WRTS
	;---------------------------------------
	RET
	;**********************************************
	;***********************************************
	;****************************************************
DISLCD3:	MOV	ZLING,#0C0H	;在第二行显示“K=******”	
	ACALL	WRTC
	;-----------------------------------------------
	MOV	SHUJU,#01001011B	;显示“K”
	ACALL	WRTS
	;------------------------------------------------
	MOV	SHUJU,#00111101B	;显示“=”
	ACALL	WRTS
	;-----------------------------------------------
	MOV	A,PB
	ANL	A,#11110000B
	SWAP	A
	MOV	DPTR,#ADDR_LCD
	MOVC	A,@A+DPTR
	MOV	SHUJU,A
	ACALL	WRTS
	;--------------------------------------------
	MOV	A,PB
	ANL	A,#00001111B
	MOV	DPTR,#ADDR_LCD
	MOVC	A,@A+DPTR
	MOV	SHUJU,A
	ACALL	WRTS
	RET
	;**********************************************
DISLCD4:	MOV	ZLING,#0C0H	;在第二行显示"S=******"
	ACALL	WRTC
	;-----------------------------------------------
	MOV	SHUJU,#01010011B	;显示“S”
	ACALL	WRTS
	;------------------------------------------------
	MOV	SHUJU,#00111101B	;显示“=”
	ACALL	WRTS
	;-----------------------------------------------
	MOV	A,SHANGH
	ANL	A,#11110000B
	SWAP	A
	MOV	DPTR,#ADDR_LCD
	MOVC	A,@A+DPTR
	MOV	SHUJU,A
	ACALL	WRTS
	;--------------------------------------------
	MOV	A,SHANGH
	ANL	A,#00001111B
	MOV	DPTR,#ADDR_LCD
	MOVC	A,@A+DPTR
	MOV	SHUJU,A
	ACALL	WRTS
	;--------------------------------------------
	MOV	A,SHANGM
	ANL	A,#11110000B
	SWAP	A
	MOV	DPTR,#ADDR_LCD
	MOVC	A,@A+DPTR
	MOV	SHUJU,A
	ACALL	WRTS
	;--------------------------------------------
	MOV	A,SHANGM
	ANL	A,#00001111B
	MOV	DPTR,#ADDR_LCD
	MOVC	A,@A+DPTR
	MOV	SHUJU,A
	ACALL	WRTS
	;--------------------------------------------
	MOV	A,SHANGL
	ANL	A,#11110000B
	SWAP	A
	MOV	DPTR,#ADDR_LCD
	MOVC	A,@A+DPTR
	MOV	SHUJU,A
	ACALL	WRTS
	;---------------------------------------------
	MOV	A,SHANGL
	ANL	A,#00001111B
	MOV	DPTR,#ADDR_LCD
	MOVC	A,@A+DPTR
	MOV	SHUJU,A
	ACALL	WRTS
	;----------------------------------------------
	MOV	SHUJU,#01011001B	;显示“Y”
	ACALL	WRTS
	;------------------------------------------------
	MOV	SHUJU,#00111101B	;显示“=”
	ACALL	WRTS
	;-----------------------------------------------
	MOV	A,YUSHUH
	ANL	A,#11110000B
	SWAP	A
	MOV	DPTR,#ADDR_LCD
	MOVC	A,@A+DPTR
	MOV	SHUJU,A
	ACALL	WRTS
	;---------------------------------------------
	MOV	A,YUSHUH
	ANL	A,#00001111B
	MOV	DPTR,#ADDR_LCD
	MOVC	A,@A+DPTR
	MOV	SHUJU,A
	ACALL	WRTS
	;-----------------------------------------------
	MOV	A,YUSHUL
	ANL	A,#11110000B
	SWAP	A
	MOV	DPTR,#ADDR_LCD
	MOVC	A,@A+DPTR
	MOV	SHUJU,A
	ACALL	WRTS
	;---------------------------------------------
	MOV	A,YUSHUL
	ANL	A,#00001111B
	MOV	DPTR,#ADDR_LCD
	MOVC	A,@A+DPTR
	MOV	SHUJU,A
	ACALL	WRTS
	RET
	;****************************************************	
ADDR_LCD:	DB	00110000B	;字符“0”的地址
	DB	00110001B	;字符“1”的地址
	DB	00110010B	;字符“2”的地址
	DB	00110011B	;字符“3”的地址
	DB	00110100B	;字符“4”的地址
	DB	00110101B	;字符“5”的地址
	DB	00110110B	;字符“6”的地址
	DB	00110111B	;字符“7”的地址
	DB	00111000B	;字符“8”的地址
	DB	00111001B	;字符“9”的地址
	DB	01000001B	;字符“A”的地址
	DB	01000010B	;字符“B”的地址
	DB	01000011B	;字符“C”的地址
	DB	01000100B	;字符“D”的地址
	DB	01000101B	;字符“E”的地址
	DB	01000110B	;字符“F”的地址
	;---------------------------------------------
	DB	01001000B	;字符“H”的地址
	DB	01001011B	;字符“K”的地址
	DB	01111010B	;字符“Z”的地址
	DB	00111101B	;字符“=”的地址
	DB	00101110B	;字符“·”的地址
	DB	01001101B	;字符“M”的地址
	;*******************************************************
	;********************************
	;以下为LCD各个子程序程序应用部分
	;********************************
	;忙标志检测子程序
READBF:	MOV	CKOU,#11111110B
	MOV	DKOU,#255
WAITBF:	JB	BF,WAITBF
	MOV	CKOU,#255
	RET
	;*********************************
	;写指令代码子程序
WRTC:	ACALL	READBF
	MOV	CKOU,#255
	CLR	RS
	CLR	RW
	ACALL	DELAYLCD
	SETB	E
	ACALL	DELAYLCD
	MOV	DKOU,ZLING
	ACALL	DELAYLCD
	CLR	E
	SETB	RW
	MOV	CKOU,#255
	RET
	;**********************************
DELAYLCD:	MOV	R6,#5
LOP11:	MOV	R7,#5
LOP22:	DJNZ	R7,LOP22
LOP33:	DJNZ	R6,LOP11
	RET
	;**********************************
	;写数据寄存器字节子程序
WRTS:	ACALL	READBF
	MOV	CKOU,#255
	SETB	RS
	CLR	RW
	ACALL	DELAYLCD
	SETB	E
	ACALL	DELAYLCD
	MOV	DKOU,SHUJU
	ACALL	DELAYLCD
	CLR	E
	SETB	RW
	MOV	CKOU,#255
	RET
	;*********************************
	;读数据寄存器字节子程序
READS:	ACALL	READBF
	MOV	CKOU,#255
	SETB	RS
	SETB	RW
	ACALL	DELAYLCD
	SETB	E
	ACALL	DELAYLCD
	MOV	SHUJU,DKOU
	ACALL	DELAYLCD
	CLR	RW
	CLR	E
	MOV	CKOU,#255
	;***********************************
	;以上为LCD各个子程序程序应用部分
	;***********************************
	;**************************************
	;以下为写各个控制数据到写高频头的程序
	;***************************************
WRITE_TURN:	ACALL	START
	;-------------------------
	MOV	A,ADBW
	ACALL	SENDDATE
	ACALL	ASKW
	;-------------------------
	MOV	A,DB1
	ACALL	SENDDATE
	ACALL	ASKW
	;-------------------------
	MOV	A,DB2
	ACALL	SENDDATE
	ACALL	ASKW
	;-------------------------
	MOV	A,CB
	ACALL	SENDDATE
	ACALL	ASKW
	;-------------------------
	MOV	A,PB
	ACALL	SENDDATE
	ACALL	ASKW
	;-------------------------
	ACALL	STOP
	RET
	;************************************
	;以上为写各个控制数据到写高频头的程序
	;************************************
	;以下为从高频头读数据到BUFER3的程序
	;************************************
READ_TURN:	ACALL	START
	MOV	A,ADBW
	SETB	ACC.0
	ACALL	SENDDATE
	SETB	P0.5
	ACALL	ASKW
	SETB	P0.6
	;-----------------------------------
	ACALL	RECEIVEDATE
	MOV	BUFER3,A
	ACALL	NOASK
	ACALL	STOP
	RET
	;**************************************
	;以上为从高频头读数据到BUFER3的程序
	;**************************************
	;**************************************
	;以下为I2C总线的各个控制信号
	;**************************************
	;写存储器时等待ASK信号
ASKW:	ACALL	DELAY
	SETB	SDA	;释放SDA总线
	ACALL	DELAY
	SETB	SCL
WAITASKW:	MOV	C,SDA
	JC	WAITASKW
	CLR	SCL
	CLR	SDA
	RET
	;**********************************
	;MCU作为从器件不应答
NOASK:	SETB	SDA
	SETB	SCL
	ACALL	DELAY
	CLR	SCL
	ACALL	DELAY
	CLR	SDA
	RET
	;-----------------------------------
	;	启动信号
START:	SETB	SCL
	SETB	SDA
	ACALL	DELAY
	CLR	SDA
	ACALL	DELAY
	CLR	SCL
	RET
	;---------------------------
	;	停止信号
STOP:	CLR	SCL
	CLR	SDA
	ACALL	DELAY
	SETB	SCL
	ACALL	DELAY
	SETB	SDA
	ACALL	DELAY
	RET
	;---------------------------------
	;MCU从存储器(从器件)读数据字节时产生ASK信号
ASKR:	ACALL	DELAY
	CLR	SDA
	ACALL	DELAY
	SETB	SCL
	ACALL	DELAY
	CLR	SCL
	ACALL	DELAY
	RET
	;-----------------------------
	;送数据到总线上,A作为移位输出寄存器
SENDDATE:	MOV	R2,#8
LOOPW:	RLC	A	
	MOV	SDA,C
	ACALL	DELAY
	SETB	SCL
	ACALL	DELAY
	CLR	SCL
	ACALL	DELAY
	DJNZ	R2,LOOPW
	CLR	SDA
	RET
	;--------------------------------
	;从总线上接收数据,A作为移位入寄存器
RECEIVEDATE:	SETB	SDA
LOOPR:	RL	A
	ACALL	DELAY
	SETB	SCL
	ACALL	DELAY
	MOV	C,SDA
	MOV	ACC.0,C
	ACALL	DELAY
	CLR	SCL
	ACALL	DELAY
	INC	R2
	CJNE	R2,#8,LOOPR
	RET
	;--------------------------------
DELAY:	NOP
	NOP
	NOP
	NOP
	RET
	;***********************************
	;以上为I2C总线的各个控制信号
	;************************************
	END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -