;*** PWM krmiljenje koracnika - S53MV 27.08.2016 ***

;*** Konstante mikrokrmilnika LPC2138/01 ***
KVARC	EQU	14745600	;frekvenca kristala (Hz)
CLK	EQU	KVARC*4		;frekvenca jedra ARM (PLL)
PCLK	EQU	CLK/2		;frekvenca vhodno/izhodnih enot (APBDIV)
BAUD	EQU	PCLK/153600	;modulo deljenja UART za 9600bps*16
N1US	EQU	CLK/3000000	;konstanta cakanja T1US za HD44780

;*** Vhodno/izhodni prikljucki LPC2138/01 ***
;/RESET - vhod vezan na /ERROR.LP2951 in na /DTR.FT231XS
;P0.0/TXD0/PWM1 - izhod vezan na RXD.FT231XS 
;P0.1/RXD0/PWM3/EINT0 - vhod vezan na TXD.FT231XS
;P0.2.od/SCL0/CAP0.0 -
;P0.3.od/SDA0/MAT0.0/EINT1 -
;P0.4/SCK0/CAP0.1/AD0.6 -
;P0.5/MISO0/MAT0.1/AD0.7 -
;P0.6/MOSI0/CAP0.2/AD1.0 -
;P0.7/SSEL0/PWM2/EINT2 - izhod PWM skupni
;P0.8/TXD1/PWM4/AD1.1 - izhod PWM navitje 1
;P0.9/RXD1/PWM6/EINT3 - izhod PWM navitje 2
;P0.10/RTS1/CAP1.0/AD1.2 -
;P0.11.od/CTS1/CAP1.1/SCL1 -
;P0.12/DSR1/MAT1.0/AD1.3 -
;P0.13/DTR1/MAT1.1/AD1.4 -
;P0.14.od/DCD1/EINT1/SDA1/BOOTLOADER(!) - vhod vezan na /RTS.FT231XS 
;P0.15/RI1/EINT2/AD1.5 -
;P0.16-23 - digitalni izhodi za LCD D0-7.HD44780
;P0.24 - ne obstaja ***
;P0.25/AD0.4/AOUT -
;P0.26/AD0.5 -
;P0.27/AD0.0/CAP0.1/MAT0.1 -
;P0.28/AD0.1/CAP0.2/MAT0.2 -
;P0.29/AD0.2/CAP0.3/MAT0.3 -
;P0.30/AD0.3/EINT3/CAP0.0 -
;P0.31(!) - nepovezan ***
;P1.0-15 - ne obstajajo ***
;P1.16-19 - vhodi z vgrajenim PULL-UP za tipke na maso
;P1.20(!) - nepovezan ***
;P1.21 - digitalni izhod za LCD RS.HD44780
;P1.22-25 - nepovezani ***
;P1.26(!) - nepovezan ***
;P1.27-29 - nepovezani ***
;P1.30 - digitalni izhod za LCD E.HD44780
;P1.31 - nepovezan ***

;*** Dodelitev pomnilnika RAM ***
SKLAD	EQU	0x40000100	;sklad raste navzdol -256byte

;*** Ukazi za delovanje zbirnika ARM ***
	AREA	RESET, CODE, READONLY, ALIGN=9
	ENTRY
	CODE32

;*** Tabela izjem na zacetnem naslovu 0 ***
IZJEME	B	ZACNI	;RESET
	B	IZJEME	;Undef
	B	IZJEME	;SWI
	B	IZJEME	;PAbt
	B	IZJEME	;DAbt
	NOP		;Reserved Vector
	B	IZJEME	;IRQ
	B	IZJEME	;FIQ

;*** Pocisti pomnilnik do nevarne lokacije 0x000001FC ***
	ALIGN	512

;*** Inicializiraj MAM *** (R0-1)
MAM	LDR	R0,=0xE01FC000	;MAMCR=0
	MOV	R1,#0
	STRB	R1,[R0]
	LDR	R0,=0xE01FC004	;MAMTIM=3
	MOV	R1,#3
	STRB	R1,[R0]
	LDR	R0,=0xE01FC000	;MAMCR=2
	MOV	R1,#2
	STRB	R1,[R0]
	MOV	PC,LR
	LTORG

;*** Nastavi PCONP in APBDIV *** (R0-1)
PWRCLK	LDR	R0,=0xE01FC0C4	;PCONP
	LDR	R1,=0x00000028	;UART0,PWM0
	STR	R1,[R0]
	LDR	R0,=0xE01FC100	;APBDIV=2
	MOV	R1,#2
	STRB	R1,[R0]
	MOV	PC,LR
	LTORG

;*** Inicializiraj PLL *** (R0-2)
PLL	LDR	R0,=0xE01FC084	;PLLCFG=0x24 P=2,M-1=3
	MOV	R1,#0x23
	STRB	R1,[R0]
	LDR	R0,=0xE01FC080	;PLLCON=0x01 PLL-enable
	MOV	R1,#0x01
	STRB	R1,[R0]
	LDR	R0,=0xE01FC08C	;PLLFEED
	MOV	R1,#0xAA
	MOV	R2,#0x55
	STRB	R1,[R0]
	STRB	R2,[R0]
PLL1	LDR	R0,=0xE01FC088	;PLLSTAT cakanje uklenitve
	LDR	R1,[R0]
	ANDS	R1,R1,#0x400
	BEQ	PLL1
	LDR	R0,=0xE01FC080	;PLLCON=0x03 PLL-enable&connect
	MOV	R1,#0x03
	STRB	R1,[R0]
	LDR	R0,=0xE01FC08C	;PLLFEED
	MOV	R1,#0xAA
	MOV	R2,#0x55
	STRB	R1,[R0]
	STRB	R2,[R0]
	MOV	PC,LR
	LTORG

;*** Inicializiraj GPIO in DAC *** (R0-1)
GPIO	LDR	R0,=0xE002C000	;PINSEL0 P0.0-1=UART0 P0.7-9=PWM
	LDR	R1,=0x000A8005
	STR	R1,[R0]
	LDR	R0,=0xE002C004	;PINSEL1 P0.25=AOUT
	LDR	R1,=0x00080000
	STR	R1,[R0]
	LDR	R0,=0xE002C014	;PINSEL2 izklop JTAG&TRACE
	LDR	R1,[R0]
	BIC	R1,R1,#0x0C
	STR	R1,[R0]
	LDR	R0,=0xE01FC1A0	;SCS=0x03 high-speed GPIO 0&1
	MOV	R1,#0x03
	STR	R1,[R0]
	LDR	R0,=0x3FFFC014	;FIO0PIN vsi 1
	MOV	R1,#-1
	STR	R1,[R0]
	LDR	R0,=0x3FFFC034	;FIO1PIN vsi 0
	MOV	R1,#0
	STR	R1,[R0]
	LDR	R0,=0x3FFFC000	;FIO0DIR izhodi 0.0-0.31
	LDR	R1,=0xFFFFFFFF
	STR	R1,[R0]
	LDR	R0,=0x3FFFC020	;FIO1DIR izhodi 1.20-1.31
	LDR	R1,=0xFFF00000
	STR	R1,[R0]
	LDR	R0,=0xE006C000	;DACR sredina skale, visok tok
	LDR	R1,=0x00008000
	STR	R1,[R0]
	MOV	PC,LR
	LTORG

;*** Izracunaj korak motorja iz R0 (8bit) *** (R0-4)
PWMA	EQU	480		;PWM amplituda osnovne
PWMH	EQU	80		;PWM amplituda 3. harmonika
PWMS	EQU	720		;PWM sredina
KORAK	AND	R1,R0,#0xFF	;PWMMR4 sinus
	LDR	R2,=K1SIN
	LDRSB	R3,[R2,R1]
	LDR	R2,=K3SIN
	LDRSB	R4,[R2,R1]
	LDR	R2,=PWMA
	MUL	R1,R2,R3
	LDR	R2,=PWMH
	MUL	R3,R2,R4
	LDR	R2,=PWMS
	ADD	R1,R2,R1,ASR#7
	ADD	R1,R1,R3,ASR#7
	LDR	R2,=0xE0014040
	STR	R1,[R2]
	AND	R1,R0,#0xFF	;PWMMR6 kosinus
	LDR	R2,=K1COS
	LDRSB	R3,[R2,R1]
	LDR	R2,=K3COS
	LDRSB	R4,[R2,R1]
	LDR	R2,=PWMA
	MUL	R1,R2,R3
	LDR	R2,=PWMH
	MUL	R3,R2,R4
	LDR	R2,=PWMS
	ADD	R1,R2,R1,ASR#7
	ADD	R1,R1,R3,ASR#7
	LDR	R2,=0xE0014048
	STR	R1,[R2]
	LDR	R2,=0xE0014050	;PWMLER enable all latches
	MOV	R1,#0x7F
	STR	R1,[R2]
	MOV	PC,LR
	LTORG
K1SIN	DCB	  0,  3,  6,  9, 12, 16, 19, 22, 25, 28, 31, 34, 37, 40, 43, 46	;tabela osnovne
	DCB	 49, 51, 54, 57, 60, 63, 65, 68, 71, 73, 76, 78, 81, 83, 85, 88
	DCB	 90, 92, 94, 96, 98,100,102,104,106,107,109,111,112,113,115,116
	DCB	117,118,120,121,122,122,123,124,125,125,126,126,126,127,127,127
K1COS	DCB	127,127,127,127,126,126,126,125,125,124,123,122,122,121,120,118
	DCB	117,116,115,113,112,111,109,107,106,104,102,100, 98, 96, 94, 92
	DCB	 90, 88, 85, 83, 81, 78, 76, 73, 71, 68, 65, 63, 60, 57, 54, 51
	DCB	 49, 46, 43, 40, 37, 34, 31, 28, 25, 22, 19, 16, 12,  9,  6,  3
	DCB	   0,  -3,  -6,  -9, -12, -16, -19, -22, -25, -28, -31, -34, -37, -40, -43, -46
	DCB	 -49, -51, -54, -57, -60, -63, -65, -68, -71, -73, -76, -78, -81, -83, -85, -88
	DCB	 -90, -92, -94, -96, -98,-100,-102,-104,-106,-107,-109,-111,-112,-113,-115,-116
	DCB	-117,-118,-120,-121,-122,-122,-123,-124,-125,-125,-126,-126,-126,-127,-127,-127
	DCB	-127,-127,-127,-127,-126,-126,-126,-125,-125,-124,-123,-122,-122,-121,-120,-118
	DCB	-117,-116,-115,-113,-112,-111,-109,-107,-106,-104,-102,-100, -98, -96, -94, -92
	DCB	 -90, -88, -85, -83, -81, -78, -76, -73, -71, -68, -65, -63, -60, -57, -54, -51
	DCB	 -49, -46, -43, -40, -37, -34, -31, -28, -25, -22, -19, -16, -12,  -9,  -6,  -3
	DCB	  0,  3,  6,  9, 12, 16, 19, 22, 25, 28, 31, 34, 37, 40, 43, 46
	DCB	 49, 51, 54, 57, 60, 63, 65, 68, 71, 73, 76, 78, 81, 83, 85, 88
	DCB	 90, 92, 94, 96, 98,100,102,104,106,107,109,111,112,113,115,116
	DCB	117,118,120,121,122,122,123,124,125,125,126,126,126,127,127,127
K3SIN	DCB	  0,  9, 19, 28, 37, 46, 54, 63, 71, 78, 85, 92, 98,104,109,113	;tabela harmonika
	DCB	117,121,123,125,126,127,127,126,125,122,120,116,112,107,102, 96
	DCB	 90, 83, 76, 68, 60, 51, 43, 34, 25, 16,  6, -3,-12,-22,-31,-40
	DCB	 -49, -57, -65, -73, -81, -88, -94,-100,-106,-111,-115,-118,-122,-124,-126,-127
K3COS	DCB	-127,-127,-126,-124,-122,-118,-115,-111,-106,-100, -94, -88, -81, -73, -65, -57
	DCB	-49,-40,-31,-22,-12, -3,  6, 16, 25, 34, 43, 51, 60, 68, 76, 83
	DCB	 90, 96,102,107,112,116,120,122,125,126,127,127,126,125,123,121
	DCB	117,113,109,104, 98, 92, 85, 78, 71, 63, 54, 46, 37, 28, 19,  9
	DCB	   0,  -9, -19, -28, -37, -46, -54, -63, -71, -78, -85, -92, -98,-104,-109,-113
	DCB	-117,-121,-123,-125,-126,-127,-127,-126,-125,-122,-120,-116,-112,-107,-102, -96
	DCB	-90,-83,-76,-68,-60,-51,-43,-34,-25,-16, -6,  3, 12, 22, 31, 40
	DCB	 49, 57, 65, 73, 81, 88, 94,100,106,111,115,118,122,124,126,127
	DCB	127,127,126,124,122,118,115,111,106,100, 94, 88, 81, 73, 65, 57
	DCB	 49, 40, 31, 22, 12,  3, -6,-16,-25,-34,-43,-51,-60,-68,-76,-83
	DCB	 -90, -96,-102,-107,-112,-116,-120,-122,-125,-126,-127,-127,-126,-125,-123,-121
	DCB	-117,-113,-109,-104, -98, -92, -85, -78, -71, -63, -54, -46, -37, -28, -19,  -9
	DCB	  0,  9, 19, 28, 37, 46, 54, 63, 71, 78, 85, 92, 98,104,109,113
	DCB	117,121,123,125,126,127,127,126,125,122,120,116,112,107,102, 96
	DCB	 90, 83, 76, 68, 60, 51, 43, 34, 25, 16,  6, -3,-12,-22,-31,-40
	DCB	 -49, -57, -65, -73, -81, -88, -94,-100,-106,-111,-115,-118,-122,-124,-126,-127
	ALIGN	4

;*** Inicializiraj PWM2,4,6 *** (R0-1)
PWMP	EQU	2*PWMS-1	;PWM perioda 1440 (20.48kHz)
PWM	LDR	R0,=0xE0014014	;PWMMCR Reset PWMMR0
	LDR	R1,=0x00000002
	STR	R1,[R0]
	LDR	R0,=0xE001404C	;PWMPCR double edge & enable PWM2,4,6
	LDR	R1,=0x00005454
	STR	R1,[R0]
	LDR	R0,=0xE0014018	;PWMMR0
	LDR	R1,=PWMP
	STR	R1,[R0]
	LDR	R0,=0xE0014020	;PWMMR2
	LDR	R1,=PWMS
	STR	R1,[R0]
	LDR	R0,=0xE0014040	;PWMMR4
	LDR	R1,=PWMS
	STR	R1,[R0]
	LDR	R0,=0xE0014048	;PWMMR6
	LDR	R1,=PWMS
	STR	R1,[R0]
	LDR	R0,=0xE0014050	;PWMLER enable all latches
	MOV	R1,#0x7F
	STR	R1,[R0]
	LDR	R0,=0xE0014004	;PWMTCR PWM & Counter Enable
	MOV	R1,#0x09
	STR	R1,[R0]
	MOV	PC,LR
	LTORG

;*** Inicializiraj UART0 *** (R0-1)
UART0	LDR	R0,=0xE000C00C	;U0LCR=0x83 DLAB=1,no-parity,1stop,8bit
	MOV	R1,#0x83
	STRB	R1,[R0]
	LDR	R0,=0xE000C000	;U0DLL 
	LDR	R1,=BAUD
	STRB	R1,[R0]
	LDR	R0,=0xE000C004	;U0DLM
	MOV	R1,R1,LSR#8
	STRB	R1,[R0]
	LDR	R0,=0xE000C008	;U0FCR=0xC1 RXtrig=14bit,FIFOenable
	MOV	R1,#0xC1
	STRB	R1,[R0]
	LDR	R0,=0xE000C00C	;U0LCR=0x03 DLAB=0,no-parity,1stop,8bit
	MOV	R1,#0x03
	STRB	R1,[R0]
	MOV	PC,LR
	LTORG

;*** Inicializiraj HD44780 5X7,2vrstici,CGRAM *** (R0-3)
INILCD	STR	LR,[SP,#-4]!	;resi link
	BL	T100MS		;zakasnitev 100ms
	MOV	R0,#0x38	;function set 
	BL	UKAZ
	BL	T4MS		;zakasnitev 4ms
	MOV	R0,#0x38	;function set
	BL	UKAZ
	MOV	R0,#0x38	;function set
	BL	UKAZ
	MOV	R0,#0x08	;display off
	BL	UKAZ
	MOV	R0,#0x01	;display clear
	BL	UKAZ
	BL	T4MS		;zakasnitev 4ms
	MOV	R0,#0x06	;entry mode set
	BL	UKAZ
	MOV	R0,#0x0C	;display on
	BL	UKAZ
	MOV	R0,#0x40	;set CGRAM address
	BL	UKAZ
	MOV	R2,#64		;prepisi 8 znake = 64 bajtov
	LDR	R3,=INILCD2
INILCD1	LDRB	R0,[R3],#1
	BL	ZNAK
	SUBS	R2,R2,#1
	BNE	INILCD1
	MOV	R0,#0x80	;set DDRAM address zacetek prve vrstice
	BL	UKAZ
	LDR	PC,[SP],#4	;povratek na link
	LTORG
INILCD2	DCB	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04	;0=praznina
	DCB	0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x04	;1=enacrtica
	DCB	0x14,0x14,0x14,0x14,0x14,0x14,0x00,0x04	;2=dvecrtici
	DCB	0x15,0x15,0x15,0x15,0x15,0x15,0x00,0x04	;3=tricrtice
	DCB	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F	;0=praznina podcrtana
	DCB	0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x1F	;1=enacrtica podcrtana
	DCB	0x14,0x14,0x14,0x14,0x14,0x14,0x00,0x1F	;2=dvecrtici podcrtana
	DCB	0x15,0x15,0x15,0x15,0x15,0x15,0x00,0x1F	;3=tricrtice podcrtana
	ALIGN

;*** Podcrtan stolpec v desno v drugi vrstici iz R3 *** (R0-3)
STOLP	STR	LR,[SP,#-4]!	;resi link
	MOV	R0,#0xC0	;set DDRAM address druga vrstica
	BL	UKAZ
	MOV	R2,#0
STOLP1	MOV	R0,#0		;praznina za velike korake po 16
	CMP	R3,#16		;ena crtica?
	MOVCS	R0,#1
	CMP	R3,#32		;dve crtici?
	MOVCS	R0,#2
	CMP	R3,#48		;tri crtice?
	MOVCS	R0,#3
	AND	R1,R3,#15	;podcrtaj pripadajoci znak za male korake po 1
	CMP	R1,R2
	ADDEQ	R0,R0,#4
	BL	ZNAK		;izpisi crtice
	SUBS	R3,R3,#48	;odstej 3 crtice, negativno ustavi?
	ANDMI	R3,R3,#15
	ADD	R2,R2,#1	;zanka 16 znakov
	CMP	R2,#16
	BMI	STOLP1
	LDR	PC,[SP],#4	;povratek na link
	LTORG

;*** Znak iz R0 v HD44780 *** (R0-1)
ZNAK	STR	LR,[SP,#-4]!	;resi link
	LDR	R1,=0x3FFFC016	;FIO0PIN2 podatek
	STRB	R0,[R1]
	LDR	R1,=0x3FFFC03A	;FIO1SET2
	MOV	R0,#0x20	;RS=1
	STRB	R0,[R1]
	BL	T1US		;zakasnitev 1us
	LDR	R1,=0x3FFFC03B	;FIO1SET3
	MOV	R0,#0x40	;vklopi E
	STRB	R0,[R1]
	BL	T1US		;zakasnitev 1us
	LDR	R1,=0x3FFFC03F	;FIO1CLR3
	MOV	R0,#0x40	;izklopi E
	STRB	R0,[R1]
	BL	T100US		;zakasnitev 100us
	LDR	PC,[SP],#4	;povratek na link
	LTORG

;*** Ukaz iz R0 v HD44780 *** (R0-1)
UKAZ	STR	LR,[SP,#-4]!	;resi link
	LDR	R1,=0x3FFFC016	;FIO0PIN2 podatek
	STRB	R0,[R1]
	LDR	R1,=0x3FFFC03E	;FIO1CLR2
	MOV	R0,#0x20	;RS=0
	STRB	R0,[R1]
	BL	T1US		;zakasnitev 1us
	LDR	R1,=0x3FFFC03B	;FIO1SET3
	MOV	R0,#0x40	;vklopi E
	STRB	R0,[R1]
	BL	T1US		;zakasnitev 1us
	LDR	R1,=0x3FFFC03F	;FIO1CLR3
	MOV	R0,#0x40	;izklopi E
	STRB	R0,[R1]
	BL	T100US		;zakasnitev 100us
	LDR	PC,[SP],#4	;povratek na link

;*** Zakasnitev 1us *** (R0)
	ALIGN	16
T1US	MOV	R0,#N1US
T1US1	SUBS	R0,R0,#1
	BPL	T1US1
	MOV	PC,LR

;*** Zakasnitev 100us *** (R0-1)
T100US	STR	LR,[SP,#-4]!	;resi link
	MOV	R1,#100
T100US1	BL	T1US
	SUBS	R1,R1,#1
	BPL	T100US1
	LDR	PC,[SP],#4	;povratek na link

;*** Zakasnitev 4ms *** (R0-2)
T4MS	STR	LR,[SP,#-4]!	;resi link
	MOV	R2,#40
T4MS1	BL	T100US
	SUBS	R2,R2,#1
	BPL	T4MS1
	LDR	PC,[SP],#4	;povratek na link

;*** Zakasnitev 100ms *** (R0-3)
T100MS	STR	LR,[SP,#-4]!	;resi link
	MOV	R3,#25
T100MS1	BL	T4MS
	SUBS	R3,R3,#1
	BPL	T100MS1
	LDR	PC,[SP],#4	;povratek na link

;*** Zakasnitev 1s *** (R0-3)
T1S	STR	LR,[SP,#-4]!	;resi link
	MOV	R3,#250
T1S1	BL	T4MS
	SUBS	R3,R3,#1
	BPL	T1S1
	LDR	PC,[SP],#4	;povratek na link

;*** Zacetek programa po resetu ***
ZACNI	LDR	SP,=SKLAD	;inicializiraj SP
	BL	MAM	;inicializiraj MAM
	BL	PWRCLK	;nastavi PCONP in APBDIV
	BL	PLL	;inicializiraj PLL
	BL	GPIO	;inicializiraj GPIO in DAC
	BL	PWM	;inicializiraj PWM2,4,6
	BL	UART0	;inicializiraj UART0
	BL	INILCD	;inicializiraj HD44780 5X7,2vrstici,CGRAM
	MOV	R0,#0x80	;prva vrstica besedila
	BL	UKAZ
	LDR	R2,=ZACNI5
ZACNI1	LDRB	R0,[R2],#1
	MOVS	R0,R0
	BEQ	ZACNI2
	BL	ZNAK
	B	ZACNI1
ZACNI2	MOV	R0,#0xC0	;druga vrstica besedila
	BL	UKAZ
	LDR	R2,=ZACNI6
ZACNI3	LDRB	R0,[R2],#1
	MOVS	R0,R0
	BEQ	ZACNI4
	BL	ZNAK
	B	ZACNI3
ZACNI4	BL	T1S		;zakasnitev 1s
	MOV	R8,#31		;zacetni stevec zanke
	B	ZANKA	;glavna zanka programa
	LTORG
ZACNI5	DCB	"Koracni vrtiljak",0
ZACNI6	DCB	"S53MV 27.08.2016",0
	ALIGN	4

;*** Glavna zanka programa ***
ZANKA	ADD	R8,R8,#1	;stevec zanke
	MOV	R0,R8,LSR#2	;preizkus koracnega motorja 8bit
	BL	KORAK
	BL	T100US		;zakasnitev 300us
	BL	T100US
	BL	T100US

	BL	T100US		;zakasnitev 300us
	BL	T100US
	BL	T100US
	BL	T100US		;zakasnitev 300us
	BL	T100US
	BL	T100US
;	BL	T4MS

	ANDS	R0,R8,#0xFF	;klicanje vsakih 256 zank
	BLEQ	ZANKA1
	B	ZANKA

ZANKA1	STR	LR,[SP,#-4]!	;resi link
	STR	R8,[SP,#-4]!	;resi R8
	MOV	R8,R8,LSR#8
	AND	R0,R8,#0x0F	;izpis nabora znakov v prvo vrstico
	ORR	R0,R0,#0x80	;nastavi polozaj
	BL	UKAZ
	MOV	R0,R8		;izpisi znak
	BL	ZNAK
	AND	R3,R8,#0xFF	;izpisi rastoci stolpec v drugo vrstico
	ADD	R3,R3,R3,LSL#1
	BL	STOLP
	TST	R8,#0x04	;izmenicno miganje vseh izhodov
	MOVEQ	R0,#0x55
	MOVNE	R0,#0xAA
	LDR	R1,=0x3FFFC014	;FIO0PIN0 P0.0-7
	STRB	R0,[R1]
	LDR	R1,=0x3FFFC015	;FIO0PIN1 P0.8-15
	STRB	R0,[R1]
	LDR	R1,=0x3FFFC017	;FIO0PIN3 P0.24-31
	STRB	R0,[R1]
	LDR	R0,=0xE000C000	;U0THR izpis stevca na UART0
	STRB	R8,[R0]
	LDR	R0,=0xE006C000	;DACR zaga iz stevca, visok tok
	AND	R1,R8,#0xFF
	MOV	R1,R1,LSL#8
	STR	R1,[R0]
	LDR	R8,[SP],#4	;povrni R8
	LDR	PC,[SP],#4	;povratek na link
	LTORG

;*** Konec delovanja zbirnika ARM ***
	END
