#include "stm32f1xx.h"

void configureButton(void);
void configureLED(void);
int readButton(void);

int main(void) {
    // Konfigurasi Tombol dan LED
    configureButton();
    configureLED();
    
    while (1) {
        // Baca status tombol dan kontrol LED
        if (readButton()) {
            GPIOC->BSRR = GPIO_BSRR_BS13;  
        } else {
            GPIOC->BSRR = GPIO_BSRR_BR13; 
        }
    }
}

// Konfigurasi tombol sebagai input pada pin tertentu
void configureButton(void) {
    RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;    
    GPIOA->CRL &= ~GPIO_CRL_MODE0;         
    GPIOA->CRL |= GPIO_CRL_CNF0_1;         
    GPIOA->ODR &= ~GPIO_ODR_ODR0;          
}

// Konfigurasi LED sebagai output pada pin tertentu
void configureLED(void) {
    RCC->APB2ENR |= RCC_APB2ENR_IOPCEN;    
    GPIOC->CRH &= ~GPIO_CRH_MODE13;        
    GPIOC->CRH |= GPIO_CRH_MODE13_0;       
    GPIOC->CRH &= ~GPIO_CRH_CNF13;        
}

// Fungsi untuk membaca status tombol
int readButton(void) {
    return (GPIOA->IDR & GPIO_IDR_IDR0) != 0;  
}
$abcdeabcde151015202530fghijfghij