论坛风格切换切换到宽版
  • 5522阅读
  • 4回复

部分程序源文件请教 [复制链接]

上一主题 下一主题
离线bg6qbt
 
发帖
7257
只看楼主 倒序阅读 0楼 发表于: 2005-06-11
是从网上找到的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
离线xiongjunfeng
发帖
1220
只看该作者 1楼 发表于: 2005-06-12
我写了个9851的控制程序,6波段控制,4种工作模式.用pic16f877a.还有很多其它功能!需要吗?由于没有旋转编码开关,用的是3*4键盘控制的。若需要,我可以给你定制呵!
离线djmodel
只看该作者 2楼 发表于: 2005-06-14
这个是用普通mcs-51汇编语言写的,里面用到了n多伪代码
离线ljchip
发帖
459
只看该作者 3楼 发表于: 2005-06-15
就是用的keil c51的汇编写的。
离线PengPeng0419
发帖
16
只看该作者 4楼 发表于: 2008-03-21
这个注释是用德语写的~!~!