비디오: 아두이노 우노(Arduino UNO) 10 LED Bar와 조도센서 (1) 2024
PBASIC 서브 루틴은 BASIC Stamp 프로세서를 사용하여 전자 프로젝트에서 매우 중요합니다. 서브 루틴 는 프로그램의 어느 위치에서나 호출 할 수있는 프로그램 섹션입니다. 서브 루틴이 끝나면 프로그램의 제어는 서브 루틴이 호출 된 위치로 점프합니다.
서브 루틴은 프로그램의 메인 루프에서 프로그램의 긴 부분을 분리 할 수 있기 때문에 유용합니다. 메인 루프를 이해하기 쉽도록 단순화합니다. 서브 루틴의 또 다른 이점은 프로그램을 더 작게 만들 수 있다는 것입니다.
복잡한 계산을 여러 번 수행해야하는 프로그램을 작성한다고 가정합니다. 복잡한 계산을 서브 루틴에 배치하면 프로그램의 여러 위치에서 서브 루틴을 호출 할 수 있습니다. 그렇게하면 복잡한 계산을 한 번만 수행하는 코드를 작성할 수 있습니다.
서브 루틴을 만들고 사용하려면 두 개의 PBASIC 명령을 사용해야합니다. 첫 번째는 GOSUB이며 서브 루틴을 호출합니다. 일반적으로 서브 루틴을 호출 할 때마다 프로그램의 메인 루프 내에서 GOSUB 명령을 사용합니다. 두 번째 명령은 RETURN이며 항상 서브 루틴의 마지막 명령입니다.
서브 루틴을 만들려면 레이블로 시작하여 RETURN 명령으로 끝냅니다. 그 사이에 서브 루틴이 호출 될 때 실행할 명령을 작성합니다.
다음은 1에서 999 사이의 난수를 생성하고 Rnd 변수에 저장하는 서브 루틴의 예입니다.
GetRandom: RANDOM Rnd Rnd = Rnd // 999 + 1 RETURN
이 서브 루틴을 호출하려면, 다음과 같은 GOSUB 명령을 사용하면됩니다.
GOSUB GetRandom
이 GOSUB 명령은 컨트롤을 GetRandom 레이블로 전송합니다. 그런 다음 GetRandom 서브 루틴이 RETURN 명령에 도달하면 컨트롤은 GOSUB 명령 바로 다음 명령으로 다시 점프합니다.
서브 루틴을 사용하여 1에서 1,000 사이의 난수를 얻고 난수를 사용하여 핀 0의 LED를 임의의 간격으로 깜박이는 완전한 프로그램이 있습니다.
'LED 깜박이 프로그램'Doug Lowe '2011 년 7 월 10 일 "이 프로그램은 핀 0의 LED를 임의로 깜박입니다.'{$ STAMP BS2}이 프로그램은 핀 0에 LED가있는 기본 스탬프 회로에서 실행할 수 있습니다. '{$ PBASIC 2.5} Rnd VAR Word Led1 PIN 0 DO GOSUB GetRandom HIGH Led1 PAUSE Rnd LED1 PAUSE 100 LOOP GetRandom: RANDOM Rnd Rnd = Rnd // 999 + 1 RETURN
서브 루틴을 사용할 때 매우 중요합니다. 프로그램이 우연히 서브 루틴에 "빠져서"실행되지 않을 때 프로그램을 실행하지 못하게합니다.예를 들어, 목록 3-5의 프로그램이 LED를 100 번 깜박이기 때문에 DO 루프 대신 FOR-NEXT 루프를 사용했다고 가정합니다. 다음은 그 프로그램을 작성하는 방법을 999하지 않는 예입니다: FOR 카운터 = 1 TO 100 GOSUB GetRandom HIGH Led1 PAUSE Rnd LED1 PAUSE 100 NEXT GetRandom: RANDOM Rnd Rnd = Rnd // 999 + 1 RETURN
그 이유를 알고 있습니까? FOR-NEXT 루프가 LED를 100 번 깜박 거리면 프로그램은 FOR-NEXT 루프 다음의 서브 루틴 인 다음 명령으로 계속됩니다!
그런 일이 일어나지 않게하려면 다른 PBASIC 명령 인 END를 사용할 수 있습니다. END는 BASIC Stamp에 프로그램의 끝에 도달했음을 알려주므로 명령 실행을 중지해야합니다. 다음과 같이 NEXT 명령 뒤에 END 명령을 배치합니다.
FOR 카운터 = 1 TO 100 GOSUB GetRandom HIGH Led1 PAUSE Rnd LED LED1 PAUSE 100 NEXT END GetRandom: RANDOM Rnd Rnd = Rnd // 999 + 1 RETURN > 그런 다음 FOR-NEXT 루프가 완료되면 프로그램이 중지됩니다.