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에서 데이터를 문자 단위로 읽어와서 화면에 출력해주는 프로그램이다.

+ Recent posts