LED를 깜빡거리게 하는 프로그램을 만들어 보려 합니다.

freesky의 이미지

방학이 되어 오랜만에 C언어 공부 좀 다시 해보려고

재미 삼아 LED를 깜빡거리게 하는 프로그램을 만들어 보고 있습니다.

(예전에 있었던 키트 바이러스라고 아실까 모르겠네요. 그 바이러스의 증세가 키보드 LED를 깜빡거리게 하는 거였죠.)

#include <stdio.h>
#include <dos.h>
#include <bios.h>
#include <time.h>

void time_delay(float sec);

int main()
{
	short int count;
	unsigned char far *status = (unsigned char far *)0x00400017;
	*status = *status ^ 0x40;
	time_delay(1);
	
	for (count = 0; count < 5; count++)
	{
		*status = *status ^ 0x40;
		time_delay(1);

		*status = *status ^ 0x40;
		time_delay(1);
	}
	return 0;
}

void time_delay(float sec)
{
	long t1, t2;						// tick 값 저장 변수
	t1 = biostime(0, 0L);		// 첫 번째 tick 값 저장
	t2 = biostime(0, 0L);		// 두 번째 tick 값 저장
	
	while ((t2 - t1) / CLK_TCK < sec)		// 지정된 시간만큼 지연되었는지 검사
		t2 = biostime(0, 0L);

	return;
}

일단 Caps Lock만 깜빡거리게 만들었습니다.

제 나름대로 위처럼 만들었는데 실행하면 처음에 한 번만 토글되고 변하지 않더라고요.

어떻게 하면 될까요?

alee의 이미지

bl 이라는 키보드 LED를 깜빡이게 하는 프로그램이 있습니다. 그 소스를 한 번 참고해 보시는게 어떨까요?

skkim7의 이미지

최적화 문제가 아닐까 싶네요.
status 를 volatile로 선언해야 하지 않을까요?

freesky의 이미지

bl이라는 프로그램을 어디서 구할 수 있는지 아시나요?

검색을 해 봐도 못 찾겠어요.

올해에는 꼭 노트북이 생기게 해 주세요.

alee의 이미지

freesky wrote:
bl이라는 프로그램을 어디서 구할 수 있는지 아시나요?

검색을 해 봐도 못 찾겠어요.

bl 이라는 데비안 패키지가 있습니다.

http://packages.debian.org/stable/source/bl