오전수업
실습1
-----------------------------------------------------
#define PORTC (*(volatile unsigned int*)0x35) //출력 설정
#define DDRC (*(volatile unsigned int*)0x34) //입출력 설정
int main(void)
{
int flag = 0;
int flag1 = 1000;
unsigned int us = 0; //10^-6
unsigned int ms = 0; //10^-3
PORTC = 0x00; //PORT의 초기화
while(1)
//반복되는 코드가 들어가는 부분의 시작
{
us=us+1;
if(us>=1000)
{
ms=ms+1;
us=0;
}
if(ms>=flag1)
{
if(flag)
{
DDRC=0xff;
flag=0;
}
else
{
DDRC=0x00;
flag=1;
}
ms=0;
flag1=flag1-20; //값을 서서히 줄여서 점등 주기를 짧게 만듬.
if(flag1<=0)
{
flag1=1000; //주기가 아주 짧아 지는 것을 방지하기위해 flag1값을 원래 대로 되돌림.
}
}
} //반복되는 코드가 들어가는 부분의 끝
return 0;
-------------------------------------------------------------------------------------
위소스는 LED가 점등하는 시간을 제어한것이다.
천천히 깜빡이다 시간이 지남에 따라 빠르게 깜빡이게 하기 위한것이다.
실습2
--------------------------------------------------------------------------------------
#define PORTC (*(volatile unsigned int*)0x35) //출력 설정
#define DDRC (*(volatile unsigned int*)0x34) //입출력 설정
#define PORTD (*(volatile unsigned int*)0x32) //출력 설정
#define DDRD (*(volatile unsigned int*)0x31) //입출력 설정
#define PIND (*(volatile unsigned int*)0x30) //출력 설정
#define PORTF (*(volatile unsigned int*)0x62) //출력 설정
#define DDRF (*(volatile unsigned int*)0x61) //입출력 설정
int main(void)
{
DDRC = 0x01; //DDRC 나온 출력이 DDRD로 입력.
PORTC = 0x01;
DDRD = 0x00;
PORTD = 0x00;
while(1)
{
if(PIND & 0x01) //PIND은 받아 오는 역활
{
DDRF = 0xff;
}
else
{
DDRF = 0x00;
}
}
return 0;
}
PIN에 전력이 들어왔는지 확인하기위해서 한 실습.
25번을 뽑았을때 불이 꺼지면 정상적인 작동을 하지만
35번을 뽑았을 경우 불은 계속 켜져있어야한다.
오후수업
오늘도 역시 포인터.
실습1)아래 그림은 심볼테이블로 나타낸것이다.
실습2)어떻게 저장이 되고 출력되는지 알아 보기 위함.
실습3)각각 Type의 용량 과 endinan
volatile(휘발성)
A에10, 20, 30을 대입하라 했을대 CPU는 빠르게 연산하기위해 10,20을 생략하고
30만 대입하게 된다.이것을 최적화라 한다. 하지만 문제가 생길수 있는 구간이
있기떄문에 최적화를 억제하여 일일이 대입하기 위해 사용하는것이 volatile이다.
'School Study' 카테고리의 다른 글
[BSP]업무일지 - 20100527 -임종현 (0) | 2010.05.27 |
---|---|
[BPS]업무일지-20100526-임종현 (0) | 2010.05.26 |
[BSP]업무일지 - 2005024 - 임종현 (0) | 2010.05.24 |
[BSP]업무일지 -20100519-임종현 (0) | 2010.05.19 |
[BSP]업무일지 - 20100518 - 임종현 (0) | 2010.05.19 |