; 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, # FDh ; Reloadwert für Baudrate 19200 setb TR1 ; Timer 1 Start ; Interrupts setb ES ; seriellen Interrupt freigeben setb EA clr empfang mov chan_0,#63h mov chan_1,#1h mov chan_2,#1h mov chan_3,#1h 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: