To jest stara wersja strony!
RCC_AHB1ENR EQU 0x40023830 ;adres rejestru APB1 clock enable GPIOG_MODER EQU 0x40021800 ;itd. GPIOG_OTYPER EQU 0x40021804 GPIOG_ODR EQU 0x40021814 THUMB AREA vector_table, DATA, READONLY ;tablia wektorow przerwan - niepelna! DCD 0x2000FFFF ;wartosc wskaznika stosu pod adresem 0x00000000 DCD reset_handler ;komorka 0x00000004 - adres procedury obslugi przerwania reset ALIGN AREA program_data, DATA, READWRITE ;dane inicjowane wartoscia - tablica 8 liczb 32bitowych delay_tab DCD 0x0004, 0x0001, 0x0001, 0x0001, 0x0001 ALIGN AREA program_code, CODE, READONLY ;kod programu ENTRY ;punkt wejsciowy - adres 1 instrukcji (ldr) reset_handler LDR R3,= delay_tab LDR R4,[R3], #4 MOVS R1, #0 tab_loop LDR R0,[R3], #4 MOVS R2, #32 main_loop EOR R1, R1, R0 ;R1=R1xR0 LSR R0, R0, #1 SUBS R2, R2, #1 BNE main_loop SUBS R4, R4, #0 BNE tab_loop AND R1, R1, #1 endless_loop B endless_loop END
THUMB AREA vector_table, DATA, READONLY ;tablia wektorow przerwan - niepelna! DCD 0x2000FFFF ;wartosc wskaznika stosu pod adresem 0x00000000 DCD reset_handler ;komorka 0x00000004 - adres procedury obslugi przerwania reset ALIGN AREA program_data, DATA, READWRITE ;dane inicjowane wartoscia - tablica 8 liczb 32bitowych delay_tab DCB 0x0004, 0x0002, 0x0001, 0x0005, 0x0001 ALIGN AREA program_code, CODE, READONLY ;kod programu ENTRY reset_handler ;punkt wejsciowy - adres 1 instrukcji (ldr) LDR R1,=delay_tab LDRB R2,[R1],#1 MOV R3,#0 petla_loop LDRB R0,[R1],#1 CMP R0,R3 IT HI MOVHI R3,R0 SUBS R2,R2,#1 BNE petla_loop