รูทีนการขัดจังหวะจะเก็บข้อมูลไว้ในบัฟเฟอร์ (บัฟเฟอร์แบบวงกลมที่มีพอยต์และรับพอยน์เตอร์ทำงานได้ดี) วนรอบหลักจะตรวจสอบเพื่อดูว่ามีข้อมูลในบัฟเฟอร์หรือไม่และเมื่อมีให้นำออกมา ลูปหลักสามารถทำสิ่งอื่น ๆ ได้ แต่ต้องตรวจสอบและลบข้อมูลก่อนที่บัฟเฟอร์อินเตอร์รัพต์จะล้น (เมื่อการวางตัวตรงตามการรับ)
มันจะไม่รวบรวม แต่นี่แสดงให้เห็นถึงวิธีการ
char circ_buf[BUFFER_SIZE];
int get_index, put_index;
void initialize(void) {
    get_index = 0;
    put_index = 0;
}
isr serial_port_interrupt(void) {                       // interrupt
    circ_buf[put_index++] = SERIAL_PORT_REGISTER;
    if(put_index==get_index) error("buffer overflow");  // oops
    if(put_index==BUFFER_SIZE) put_index = 0;           // circular buffer
}
void background routine(void) {
    while(put_index!=get_index) {                       // or if()
        ch = circ_buf[get_index++];
        // do something with ch
        if(get_index==BUFFER_SIZE) get_index = 0;
        }
}