Udelay 지연시간
지연시간 : 지연시간 |
아주 작은 단위의 시간을 지연시키고자 할 때 사용하는 명령으로, 기본 70~80마이크로 초의 시간에 1 당 8~9마이크로 초를 더 지연시킵니다. 예를 들어 Udelay 10이라고 했을 경우, 80 + 80정도인160마이크로 초를 지연시킵니다. (Udelay 0 일 경우는 80마이크로 초).
이 명령어는 실행 시 LADDER가 동시에 실행된다면, LADDER의 실행 시간에 따라 지연시간이 영향을 받게 됩니다. 또한 이 명령 수행 시 BASIC인터럽트의 수행이 가능하므로, BASIC 인터럽트 발생시 지연시간 역시 영향을 받게 됩니다.
Delay 시간에 영향이 없도록 하고 싶다면, 레더실행과 전체 인터럽트를 중지시켜야합니다.
Set Ladder Off '레더중지 Set Onglobal Off '인터럽트 전체 중지
Do High 8 ' 8번 포트를 On Udelay 10 ' 160 마이크로 초 대기 Low 8 ' 8번 포트를 Off Wait 500 Loop
위 예는 매번 정확한 160밀리초 High펄스를 출력할 수 없습니다. 다음과 같이 바꾸면 매번 정확한 160밀리초의 High신호가 출력됩니다.
Do Set Ladder Off '매번 정확한 160밀리초 High신호를 내보내려면 레더와 인터럽트를 잠시 중단시켜야합니다. Set Onglobal Off High 8 ' 8번 포트를 On Udelay 10 ' 160 마이크로 초 대기 Low 8 ' 8번 포트를 Off Set Ladder On Set Onglobal On '다시 시작 Wait 500 Loop