?? 060406_2
字號:
P1SAVE EQU 70H
AUXR EQU 08EH ;AUXILIARY REGISTER BIT7:T0x12;BIT6:T1x12;BIT5:UARTM0x6
SAVE EQU 30H
save1 EQU 31H
LOOPN EQU 31H
framelength EQU 32H
frequency EQU 33H
SDA BIT P1.1
SCL BIT P1.0
DDSSC BIT P3.5 ;P3.5 AD9835 CHIP SELECT
DDSSK BIT P3.3 ;P3.3 AD9835'S CLOCK
DDSDT BIT P3.4 ;P3.4 AD9835'S DATA
ADCLK bit p3.3
ADDATA BIT P3.4
ADCS1 BIT P3.5
sdata BIT P3.7
D BIT 20H.0 ;RI interrupt 標志
d1 bit 20H.1
D2 BIT 20H.2
E BIT 20H.3 ;FUNCTION2標志
F BIT 20H.4
g bit 20h.5 ;recurrence
H BIT 20H.6 ;function1標志
ORG 0000H
AJMP STAR
ORG 0003H
AJMP WINT0
ORG 000BH
AJMP T0INT
ORG 001BH
ORG 0023H
AJMP SINT
ORG 0040H
;-------------初始化------------------
star:
MOV P1,#0FFH
MOV P3,#0FFH
mov SP,#090H
MOV IE,#10000000B
SETB IT0 ;外部中斷為邊沿觸發(fā)方式,開啟串口中斷
SETB IT1
clr ex0
;clr IE0
;clr IE1
CLR TF0
CLR TR1
clr tr0
MOV TMOD,#22H ;串口的232碼學習
MOV AUXR,#00H
MOV PCON,#00H
MOV TL1,#0ECH
MOV TH1,#0ECH
MOV SCON,#01000000B
MOV TL0,#0A0H
MOV TH0,#0A0H
MOV P1SAVE,#00H
;MOV T2CON,#00H
;MOV TH2,#10H
;MOV ADDSAVE,#00H
CLR TI
CLR D
CLR E
clr d1
CLR G
CLR F
; mov a,#10000100b
;mov a,#10010100b
;---------------------主程序------------------------
main: MOV A,P1
CJNE A,P1SAVE,main1
mov P1SAVE,A
lcall njump
AJMP main
main1: mov P1SAVE,A
;MOV R0,A
LCALL SELECT
lcall njump
AJMP main
;---------------------子程序------------------------
SELECT:
NSELECT: ;time SELECT
JB ACC.3,JUMP1
JB ACC.2,JUMP2
setb F ;00
MOV R7,#0FFH
AJMP funSELECT
JUMP2: MOV R7,#08H ;01
CLR F
AJMP funSELECT
JUMP1: JB ACC.2,JUMP3
CLR F
MOV R7,#10H ;10
AJMP funSELECT
JUMP3: MOV R7,#20H ;11
CLR F
funSELECT: ;function SELECT
JB ACC.7,fun3
JB ACC.6,fun2
;setb h
MOV R6,#00H
AJMP FSELECT
fun2:
;clr h
MOV R6,#01H
AJMP FSELECT
fun3:
JB ACC.6,fun4
;clr h
MOV R6,#02H
mov 40h,#0E0H
mov r0,#40h
LCALL WRITE_DDS ;SLEEP
RET
fun4:
;clr h
MOV R6,#03H
AJMP FSELECT
FSELECT:
mov r5,a ;wake up dds
mov 40h,#0a0H
mov r0,#40h
LCALL WRITE_DDS
; LCALL DELAY2MS1
mov 40h,#0c0H
mov r0,#40h
LCALL WRITE_DDS ;DDS IN EXTERNAL SELECTION
mov a,r5
JB ACC.5,jumpfrequency3M ;frequency SELECT
ajmp frequency1708M
jumpfrequency3M:
ajmp frequency3M
frequency1708M:
jb h,UPDOWN_frequency
JB ACC.4,UPDOWN_frequency ;
; LCALL DELAY2MS1
mov 40h,#33h ; as "0" frequency
MOV 41H,#02H
mov r0,#40h
LCALL WRITE_DDS
; LCALL DELAY2MS1
mov 42h,#22h
MOV 43H,#07H
mov r0,#42h
LCALL WRITE_DDS
; LCALL DELAY2MS1
mov 44h,#31h
mov 45h,#1ch
mov r0,#44h
LCALL WRITE_DDS
; LCALL DELAY2MS1
MOV 46H,#20H
MOV 47H,#72H
mov r0,#46h
LCALL WRITE_DDS
; LCALL DELAY2MS1
mov 48h,#37h ;as "1" frequency
MOV 49H,#02H
mov r0,#48h
LCALL WRITE_DDS
; LCALL DELAY2MS1
mov 4ah,#26h
MOV 4bH,#07H
mov r0,#4ah
LCALL WRITE_DDS
; LCALL DELAY2MS1
mov 4ch,#35h
mov 4dh,#1ch
mov r0,#4ch
LCALL WRITE_DDS
; LCALL DELAY2MS1
MOV 4eH,#24H
MOV 4fH,#72H
mov r0,#4eh
LCALL WRITE_DDS
ret
UPDOWN_frequency:
jb h,UPDOWN_frequency
JB ACC.4,UPDOWN_frequency ;
; LCALL frequency1708M
mov 40h,#33h ; as "0" frequency
MOV 41H,#02H
mov r0,#40h
LCALL WRITE_DDS
; LCALL DELAY2MS1
mov 42h,#22h
MOV 43H,#07H
mov r0,#42h
LCALL WRITE_DDS
; LCALL DELAY2MS1
mov 44h,#31h
mov 45h,#1ch
mov r0,#44h
LCALL WRITE_DDS
; LCALL DELAY2MS1
MOV 46H,#20H
MOV 47H,#72H
mov r0,#46h
LCALL WRITE_DDS
; LCALL DELAY2MS1
mov 48h,#37h ;as "1" frequency
MOV 49H,#02H
mov r0,#48h
LCALL WRITE_DDS
; LCALL DELAY2MS1
mov 4ah,#26h
MOV 4bH,#07H
mov r0,#4ah
LCALL WRITE_DDS
; LCALL DELAY2MS1
mov 4ch,#35h
mov 4dh,#1ch
mov r0,#4ch
LCALL WRITE_DDS
; LCALL DELAY2MS1
MOV 4eH,#24H
MOV 4fH,#72H
mov r0,#4eh
LCALL WRITE_DDS
ret
frequency3M:
JB ACC.4,UPDOWN_frequency1
LCALL DELAY2MS1
mov 40h,#33h ; as "0" frequency
MOV 41H,#02H
mov r0,#40h
LCALL WRITE_DDS
; LCALL DELAY2MS1
mov 42h,#22h
MOV 43H,#0bcH
mov r0,#42h
LCALL WRITE_DDS
; LCALL DELAY2MS1
mov 44h,#31h
mov 45h,#071h
mov r0,#44h
LCALL WRITE_DDS
; LCALL DELAY2MS1
MOV 46H,#20H
MOV 47H,#0c7H
mov r0,#46h
LCALL WRITE_DDS
; LCALL DELAY2MS1
mov 48h,#37h ;as "1" frequency
MOV 49H,#02H
mov r0,#48h
LCALL WRITE_DDS
; LCALL DELAY2MS1
mov 4ah,#26h
MOV 4bH,#0bcH
mov r0,#4ah
LCALL WRITE_DDS
; LCALL DELAY2MS1
mov 4ch,#35h
mov 4dh,#071h
mov r0,#4ch
LCALL WRITE_DDS
; LCALL DELAY2MS1
MOV 4eH,#24H
MOV 4fH,#0c7H
mov r0,#4eh
LCALL WRITE_DDS
ret
UPDOWN_frequency1:
;
JB ACC.4,UPDOWN_frequency1
LCALL DELAY2MS1
mov 40h,#33h ; as "0" frequency
MOV 41H,#02H
mov r0,#40h
LCALL WRITE_DDS
; LCALL DELAY2MS1
mov 42h,#22h
MOV 43H,#0bcH
mov r0,#42h
LCALL WRITE_DDS
; LCALL DELAY2MS1
mov 44h,#31h
mov 45h,#071h
mov r0,#44h
LCALL WRITE_DDS
; LCALL DELAY2MS1
MOV 46H,#20H
MOV 47H,#0c7H
mov r0,#46h
LCALL WRITE_DDS
; LCALL DELAY2MS1
mov 48h,#37h ;as "1" frequency
MOV 49H,#02H
mov r0,#48h
LCALL WRITE_DDS
; LCALL DELAY2MS1
mov 4ah,#26h
MOV 4bH,#0bcH
mov r0,#4ah
LCALL WRITE_DDS
; LCALL DELAY2MS1
mov 4ch,#35h
mov 4dh,#071h
mov r0,#4ch
LCALL WRITE_DDS
; LCALL DELAY2MS1
MOV 4eH,#24H
MOV 4fH,#0c7H
mov r0,#4eh
LCALL WRITE_DDS
ret
;-------------------------------------
njump: ;interface, jump to function programe by parameter
mov a,r6
clr c
rlc a
mov save,a
inc a
MOV DPTR,#JMPTBL
movc a,@a+dptr
push acc
mov a,save
MOVC a,@a+dptr
push acc
ret
JMPTBL:
DW function1
DW function2
DW function3
DW function4
;--------------------------------------
function1: ;UART incept
RET
function2:
MOV 40h,#7Eh
MOV 41h,#29h
MOV 42h,#30h
MOV 43h,#08h
mov 44h,#00h
MOV 45h,#00h
MOV 46h,#00h
MOV 47h,#95h
MOV 48h,#66h
MOV 49h,#7eh
MOV 4ah,#0ffh
MOV r0,#40h
LCALL SENDframe
RET
;SETB EX0
function3:
RET
function4:
CLR ES
CLR E
mov 40h,#08h
mov r3,#08h
mov r1,#41h
fun4loop:
mov @r1,#55h
inc r1
djnz r3,fun4loop
MOV SAVE,R7
fun4senddata:
lcall SENDframe
DJNZ SAVE,fun4senddata
setb sdata
RET
;------sendframe--------- ;判斷接收區(qū)有無數(shù)據(jù)
SENDframe: ;40h framelength 41 framedata
mov a,@r0
mov sbuf,a
INC r0
djnz r3,SENDframe
ret
;-------copy-------------
copy:
MOV R3,60H
INC R3
MOV R1,#60H
MOV R0,#40H
;copy to sendregister
copy_loop:
MOV A,@R1
mov @R0,A
INC R1
INC R0
DJNZ R3,copy_loop
CLR D
ret
FUN3_SENDDATA: ;R0 ADDDR R3 lenth
MOV A,@R0
INC R0
MOV SBUF,A
JNB F,$
clr f
DJNZ R3,FUN3_SENDDATA
RET
;----------interrupt program----------
;----------interrupt program----------
;R5接收最大字節(jié)數(shù) ;debug DDS
SINT:
;CLR ES
JB TI,S_TXD
JNB RI,S_END
S_RXD: CLR RI
MOV A,SBUF
INC R0
MOV @R0,A
SETB D
setb D1 ;D1 RXD標志2
CLR G
clr ti
mov sbuf,a
RETI
S_TXD: CLR TI
SETB D2
S_END: RETI
;-------------------------------------
T0INT:
DEC SP
DEC SP
SETB ES
CLR TR0
RETI
;-------------------------------------
WINT0:
RLC A
MOV SDATA,C
DEC R2
RETI
;-------------------------------------
WRITE_DDS:
CLR DDSSC ;AD9835'S CHIP SELECT ="0"
PUSH ACC
PUSH PSW
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
SETB DDSSK
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -