개발모듈/펌웨어 모듈

- Delay 함수 어셈블리어 16Mhz

메가아재 2019. 12. 16. 09:47
반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// 딜레이
void Delay_us_Asm(unsigned int time_us)  /* time delay for us */
    register unsigned int i;
    
    for(i = 0; i < time_us; i++)   // 4 cycle +
    { 
        asm volatile(" PUSH  R0 ");  // 2 cycle +
        asm volatile(" POP   R0 ");  // 2 cycle +
        asm volatile(" PUSH  R0 ");  // 2 cycle +
        asm volatile(" POP   R0 ");  // 2 cycle +
        asm volatile(" PUSH  R0 ");  // 2 cycle +
        asm volatile(" POP   R0 ");  // 2 cycle = 16 cycle = 1 us for 16MHz
    }
}
 
void Delay_ms_Asm(unsigned int time_ms)  /* time delay for ms */
    register unsigned int i;
 
    for(i = 0; i < time_ms; i++)    
    { 
        Delay_us_Asm(250);
        Delay_us_Asm(250);
        Delay_us_Asm(250);
        Delay_us_Asm(250);
    }
}
cs


반응형