logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Sprawdzenie poprawności składni kodu Assembler '51 - czy jest poprawny?

.krzychos7 25 Lut 2009 21:02 1511 1
  • #1 6204460
    .krzychos7
    Poziom 11  
    Posty: 29
    Witam czy mógłby ktoś sprawdzić poprawność kodu Assembler '51? Czy składnia jest ok?

    WDTCN DATA 0FFH ; WATCHDOG TIMER CONTROL
    AMX0CF DATA 0BAH ; ADC 0 MUX CONFIGURATION
    AMX0SL DATA 0BBH ; ADC 0 MUX CHANNEL SELECTION
    ADC0CN DATA 0E8H ; ADC 0 CONTROL
    ADC0H DATA 0BFH ; ADC 0 DATA - HIGH BYTE
    REF0CN DATA 0D1H ; VOLTAGE REFERENCE 0 CONTROL
    ADC0CF DATA 0BCH ; ADC 0 CONFIGURATION
    IE DATA 0A8H
    EA BIT IE.7
    ADBUSY BIT ADC0CN.4
    
    
    
    DELAY_TEMP EQU 00H ; Deklaracja stalej pomocniczej do funkcji opozn.
    P4 DATA 84H ; Adres portu P4 (bo do P4 jest podlaczona dioda D2)
    
    CSEG AT 0 ; Ustawienie offsetu dla kodu programu (lub ORG 0 )
    LJMP MAIN ; Bezwarunkowy skok do etykiety MAIN
    
    MAIN: ; Poczatek programu glownego
    
    ;-------- wylaczenie watchdoga ----------------------
    CLR EA ; Wylaczenie wszystkich przerwan
    MOV WDTCN,#0DEh
    MOV WDTCN,#0ADh
    SETB EA ; Wlaczenie zezwolenia na przerwania
    ;----------------------------------------------------
    
    ; Ustawienie rejestrow przetwornika ADC
    MOV AMX0CF,#00H        ; Ustawienie rejestru konfiguracyjnego
    MOV AMX0SL,#00H        ; Ustawienie rejestru wyboru portu AIN0
    MOV ADC0CF,#00H        ; Ustawienie rejestru        wzmocnienia G=1
    MOV ADC0CN,#10000001B        ; Ustawienie rejestru        kontrolnego przetwornika ADC
    ; bit 7 - Przetwornik aktywny i gotowy do przetwarzania
    ; bit 0 - Dane w rejestrze ADC0H sa wyrownane do lewej strony
    MOV REF0CN,#00000010B        ; Ustawienie rejestru napiecia referencyjnego bitu
    WOJ:
    ORL ADC0CN,#00010000B        ; Ustawienie bitu AD0BUSY na 1 - przetwarzanie danych
    XRL P4,#02H ; Negacja stanu linii nr 1 portu P4
    MOV A,ADC0H ; Ustawienie wartosci parametru funkcji DELAY
    LCALL DELAY ; Wywolanie funkcji opozniajacej
    JB ADBUSY,$        ; Petla skoku przez siebie
    JMP WOJ ; Skok bezwarunkowy do etykiety WOJ
    
    
    
    ; Funkcje pomocnicze
    
    DELAY:
    ;----------------------------------------------------------------------------
    ; Procedura opozniajaca, wartosc opoznienia regulowana przez parametr
    ; zapisany w rejestrze A
    ;----------------------------------------------------------------------------
    PUSH 0 ; zapis rejestru R0 (z banku 0) na stos
    PUSH 1
    MOV R0,A
    
    LOOP_DELAY:
    MOV R1,#DELAY_TEMP
    DJNZ R1,$
    MOV R1,#DELAY_TEMP
    DJNZ R1,$
    DJNZ R0,LOOP_DELAY
    
    POP 1 ; odczyt ze stosu rejestru R1
    POP 0
    RET ; powrot z funkcji
    
    END


    Pytania dotyczące programowania mikrokontrolerów proszę zadawać w dziale Mikrokontrolery.
    Przeniosłem z Programowanie początkujący.
    [Dr.Vee]
  • #2 6208256
    adamwesola
    Poziom 24  
    Posty: 499
    Pomógł: 71
    Ocena: 22
    Poprawność kodu ? składni ? jeżeli asembler nie wywala błędu to jest ok, co nie znaczy że pod względem merytorycznym jest ok, a to sam wiesz najlepiej.
REKLAMA