Vai al contenuto
PLC Forum


Programmare In Assembler Un At90s4433


gntd

Messaggi consigliati

Salve,

sono uno studente di elettronica, che dovrà presentare in occasione degli esami di maturità un microprocessore che con il sensore di temperatura LM335 a monte ha la funzione di trasmettere ad un lcd la temperatura. Il tutto è pronto ... ma mi manca la programmazione in assembler. Il microprocessore è un AT90S4433. Potreste darmi una mano. GRAZIEEEEEEE!

Link al commento
Condividi su altri siti


Se ti manca il programma ancora oggi, addì 19-06-06 la vedo brutta per te, a meno che tu non stia preparando la maturità del 2007 :lol:

Per curiosità cosa ti serve? Hai fatto mniente? Non crederai di trovare qualcuno che fa la tesina al posto tuo!

Link al commento
Condividi su altri siti

I due programmi di trasmissione e ricezione ci sono già ..

Visto e considerato che il microprocessore ,dai miei professori trattato ST6210, non si trova proprio , non sò se si possono utilizzare in parte o adattare i programmi suddetti al microprocessore in questione .. l'at90s4433 , che ho .

Grazie ancora per l'interessamento..

-------------------------------------------------------------

CONVERSIONE ADC E TRASMISSIONE DEL DATO

.title "ADC+tx" ; Titolo del programma

.vers "ST62E10" ; Microprocessore usato

; 8 Mhz ; 01/06/2006

ldi wdog,0ffh ; Carico il Watch-Dog.

; Setta la porta A

ldi pdir_a,00000001b ;out solo pa0 TX

ldi popt_a,00000001b

ldi port_a,00000001b

; Setta la porta B

ldi pdir_b,00000000b ;tutti input

ldi popt_b,00000001b ;verrà usato solo pb0 come ADC

ldi port_b,00000001b

;PROGRAMMA PRINCIPALE

main ldi wdog,255

ldi adcr,00110000b ;abilita A/D ( su pb0)

att jrr 6,adcr,att ;attende conversione

ld a,addr ;mette in a il valore convertito

res 1,port_a ;sincronismo per l'oscilloscopio

nop ;piccolo ritardo

set 1,port_a ;l'impulso torna alto

ldi wdog,255

ldi x,8 ;numero dei bit da tx

unbit rlc a ;ruota nrl cy il bit 7 del byte

jrnc zero ;se cy=0 salta a zero

jp uno ;se cy=1 salta a uno

zero set 0,port_a ;mette linea=1

ldi w,6 ;resta a 1 per 1/4 T

decw dec w

jrnz decw

res 0,port_a ;mette linea=0

ldi w,19 ;resta a 0 per 3/4 T

dew dec w

jrnz dew

jp decx

uno set 0,port_a ;lineaa=1

ldi w,19 ;resta per 3/4 T

decc dec w

jrnz decc

res 0,port_a ;lineaa=0

ldi w,6 ;resta a 0 per 1/4 T

decw_ dec w

jrnz decw_

decx dec x

jrz ldiw ;se i bit tx sono 8 ritorna

jp unbit ;altrimenti ne prende un altro

ldiw ldi w,35 ;pausa fra byte = circa 2T

duet ldi wdog,255

dec w

jrnz duet

jp main ;altro byte

-------------------------------------------

.title "RX+display" ; Titolo del programma

.vers "ST62E10" ; Microprocessore usato

; 8 Mhz ; 01/06/2006

aa .def 084h

decimi .def 085h

unita .def 086h

decine .def 087h

resto .def 088h

risul .def 089h

xx .def 08ah

;*** Setta la porta A

ldi pdir_a,11111111b ;dipsonibili solo pa0,1,2,3 verso CA3161

ldi popt_a,11111111b ; tutti ouput

ldi port_a,11111111b

;*** Setta la porta B

ldi pdir_b,00000111b ;pa0,1,2 output

ldi popt_b,00000111b ;pb3 in rx

ldi port_b,00000111b ; rimanenti non utilizzati conf. input

media add a,resto ;somma il precedente valore con il nuovo

jrnc etic2 ;se non c’è riporto salta

inc risul ;altrimenti incrementa

etic2 ld resto,a

ld a,xx ;verifica se ha eseguito 255 conversioni

jrz etic4 ;se si salta

dec xx ;altrimenti un conversione in meno

ret

etic4 ld a,resto ;arrotonda

cpi a,127

jrc etic3 ;se a é minore salta e continua a sottrarre

inc risul ;altrimenti arrotonda incrementando risul

etic3 ld a,risul ;valore mediato 255 volte va in a

ldi xx,5

call div

ld a,resto

sla a ;moltiplica per 2

ld decimi,a

ld a,risul

ldi xx,10

call div

cpi a,0

jrnz no0

ldi a,15

no0 ld decine,a

ld a,resto

ld unita,a

clr resto

clr risul

ldi xx,255

ret

div clr w

ldi wdog,255

cp a,xx ;se a< div salta

jrc ok

sub_ sub a,xx ;sottrae x ad a

inc w ;conta quante volte ci sta x in a

ldi wdog,255

cp a,xx

jrnc sub_ ;se a >= salta e continua a sottrarre

ok ld resto,a ;resto UNITA

ld a,w ;risultato

ld risul,a ;DECINE

ret

;DISPLAY

mux ld aa,a

ldi port_b,00001111b ;spegne display

ld a,v

cpi a,0

jrnz uno_

ld a,decimi

ld port_a,a

ldi port_b,0001011b

jp normal

uno_ cpi a,1

jrnz due

ld a,unita

ld port_a,a

ldi port_b,00001101b

jp normal

due ld a,decine

ld port_a,a

ldi port_b,0001110b

ldi v,255

normal inc v

ld a,aa

ret

;PROGRAMMA PRINCIPALE RX

main clr resto

clr risul

ldi xx,255

main_ ldi wdog,255 ;RICEVE UN BYTE

ldi w,25 ;resta in questo loop fino a che input

testa jrs 3,port_b,main_ ;da alto torna basso e permane + di un T

dec w ;per assicurarsi che sia un nuovo byte

jrnz testa

ldi x,8 ;numero bit da ricevere x confronto

rx ldi wdog,255

jrr 3,port_b,rx

call mux

ldi w,6 ;predispone per la campionatura a 1/2 T

decr dec w

jrnz decr

jrr 3,port_b,zero ;se dopo 1/2 T e` 0 salta

uno set 0,a ;altrimenti setta bit0 di a

dec x ;conta un bit ricevuto

jrz out ;se sono finiti salta

sla a ;altrimenti sposta a sinistra bit0 e prepara

resta jrs 3,port_b,resta ;per il prossimo

jp rx ;se linea =1 resta altrimenti input

out call media

jp main_ ;ricomincia per altro byte

zero res 0,a ;bit0= 0

dec x

jrnz slaa

jp out ;se sono finiti salta

slaa sla a ;altrimenti sposta a sinistra e libera x prossimo

jp rx ;ne aspetta un altro

Link al commento
Condividi su altri siti

per programmare i controllori atmel ci vuole AVRStudio per la compilazione, e PonyProg per la programmazione. Naturalmente devi avere interfaccia USB, o seriale, o parallela per connetterti al computer. ciao

Link al commento
Condividi su altri siti

Sono già in pèossesso degli strumenti di compilazione e programmazione.. mi serve solo sapere se i due programmi sono adatti per il microprocessore o è necessaria qualche modifica...

Link al commento
Condividi su altri siti

Se ci pensi un attimo hai la risposta... Ti pare che, tanto per fare un esempio, che le istruzioni assembler possano tutte e quante essere identiche? Quello che puoi fare è , manuale ST6 e manuale ATMEL alla mano, tradurre il programma e poi compilarlo e debuggarlo...

Saluti

Modificato: da omar
Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...