FND count 99 with DK128
main.c
#include "port.h"
#include "delay_m.h"
int main(void)
{
unsigned char fnd1 = 0x00;
unsigned char fnd2 = 0x00;
int flag = 1;
int check = 0;
DDRF = 0xff; // 포트 초기화
PORTF = 0x00;
DDRC = 0x01;
PORTC = 0x00;
while(1)
{
if(PINC & 0x02) // 출력 신호를 받았을 때
{
flag = 1; // 출력 flag set
}
if(flag)
{
PORTF = fnd2 | fnd1;
fnd1++;
if(fnd1 >= 0x0A) // 출력이 끝난 시점
{
fnd1 = 0x00;
PORTC = 0x01; // 상대편 FND 출력 시작
flag = 0; // 출력 flag off
check = 1; // C PORT 초기화를 위한 check
if(fnd2 >= 0x80) // 10자리 처리
{
if(fnd2 == 0x80) // 10자리가 8일 때
{
fnd2 = 0x00;
}
else // 10자리가 9일 때
{
fnd2 = 0x10;
}
}
else // 10자리를 2씩 증가
{
fnd2 += 0x20;
}
}
}
else // 출력 안할 때
{
PORTF = 0x00;
}
delay(600);
if(check) // C PORT 초기화
{
PORTC = 0x00;
check = 0;
}
}
return 0;
}
// DK128 두 대를 연결해서 99까지 카운트 하는 코드이다. 일단 A DK128에서 0에서 9까지 카운트하고, 그 다음 B DK128에서 10부터 19까지 카운트 하는 방식으로 99까지 카운트한다.
// C PORT에 핀 2개를 이용해서 서로 카운트 동기화를 한다.
fopen(), fclose(), fprinf(), fscanf()
main.c
#include <stdio.h>
int main()
{
int i;
fprintf(stdout, "Enter the number: ");
fscanf(stdin, "%d", &i);
fprintf(stdout, "i = %d\n", i);
return 0;
}
// fprintf(), fscanf() 함수들을 사용법을 알아보았다. 이 함수들은 기본적으로 입출력 스트림을 지정 할 수 있다. 위 코드를 보면 fprintf는 stdout(모니터) 표준출력으로 출력하고 있고, fscanf는 stdin(키보드) 표준입력에서 입력받는다. 즉, 각각 printf, scanf와 같은 동작을 한다고 보면 된다.
main1.c
#include <stdio.h>
int main()
{
fprintf(stdout, "one\n");
fprintf(stderr, "two\n");
fprintf(stdout, "three\n");
return 0;
}
// stdout은 표준출력, stderr은 표준에러로 둘 다 모니터로 출력된다. 기본적으로 둘 다 모니터로 출력은 되지만 엄밀히 따지면 서로 다른 스트림이다.
// 리다이렉션(>)명령을 통해 이를 확인 할 수 있었다.
p5-9.c
#include <stdio.h>
int main()
{
int score;
char name[10];
FILE *fpin;
FILE *fpout;
fpin = fopen("d0327.in", "r");
fpout = fopen("d0327.out", "w");
while(!(feof(fpin)))
{
fscanf(fpin, "%s %d", name, &score);
fprintf(stdout, "%s %d\n", name, score);
fprintf(fpout, "%s\t%d\n", name, score);
}
fclose(fpin);
fclose(fpout);
return 0;
}
// fopen(), fclose() 함수를 이용하여 직접 파일에서 데이터를 읽어오고 데이터를 써보는 코드이다. 기본적으로 파일 입출력을 위해서 FILE 구조체 포인터가 필요하며, 파일을 이 구조체에 연결시켜주는 함수가 fopen()이고 파일을 다 쓴 후 연결을 끈어주는 함수가 fclose()이다. 함수 원형들은 http://www.winapi.co.kr 사이트에 가보면 잘 알 수 있다.
// 이 프로그램은 d0327.in 파일에서 데이터를 읽어와서 모니터와 d0327.out으로 출력시키는 프로그램이다.
p5-10.c
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp;
char ch;
int count;
if((fp = fopen("d0328.dat", "r")) == NULL)
{
printf("File open error!!\n");
exit(1);
}
count = fscanf(fp, "%c", &ch);
while(count != EOF)
{
putchar(ch);
count = fscanf(fp, "%c", &ch);
}
fclose(fp);
return 0;
}
// 이 프로그램은 d0328.dat에서 데이터를 문자 단위로 읽어와서 화면에 출력해주는 프로그램이다.