; 09.01.2003 18:40:53
#cpu = 80C31 ; @3,5976 MHz
#bit Empfang,Sendebusy
#byte chan_0=7fh, chan_1=7eh, chan_2=7dh, chan_3=7ch
#byte pattern_0=7ah, pattern_1=79h, pattern_2=78h, pattern_3=77h
#byte overhead=7bh
#byte save_akku
ajmp Initialisierung
SINT: ; serieller Interrupt
ajmp Serieller Interrupt
Initialisierung:
; Serieller Port
mov SCON, # D0h ; Modus 3, asynchron, 11 Bit, Baudrate Timer 1 Überlauf, Datenempfang freigeben
mov TMOD, # 20h ; Timer 1 Autoreloadmodus
mov TH1, # FCh ; Reloadwert für Baudrate 2342,188
setb TR1 ; Timer 1 Start
; Interrupts
setb ES ; seriellen Interrupt freigeben
setb EA
clr empfang
mov chan_0,#fh
mov chan_1,#fh
mov chan_2,#fh
mov chan_3,#36h
mov overhead,#1h
mov pattern_0, #f8h
mov pattern_1, #fch
mov pattern_2, #feh
mov pattern_3, #ffh
mov r7,#0h
;mov dptr, #copyr
;s1:
;clr a
;movc a, @a+dptr
;inc dptr
;if a=#00h
; jmp ende
;end if
;mov sbuf, a
;loop while not bit ti
;end loop
;acall warten
;jmp s1
ende:
mov p1,#f0h
main:
mov r0,chan_0
for r0
next
mov p1, pattern_0
mov r0, chan_1
for r0
next
mov p1, pattern_1
mov r0, chan_2
for r0
next
mov p1, pattern_2
mov r0, chan_3
for r0
next
mov p1, pattern_3
mov r0, overhead
for r0
next
mov p1,#f0h
jb empfang, get_data
jmp main
get_data:
mov p1, #ffh
clr Empfang
acall Serielle Daten auswerten
if a=#00h
; mov r7,#0h
jmp status_senden
end if
mov save_akku,a
if r7=#0h
mov r7,#9h
end if
mov a, #80h
subb a,r7
mov r1,a
mov a, save_akku
mov @r1,a
clr EA
mov a, r7
mov sbuf, a
loop while not bit ti
end loop
acall warten
dec r7
setb EA
jmp main
status_senden:
clr EA
mov r6,#9h
for r6
mov a, #80h
subb a, r6
mov r1, a
mov a, @r1
mov sbuf, a
loop while not bit ti
end loop
acall warten
next
setb EA
jmp main
Serielle Daten auswerten:
mov a, SBUF
; weitere Befehle
ret
Sende: ; Sendewert in a
jb Sendebusy, hier ; auf Sendefreigabe warten
mov SBUF, a
setb Sendebusy
ret
Serieller Interrupt:
; Herkunft ermitteln
if bit TI then ; Senden
clr TI
clr Sendebusy
else ; Empfangen
clr RI
setb Empfang
end if
reti
warten:
mov r2,#3h
for r2
mov r3,#ffh
for r3
next
next
ret
copyr:
DB '**** 4 Channel PWM Fan Control *******',10h
DB '(c) 2003 Hardware by Runni --- Software by elHakim',10h
DB 00h
copyend: