Newsgroup: it.hobby.elettronica.digitale
Titolo: ST6 Test

Per quanto riguarda la programmazione degli ST6 sono agli inizi e stò
facendo delle prove su un circuito test per ST62E60.
Negli esempi scritti non riesco a realizzare dei programmi semplici ,quali
:premendo PA0 , accendo led PB0 per 5sec.
Oppure un semplice lampeggiatore per led.
Gentilmente qualcuno ha un file.asm per ST62E60 d'esempio che FUNZIONA.!!



questo e' un programma che ho ricavato con un po' di taglia e incolla 
da un altro programma piu' complesso che ho scritto l'anno scorso
(l'ho provato e garantisco che funziona anche se magari non e' la migliore soluzione)
;+--------------------------------------------------------------------------+
;		led.asm - versione 0.1					    
;+--------------------------------------------------------------------------+
		.title  	"LED"
		.vers   	"ST62E60"
;+--------------------------------------------------------------------------+
;		OPZIONI							    
;+--------------------------------------------------------------------------+
		.w_on
;+--------------------------------------------------------------------------+
;		DEFINIZIONI						    
;+--------------------------------------------------------------------------+
A		.def	0ffh	;accumulatore
X		.def	080h	;registro x
Y		.def	081h	;registro y
V		.def	082h	;registro v
W		.def	083h	;registro w
DRA		.def	0c0h	;porta A
DRB		.def	0c1h	;porta B
DRC		.def	0c2h	;porta C
DDRA		.def	0c4h	;direzione porta A
DDRB		.def	0c5h	;direzione porta B
DDRC		.def	0c6h	;direzione porta C
ORA		.def	0cch	;opzioni porta A
ORB		.def	0cdh	;opzioni porta B
ORC		.def	0ceh	;opzioni porta C
IOR		.def	0c8h	;interrupt option register
DWR		.def	0c9h	;data rom window register
ADR		.def	0d0h	;A/D data register
ADCR		.def	0d1h	;A/D control register
TCR		.def	0d3h	;timer counter register
PSCR		.def	0d2h	;timer prescaler register
TSCR		.def	0d4h	;timer status control register
DWDR		.def	0d8h	;watchdog register
ARMCR		.def	0d5h	;auto-reload timer mode control register
ARSC0		.def	0d6h	;auto-reload timer status/control 0 register
ARSC1		.def	0d7h	;auto-reload timer status/control 1 register
ARRCR		.def	0d9h	;auto-reload timer reload/capture register
ARCPR		.def	0dah	;auto-reload timer compare register
ARLDR		.def	0dbh	;auto-reload timer load register
MISCR		.def	0ddh	;miscellaneous register
SPIDSR	.def	0e0h	;spi data register
SPIDIV		.def	0e1h	;spi divide register
SPIMOD	.def	0e2h	;spi mode register
DRBR		.def	0e8h	;data RAM/EEPROM register
EECTL		.def	0eah	;EEPROM control register
OCR		.def	0dch	;oscillator control register
PORTA		.def	084h	;immagine porta A
PORTB		.def	085h	;immagine porta B
PORTC		.def	086h	;immagine porta C
COPYOFA	.def	0a0h
CENTESIMI	.def	0a1h
P1		.def	0
P2		.def	1
P3		.def	2
P4		.def	3
LED0		.def	0
LED1		.def	1
LED2		.def	2
LED3		.def	3
;+--------------------------------------------------------------------------+
;|		CODICE							    |
;+--------------------------------------------------------------------------+
		.org	0080h
; in questo programma il timer viene usato per generare un
; interrupt ogni centesimo di secondo (con un clock di 4Mhz)
; gli interrupt vengono contati e quando e' passato un secondo
; viene commutato lo stato di un led collegato alla porta B
; il led deve accendersi quando la linee va bassa
; due pulsanti connessi alla porta A possono
; essere usati per fermare e avviare il timer
boot		nop
		call	tr_start
		; controlla lo stato dei pulsanti
loop		ld	A,DRA
		jrr	P1,A,button_1
		jrr	P2,A,button_2
		jp	loop
		; attende il rilascio del pulsante e avvia il timer
button_1	call	wait_P1
		call	tr_start
		jp	loop
		; attende il rilascio del pulsante e ferma il timer
button_2	call	wait_P2
		call	tr_stop
		jp	loop
		; attende il rilascio del pulsante
wait_P1		jrr	P1,DRA,wait_P1
		ret
		; attende il rilascio del pulsante
wait_P2		jrr	P2,DRA,wait_P2
		ret
		; avvia il timer
tr_start	ldi	TCR,11010000b
		ldi	TSCR,01101100b
		res	LED1,PORTB
		ld	A,PORTB
		ld	DRB,A
		ret
		; ferma il timer
tr_stop		ldi	TSCR,01100100b
		set	LED1,PORTB
		ld	A,PORTB
		ld	DRB,A
		ret
		; commuta lo stato del led
led_switch	jrs	LED0,PORTB,led_on
		set	LED0,PORTB
		ld	A,PORTB
		ld	DRB,A
		ret
led_on		res	LED0,PORTB
		ld	A,PORTB
		ld	DRB,A
		ret
;+--------------------------------------------------------------------------+
;		ROUTINE DI INTERRUPT					    
;+--------------------------------------------------------------------------+
reset		ldi	IOR,00000000b
		ldi	DDRA,00000000b
		ldi	ORA,00001111b
		ldi	DRA,00000000b
		ldi	DDRB,00001111b
		ldi	ORB,00000000b
		ldi	DRB,00001111b
		ldi	DDRC,00000000b
		ldi	ORC,00000000b
		ldi	DRC,00000000b
		ldi	PORTA,00000000b
		ldi	PORTB,00001111b
		ldi	PORTC,00000000b
		ldi	IOR,00010000b
		reti
		jp	boot
tr_int		ld	COPYOFA,A
		inc	CENTESIMI
		ld	A,CENTESIMI
		cpi	A,100
		jrnz	tr_end
		ldi	CENTESIMI,0
		call	led_switch
tr_end		call	tr_start
		ld	A,COPYOFA
		reti
null		reti
nmi		reti
;+--------------------------------------------------------------------------+
;		VETTORI DI INTERRUPT					    
;+--------------------------------------------------------------------------+
		.org	0ff0h
		jp	tr_int	     ;interrupt del A/D converter e del Timer
		jp	null	     ;interrupt del Auto-Reload Timer
		jp	null	     ;interrupt delle porte C e SPI
		jp	null	     ;interrupt delle porte A e B
		.org	0ffch
		jp	nmi
		jp	reset
		.end
;+--------------------------------------------------------------------------+
;									    
;+--------------------------------------------------------------------------+
_______________________________________
http://jame.sourceforge.net
 
[ last release jame4.1c ]
_______________________________________
http://digilander.iol.it/schiele

 ha scritto nel messaggio
news:Ny8d7.704$6F5....@news1.tin.it...
