You are on page 1of 3

;adpwm1.

asm

;mikrokontroler C552, przetwornik a/c, modulator PWM obsluga zdarzen za


pomoca statusow

NAME ADPWM1

EXTERN _R

$c:\z\iar\inc\sfr552.inc

$adcon.inc

AADR SET 7 ;numer kanalu przetwornika a/c

MARKER EQU P1.0 ;wskaznik czasu przetwarzania a/c

RSEG CODE

MOV PSW,#_R

MOV SP,#BSTACK-1

MOV ADCON,#AADR ;numer kanalu

MOV PWMP,#255 ;inicjalizacja rejestru skalujacego

SETB MARKER ;stan wysoki - spoczynkowy

AGAIN:MOV A,ADCON

SETB ACC._ADCS ;ustaw bit startu

CLR MARKER ;stan niski - poczatek przetwarzania a/c

MOV ADCON,A ;start przetwarzania

NEOC: MOV A,ADCON

JNB ACC._ADCI,NEOC ;czekaj na koniec przetwarzania a/c

SETB MARKER ;stan wysoki koniec przetwarzania a/c

MOV PWM0,ADCH ;starszy bajt wynikU do modulatora PWM0

CLR ACC._ADCI ;zerowanie ADCI

MOV ADCON,A

SJMP AGAIN

RSEG ISTACK

BSTACK: DS 16

END
;adpwm2.asm

;mikrokontroler 80c552, przetwornik a/c, modulator PWM, kanal szeregowy


obsluga zdarzen za pomoca statusow

NAME ADPWM2

EXTERN _R,INISER,TB,TNH,TBH,TCR

$c:\z\iar\inc\sfr552.inc

$adcon.inc

AADR SET 7 ;numer kanalu

MARKER EQU P1.0 ;wskaznik czasu przetwarzania a/c

RSEG CODE

MOV PSW,#_R

MOV SP,#BSTACK-1

LCALL INISER ;inicjalizacja kanalu szeregowego (1200 bodow, 9 bitow)

MOV ADCON,#AADR ;numer kanalu

MOV PWMP,#255 ;inicjalizacja rejestru skalujacego

MOV A,#' ' ;wyslanie spacji kanalem szeregowym

LCALL TB

LCALL TCR

SETB MARKER ;stan wysoki - spoczynkowy

AGAIN:CLR P1.0

MOV A,ADCON

SETB ACC._ADCS ;start przetwarzania

MOV ADCON,A

NEOC: CLR MARKER ;stan niski - poczatek przetwarzania a/c

MOV A,ADCON

JNB ACC._ADCI,NEOC ;czekaj na koniec przetwarzania

SETB MARKER ;stan wysoki koniec przetwarzania a/c

MOV PWM0,ADCH ;wynik (starszy bajt) do rej. kontrolnego PWM0

MOV A,ADCH ;wynik (starszy bajt) do akumulatora

RL A ;MSB -> LSB


RL A

PUSH ACC ;na stos MSB-2 MSB-3 ..., LSB MSB MSB-1

ANL A,#3 ;w A jest teraz 0 0 0 0 0 0 MSB MSB-1

LCALL TNH ;przeslanie 1-szej cyfry wyniku

POP ACC ;odtworzenie akumulatora

ANL A,#0FCH ;w A jest teraz MSB-2 MSB-3 ..., LSB 0 0

MOV B,A ;A -> B

MOV A,ADCON ;dwa najmniej znaczace bity wyniku przetwarzania z


ADCON

RL A

RL A

ANL A,#3

ORL A,B ;suma logiczna

LCALL TBH ;przeslanie dwoch cyfr wyniku

LCALL TCR

MOV A,ADCON

CLR ACC._ADCI ;zerowanie ADCI

MOV ADCON,A

SJMP AGAIN

RSEG ISTACK

BSTACK: DS 24

END