?? philips.asm
字號(hào):
JC SETUP_LHF
;---------------------------------------
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
;----------------------------------------
;將合成的二進(jìn)制加中頻38MHZ后除以步進(jìn)頻率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 ;顯示鍵盤(pán)輸入頻率值
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”的地址
;*******************************************************
;********************************
;以下為L(zhǎng)CD各個(gè)子程序程序應(yīng)用部分
;********************************
;忙標(biāo)志檢測(cè)子程序
READBF: MOV CKOU,#11111110B
MOV DKOU,#255
WAITBF:
JB BF,WAITBF
MOV CKOU,#255
RET
;*********************************
;寫(xiě)指令代碼子程序
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
;**********************************
;寫(xiě)數(shù)據(jù)寄存器字節(jié)子程序
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
;*********************************
;讀數(shù)據(jù)寄存器字節(jié)子程序
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
;***********************************
;以上為L(zhǎng)CD各個(gè)子程序程序應(yīng)用部分
;***********************************
;**************************************
;以下為寫(xiě)各個(gè)控制數(shù)據(jù)到寫(xiě)高頻頭的程序
;***************************************
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
;************************************
;以上為寫(xiě)各個(gè)控制數(shù)據(jù)到寫(xiě)高頻頭的程序
;************************************
;以下為從高頻頭讀數(shù)據(jù)到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
;**************************************
;以上為從高頻頭讀數(shù)據(jù)到BUFER3的程序
;**************************************
;**************************************
;以下為I2C總線的各個(gè)控制信號(hào)
;**************************************
;寫(xiě)存儲(chǔ)器時(shí)等待ASK信號(hào)
ASKW: ACALL DELAY
SETB SDA ;釋放SDA總線
ACALL DELAY
SETB SCL
WAITASKW: MOV C,SDA
JC WAITASKw
CLR SCL
CLR SDA
RET
;**********************************
;MCU作為從器件不應(yīng)答
NOASK: SETB SDA
SETB SCL
ACALL DELAY
CLR SCL
ACALL DELAY
CLR SDA
RET
;-----------------------------------
; 啟動(dòng)信號(hào)
START: SETB SCL
SETB SDA
ACALL DELAY
CLR SDA
ACALL DELAY
CLR SCL
RET
;---------------------------
; 停止信號(hào)
STOP: CLR SCL
CLR SDA
ACALL DELAY
SETB SCL
ACALL DELAY
SETB SDA
ACALL DELAY
RET
;---------------------------------
;MCU從存儲(chǔ)器(從器件)讀數(shù)據(jù)字節(jié)時(shí)產(chǎn)生ASK信號(hào)
ASKR: ACALL DELAY
CLR SDA
ACALL DELAY
SETB SCL
ACALL DELAY
CLR SCL
ACALL DELAY
RET
;-----------------------------
;送數(shù)據(jù)到總線上,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
;--------------------------------
;從總線上接收數(shù)據(jù),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總線的各個(gè)控制信號(hào)
;************************************
END
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -