📄 at89c2051控制lmx2326(程序).asm
字号:
; This section of code is to program LMX2326 Frequency Synthesizer using
; ATMEL AT89C2051 (20 pin) microcontroller at 2.225 GHz
$MOD51
ORG 000H
; P3.0 ATTACHED TO CLOCK
; P3.1 ATTACHED TO DATA
; P3.2 ATTACHED TO LE
CLOCK EQU P3.0
DAT EQU P3.1
EN EQU P3.2
IN: MOV P3,#00H
; THE SEQUENCE OF PROGRAMMING HAS BEEN TAKEN FROM NATIONAL SEMI- [规画的序列从国立半导体 " 编码载入程序 " 软件已经被轮流 (序列是 R , N , F)]
; CONDUCTOR'S "CODE LOADER" SOFTWARE (SEQUENCE IS R,N,F)
;**** DATA FOR THE REGISTERS R,N AND F, STARTING FROM LOCATION 20H ******[为寄存器 R , N 及 F 的数据, 来自位置 20 H 的出发]
; DATA FOR "R" REGISTER OF PLL******************************[为 " R" PLL 的寄存器的数据]
MOV 20H,#00H
MOV 21H,#00H
MOV 22H,#0A0H ; R=40
;DATA FOR "N" REGISTER OF PLL******************************[为 " N" PLL 的寄存器的数据]
MOV 23H,#10H
MOV 24H,#8BH
MOV 25H,#11H ;N=8900
; DATA TO "FUNCTION LATCH FOR INITIALIZATION" (C1=0, C2=1)*********[数据到 " 功能门闩对于设定初值"(C1=0,C2=1)]
MOV 26H,#00H
MOV 27H,#00H
MOV 28H,#92H ;DIGITAL LOCK DETECT ENABLED, PHASE DETECTOR*****************[ 数传锁发现能够, 状态发现者有两极是积极的]
;POLARITY IS POSITIVE
; THERE ARE 3 STREAMS OF DATA, ONE FOR R, ONE FOR N AND ONE FOR F.*********************[; 有数据的 3条水流, 一对于 R, 一对于 N 及一对于 F。
; 每上述的蒸气让 3个位元组每个。]
; EACH OF THE ABOVE MENTIONED STEAMS HAS 3 BYTES EACH.
;****** DATA IS SENT TO PLL SYNCHRONOUS SERIALLY *****************[数据被送到 PLL 同时的连续地]
;****** USING P1.0 AS CLOCK, P1.1 AS DATA AND P1.2 AS LE *********[以 P1.0 作为克拉克, 如 LE 的如数据及 P1.2 的 P1.1]
MOV R3,#03H ; TOTAL NO. OF DATA STREAMS TO BE SENT******************[数据水流的总号码被送]
; TO THE PLL (ONE FOR "R",ONE FOR "N" AND ONE FOR "F")************[到 PLL( 一对于 " R", 一为 " N" 及一对于 " F")]
MOV R0,#20H ; ADDRESS OF THE FIRST BYTE OF DATA, DATA WAS PUT IN************[数据的第一个位元组的住址, 数据被提出记忆来自位置 20 H 的出发]
; THE MEMORY STARTING FROM LOCATION 20H
STA: MOV R2,#03H ;TOTAL NO. OF DATA BYTES IN ONE STREAM***************[一条水流的数据位元组的总号码]
INIT: MOV R1,#08H ;8 BITS IN ONE DATA BYTE*************[8 一个数据位元组的一点点]
CLR EN ;CLR "LE" PIN OF PLL**************[CLR" LE" PLL 的大头针]
REP: MOV A,@R0 ;DATA BYTE IS TRANSFERRED INTO ACC.*********[数据位元组进入自动燃烧控制之内被转移。]
GOON: MOV C,ACC.7 ;NEXT DATA "BIT" IS PUT ON P1.1*************[下个数据 " 一点点 " 被穿上 P1.1]
MOV DAT,C
RL A ;ROTATE TO PUT DATA THE MOVE THE NEXT DATA BIT TO
;ACC.7 POSITION. SO THAT IT SHOULD BE THE NEXT BIT
;TO BE TRANSMITTED********[替换放数据移动对自动燃烧控制的下数据一点点。7 位置。 以便资讯科技应该是下一点点被传输]
CALL DELAY2
SETB CLOCK ;CLOCK IS TRIGGERED TO LATCH THE DATA******[克拉克被引起以闩栓住数据]
CALL DELAY2
CLR CLOCK
CALL DELAY2
CLR DAT ;DATA BIT IS SET TO LOW AFTER BEING LATCHED**********[数据一点点在被以闩栓住之后被设定成低点]
CALL DELAY2
DJNZ R1,GOON
INC R0
DJNZ R2,INIT ;WHEATHER 3 BYTES OF ONE STREAM GONE?**************[一个的 WHEATHER 3 位元组流出离去?]
SETB EN ;IF YES, TRIGGER "LE" TO LATCH THE DATA
CALL DELAY2 ;TO THE APPROPRIATE REGISTER***********[如果是的,引起 " LE" 以闩栓住对适当的寄存器的数据]
CLR EN
CALL DELAY2
DJNZ R3,STA ;WHEATHER 3 STREAMS OF DATA GONE?**********[;WHEATHER 3 不见了的数据流出?]
JMP IN ;IF YES, THEN RELOAD **********[如果是的, 然后再装货]
;*************** FROM NOW ON DELAYS STARTS ************************[从现在开始延迟开始]
;*************** WHICH HAVE BEEN CALLED THROUGHT THE PROGRAM ******[哪一已经被认为 THROUGHT 是计画]
DELAY1: MOV 72H,#10 ;A DELAY OF 10 msec
MOV 71H,#87
TT1: DJNZ 71H,TT1
DJNZ 72H,TT1
RET
DELAY: MOV 6DH,#180 ;A DELAY OF 100 msec
MOV 6CH,#72
TT: DJNZ 6CH,TT
DJNZ 6DH,TT
RET
DELAY3: MOV 70H,#8 ;A DELAY OF 1 sec
MOV 6FH,#8
MOV 6EH,#236
TT3: DJNZ 6EH,TT3
DJNZ 6FH,TT3
DJNZ 70H,TT3
RET
DELAY4: MOV 6BH,#36 ;A DELAY OF 5 sec
MOV 6AH,#40
MOV 69H,#176
TT4: DJNZ 69H,TT4
DJNZ 6AH,TT4
DJNZ 6BH,TT4
RET
DELAY2: MOV 70H,#43 ; A DELAY OF 0.1 msec
TT2: DJNZ 70H,TT2
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -