是从网上找到的dds控制程序,有波段控制和工作模式控制功能,之所以想使用主要是能控制的波段多,但我不知源文件是用什么语言写的.............而且不是英文注释.
$include (e:\sa80535\inc\reg80535.inc)
$include (e:\sa80535\inc\reg89c52.inc)
;---------------------------------------------------------------------------
;###########################################################################
;alle einsprungadressen definieren
;das code-segment genau definieren
cseg
org 0
ljmp start ;einsprung in den start des programmes
org 03h ;hier liegen die interrupteinspruenge
ljmp intext0
org 0bh
ljmp inttimer0
org 13h
ljmp intext1
org 1bh
ljmp inttimer1
org 23h
ljmp intrs232
org 2bh
ljmp inttimer2
org 43h
ljmp intadwandler
org 4bh
ljmp intext2
org 53h
ljmp intext3
org 5bh
ljmp intext4
org 63h
ljmp intext5
org 6bh
ljmp intext6
;--------------------------------------------------------------------
org 6eh ;erste freie adresse nach inteinspruengen
;------------------------------------------------------------------
;das interne data-segement definieren
dseg
org 30h
;------------------------------------------------------------------
;das interne bit-segement definieren
bseg
org 0h
;###################################################
;
;hier werden alle include-files eingefuegt !!!!!
;
$include (e:\sa80535\inc\lcd3.inc)
$include (e:\sa80535\inc\eeprom2.inc)
$include (e:\sa80535\inc\tasten2.inc)
;flags und bytes zur programmsteuerung
;
flag0 equ 20h ;adressen interner ram fuer flags
flag1 equ 21h ;zum abspeichern im eeprom
bseg
bzfablageperm dbit 1 ;merkbit ob zfablage immer aktiv
beeprom dbit 1 ;merkbit ob eeprom vorhanden ist
beeprominit dbit 1 ;merkbit ob eeprom initialisiert ist
btonein dbit 1 ;bit fuer ton ein
bseitenband dbit 1 ;1=oberes 0=unteres
bmenu dbit 1 ;ob im menu der drehgeber betaetigt wurde
bfast dbit 1 ;ob fastabstimmung ein
bfrequae dbit 1 ;ob sich frequenz geaendert hat
bnolock dbit 1 ;bit ein lock geleoscht
bkeyer dbit 1 ;ob keyer eingeschaltet ist
bisfrqa dbit 1 ;ob frequenz a aktiv ist
bsplit dbit 1 ;ob splitbetrieb
brit dbit 1 ;ob rit eingeschaltet
bpunkt dbit 1 ;bit ob punktpaddel gedrueckt war
bstrich dbit 1 ;bit ob strichpaddel gedrueckt war
bspeicher dbit 1 ;bit ob punktspeicher aktiv
bup160m dbit 1 ;
bup80m dbit 1 ;
bup40m dbit 1 ;
bup30m dbit 1 ;
bup20m dbit 1 ;
bup17m dbit 1 ;
bup15m dbit 1 ;
bup12m dbit 1 ;
bup10m dbit 1 ;
bmesssender dbit 1 ;messsendermode ist eingeschaltet
bbandgrenzen dbit 1 ;bandgrenzenkontrolle
bfsk dbit 1 ;ob fsk
bfskshift dbit 1 ;ob bei fsk shift noch aktiv ist
bbandumsch dbit 1 ;ob aktive bandumschaltung
bzfneulesen dbit 1 ;ob zf neu aus dem eeprom geladen werden muss
brevers dbit 1 ;fsk revers
bkeyerread dbit 1 ;merker fuer lesen des keyermoduses
;nachladen bei wechsel zu cw
bwobbeln dbit 1 ;merkbit zum signalisieren auf lcd
bitc dbit 1 ;merker fuer c-bit
dseg
fmtrx ds 4 ;frequenzdoppelword fuer ad9850 empfang
fmttx ds 4 ;frequenzdoppelword fuer ad9850 senden
fmttx1 ds 4 ;frequenzdoppelword senden + 150 hz
fmtzw ds 4 ;zwischenspeicher der frequenz
bcdfrequenza ds 4 ;frequenz a als bcd-wert
bcdfrequenzb ds 4 ;frequenz a als bcd-wert
bcddds ds 4 ;frequenz die in den dds geladen wird
bcdzf ds 4 ;zwischenfrequenz
uebertrag ds 1 ;uebertrag beim multiplizieren
impulse ds 1 ;impulse des drehgebers
bcdimpulse ds 4 ;zw.speicher fuer imp.in bcd-darstellung
step ds 1 ;frequenzspruenge 0..9 = 10,20,50,100
;200,500,1000,100000 hz
menutaste1 ds 1 ;zaehler fuer menu taste 1
menutaste2 ds 1 ;zaehler fuer menu taste 2
menutaste3 ds 1 ;zaehler fuer menu taste 3
menutaste4 ds 1 ;zaehler fuer menu taste 4
band ds 1 ;band 0 - 10 = 160m - 10m,6m,2m,11 = messender
tonhoehe ds 1 ;0=400,1=500,2=600,3=700,4=800,5=900,6=1000hz
tsenderaus ds 1 ;wert fuer zeit x 10msek
tlock ds 1 ;wert fuer zeit x 10msek
timersenderaus ds 1 ;timer fuer senderrelais verzoegert aus
timerlock ds 1 ;timer fuer lock
timerton ds 1 ;timer fuer tonausgabe
templaenge equ 12
temp ds templaenge;temporaerer speicher
geschw ds 1 ;speicher fuer keyergeschwindigkeit
punktspeicher ds 1 ;0=0 1=25 2=50 3=75 4=100 prozent
betriebsart ds 1 ;
ramende ds 1 ;markierung fuer ramende beginn des stacks
;------------------------------------------------------------------
;
bseg
bnonull dbit 1
cseg
%*define (writexyohnenull(x, y, puffer))
local bcdon1 bcdon2 bcdon3 bcdon4 bcdon5 bcdon6(
mov a,#(%x-1) + ((%y-1) * 40h)
call lcdpos
mov a,%puffer
clr bnonull
call writepuffer
)
cseg
start:
call ddsinit ;ad9850 initialisieren
mov r0,#0 ;internen ram loeschen
clr a
st1:
mov @r0,a
inc r0
cjne r0,#80h,st1 ;nur die ersten 128 byte
;sperren der interrups mc-abhaengig
%interruptsperren
mov psw,#0
mov sp,#ramende ;stack an das ramende legen
;lcd initialisieren mit macro
call tastestatus ;abfangen der poweron-funktionen
cjne a,#3,st2 ;? taste 3
%writestrxy(1,1,'eeprom wird')
%writestrxy(1,2,'geloescht')
call tasteinput
mov dptr,#0 ;1 loeschen des eeproms
st3:
mov a,#0ffh
call eewrite
inc dptr
mov a,dph