?? grdtx8.asm
字號:
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
NOP
NOP
AJMP STAR
ORG 000BH
AJMP T0INT
ORG 001BH
NOP
NOP
AJMP STAR
ORG 0023H
NOP
NOP
AJMP STAR
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,#40H
MOV PCON,#00H
MOV TL1,#0FbH
MOV TH1,#0FbH
MOV SCON,#01000000B
MOV TL0,#0e8H
MOV TH0,#0e8H
MOV P1SAVE,#00H
;MOV T2CON,#00H
;MOV TH2,#10H
;MOV ADDSAVE,#00H
CLR C
CLR TI
CLR D
CLR E
clr d1
CLR G
CLR F
; mov a,#10000100b
mov 40h,#0a0H ;wake up dds
mov r0,#40h
LCALL WRITE_DDS
; LCALL DELAY2MS1
mov 40h,#0c0H
mov r0,#40h
LCALL WRITE_DDS ;DDS IN EXTERNAL SELECTION
mov 40h,#33h ; as "0" frequency
MOV 41H,#18H
mov r0,#40h
LCALL WRITE_DDS
; LCALL DELAY2MS1
mov 42h,#22h
MOV 43H,#2aH
mov r0,#42h
LCALL WRITE_DDS
; LCALL DELAY2MS1
mov 44h,#31h
mov 45h,#0aah
mov r0,#44h
LCALL WRITE_DDS
MOV 46H,#20H
MOV 47H,#0abH
mov r0,#46h
LCALL WRITE_DDS
; LCALL DELAY2MS1
mov 48h,#37h ;as "1" frequency
MOV 49H,#17H
mov r0,#48h
LCALL WRITE_DDS
; LCALL DELAY2MS1
mov 4ah,#26h
MOV 4bH,#047H
mov r0,#4ah
LCALL WRITE_DDS
; LCALL DELAY2MS1
mov 4ch,#35h
mov 4dh,#01ch
mov r0,#4ch
LCALL WRITE_DDS
; LCALL DELAY2MS1
MOV 4eH,#24H
MOV 4fH,#072H
mov r0,#4eh
LCALL WRITE_DDS
;---------------------主程序------------------------
main:
LCALL function
AJMP main
;---------------------子程序------------------------
function:
MOV R0,#40H
MOV R5,#00H
MOV A,R5
MOV DPTR,#CDOETB
MOVC A,@A+DPTR
MOV @R0,A
MOV R4,40H
function_LOOP:
INC R5
MOV A,R5
MOVC A,@A+DPTR
INC R0
MOV @R0,A
DJNZ R4,function_LOOP
fun4senddata:
lcall SENDframe
setb sdata
RET
;------sendframe--------- ;判斷接收區(qū)有無數(shù)據(jù)
SENDframe: ;40h framelength 41 framedata
SETB ET0
MOV R3,40H
MOV R1,#41H
SENDframe1:
MOV A,@R1
INC R1
SETB TR0
JNB D,$
CLR D
DJNZ R3,SENDframe1
CLR TR0
ret
;----------interrupt program----------
;----------interrupt program----------
;R5接收最大字節(jié)數(shù) ;debug DDS
;-------------------------------------
T0INT:
MOV R2,#08H
CLR TF0
T0_LOOP:
RLC A
MOV SDATA,C
DJNZ R2,T0_LOOP1
SETB D
RETI
T0_LOOP1:
JNB TF0,$
CLR TF0
AJMP T0_LOOP
;-------------------------------------
;-------------------------------------
WRITE_DDS:
CLR DDSSC ;AD9835'S CHIP SELECT ="0"
PUSH ACC
PUSH PSW
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
SETB DDSSK
MOV R3, #8
DSSENT2:MOV A, @R0 ;R0=SENT DATA BUFFER POINTER
RLC A
MOV DDSDT, C
NOP
NOP
NOP
NOP
MOV @R0, A
CLR DDSSK
NOP
NOP
NOP
NOP
NOP
SETB DDSSK
NOP
NOP
NOP
NOP
NOP
DJNZ R3, DSSENT2
INC R0
MOV R3, #8
DSSENT3:MOV A, @R0
RLC A
MOV DDSDT, C
MOV @R0, A
NOP
NOP
NOP
NOP
CLR DDSSK
NOP
NOP
NOP
NOP
SETB DDSSK
NOP
NOP
NOP
NOP
DJNZ R3, DSSENT3
SETB DDSSC
POP PSW
POP ACC
RET
;**********************************************
CDOETB: DB 0BH,0x7E,0x29,0x30,0x08,0x00,0x00,0x00,0x95,0x66, 0x7E,0xFF ; P3 R 8
;**********************************************
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -