본문 바로가기
코스웨어/10년 시스템제어

[시스템제어]4월13일 (15번 신관식) 업무 보고서

by 알 수 없는 사용자 2010. 4. 15.
728x90
반응형


오전(9시~오후 12시50분)

@윈도우 네트워크(TCP/IP) 윈속 네트워크 모델 소스 분석.

오후(1시 40분~오후 5시30분)

@Atmega 타이머 카운트 사용방법....
@소스
==========================================================
//Atmega 128을 이용한 타이머 작동//
#include <ddr.h>
#include <avr/signal.h>
#include <avr/interrupt.h>

#define CPU_CLOCK     16000000  // cpu clodk = 16,000,000 Hz
#define TICKS_PER_SEC 1000      // Ticks per sec = 1,000
#define PRESCALER     64        // 클럭의 배수 (크기,오버헤드)
#define DDR_LED DDRF
#define DATA_TO_LED PORTF
//#define OCR0 250

volatile unsigned int g_elapsed_time;   //  시간 변수

void initLED(void);               // LED 초기화
void setTCCR0(void);
void initTCNT0(void);
void setTIMSK(void);
void toggleLED(char * state);
void sleep(unsigned int elapsed_time);
SIGNAL(SIG_OUTPUT_COMPARE0);
//void initOCR0(void);

int main()
{
 char state=0;
 
 initLED();      
 setTCCR0();      
 initTCNT0();
 setTIMSK();
 sei();
 
 
 
 while(1)
 {
  toggleLED(&state);
  
  sleep(1000);
 }
 
 return 1;
}
/*
void initOCR0(void)  //OCR 초기화....3BIT=1,6BIT=0
{
 //TCCR0=TCCR0|(1<<3)|(0<<6);
 OCR0=0b11111010;  //250으로 초기화...
}
*/

void initLED(void)   //LED 초기화 함수

 DDR_LED=0xFF;
 DATA_TO_LED=0x00;  // 전부켜져있음
 
 
}
void setTCCR0(void)   // 분주비 64로 설정//128

 //TCCR0=TCCR0|(1<<2)|(1<<0);
 TCCR0=0b00001100;
 
 //TCCT0=TCCR0|(1<<2);
 //TCCR0 &=~(1<<1);
 //TCCR0 &=~(1<<0);
 
 //TCCR0=0b00000100;
 //TCCR0 |=1<<cs02;
 //TCCRO &=~(1<<cs01);
 //TCCR0 &=~(1<<cs00);
   
}
void initTCNT0(void)  // TCNT ///6으로 초기화.....131초기화..
{
 TCNT0=0b00000000;
 //TCNT0=256-(CPU_CLOCK/TICKS_PER_SEC/PRESCALER); 
 OCR0 = 0b11111010;
}
void setTIMSK(void)   //overflow.....초기화...
{
 //TIMSK=0b00000001;
 TIMSK |=1<<1;  //Bit 1  OCIE0: Timer/Counter0 Output Compare Match Interrupt Enable
 //TIMSK |=1<<TOIE0;
}
void toggleLED(char * state)
{
 if(*state==0)
 {
  DATA_TO_LED=0x00;
  *state=1;
 }
 else if(*state==1)
 {
  DATA_TO_LED=0xff;
  *state=0;
 }
}
void sleep(unsigned int elapsed_time)
{
 g_elapsed_time=0;
 while(1)
 {
 
  if(g_elapsed_time==elapsed_time)
  {
   break;
  }
  
 }
}

SIGNAL(SIG_OUTPUT_COMPARE0)
{
 
 //initTCNT0();
 g_elapsed_time++;
 
}
=============================================================

@c언어.....프로그램....과제...
/*======문제1========그림대로 출력하세요. (중첩 for문 사용)
#include <stdio.h>

int main()
{
 int iCount;
 int jCount;


 for(iCount=1;6>=iCount;++iCount)
 {
  for(jCount=1;iCount>=jCount;++jCount)
  {
   printf(" ");

  }
  printf("*\n");
 }

 for(iCount=6;0<iCount;--iCount)
 {
  for(jCount=1;iCount>=jCount;++jCount)
  {
   printf(" ");

  }
  printf("*\n");
 }
 return 0;

}

*/
//=================문제2======== 출력할 줄의 개수를 입력받은 후 직삼각형을 출력하세요
/*
#include <stdio.h>

int main()
{
 int iCount;
 int jCount;
 int Input;

 printf("Input Number: ");
 scanf("%d",&Input);

 

  for(iCount=1;Input>=iCount;++iCount)
  {
   for(jCount=1;iCount>=jCount;++jCount)
   {
    printf("*");

   }
   printf("\n");
  }

 return 0;
}
*/
//============문제3 =================그림대로 출력하세요. (중첩 for문 사용)

#include <stdio.h>

int main()
{
 int iCount;
 int jCount;
 int kCount=6;

 void print_blanc(void);
 void print_star(void);

 for(iCount=1;7>=iCount;++iCount)
 {
   
  for(jCount=7;1<=jCount;++jCount)
  {
  
  
  }
  printf("\n");
 }

 
 return 0;

}
void print_blanc(void)
{
 printf("  ");
}
void print_star(void)
{
  printf("*");
}





728x90