Vad som gjorts då? Jo man trycker på en knapp som är kopplad till en ingång så tänds en lysdiod på en annan utgång i c:a 1 sekund. Avancerat till 1000
Nåväl eftersom jag började på noll så tog det cirka 5 timmar. Barnen bråkade också rätt mycket <--skyller på
Sen upptäckte en annan att MPSIM är långt ifrån perfekt och inte överensstämmer med verkligheten allt för mycket.
Men skam den som ger sig till slut fungerade det! Dessutom fuskkikade jag inte på andra utan har själv listat ut varför det aldrig funkade med andra ord så blev det en del
Koden bjuder jag på för den som vågar sig på detta våldsamt avancerade projekt.
Kod: Markera allt
;***************************************************************
	list	p=16F628a
	#include	<p16F628a.inc>
	__CONFIG	_CP_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_OFF &_INTRC_OSC_NOCLKOUT & _MCLRE_ON & _LVP_OFF
	ERRORLEVEL -302
;***************************************************************
z1	equ	2Ah
z2	equ	2Bh
z3	equ	2Ch
;***************************************************************
	org	0x0000
	GOTO	INIT
	NOP
	NOP
	NOP
	NOP
	org	0x0005
INIT
	BANKSEL PORTA	;Select Bank 0
	MOVLW b'111'	;Set W to 00000111
	MOVWF CMCON		;Turn OFF the comparators
	CLRF PORTA		;Initiate PORTA
	CLRF PORTB		;Initiate PORTB
	BANKSEL TRISA	;Select Bank 1
	CLRF TRISA		;Initiate TRISA
	CLRF TRISB		;Initiate TRISA
	MOVLW b'10'		;Set W to 00000010
	MOVWF TRISA		;Which means RA1 as input
	BANKSEL PORTA	;Select Bank 0
	MOVLW	b'1000'	;Set W to 00001000
	MOVWF	PORTB	;Set PORTB to the value stored in W (00001000
	CALL Delay		;Call the delay routine
	CLRF PORTB		;Clear PORTB (turn off the diode)
	
Main
	BTFSC PORTA,1	;If the button is pressed skip the next statement
	GOTO Main		;Repeat
	MOVLW	b'1000'	;Set W to 00001000
	MOVWF	PORTB	;Set PORTB to the value stored in W (00001000
	CALL Delay		;Call the delay routine
	CLRF PORTB		;Clear PORTB (turn off the diode)
	GOTO	Main	;Repeat
;***************************************************************
;***************************************************************
	subtitle	"Delayroutine"
Delay
	movlw	0x5
	movwf	z3
	movlw	D'137'
	movwf	z2
	decfsz	z1,f
	goto	$-1
	decfsz	z2,f
	goto	$-3
	decfsz	z3,f
	goto	$-5
	return
	END
Så kommentarer: Vad är fel och vad är rätt?
				