마이크로컴퓨터 실험 레포트(2)
본 자료는 4페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
해당 자료는 4페이지 까지만 미리보기를 제공합니다.
4페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

마이크로컴퓨터 실험 레포트(2)에 대한 보고서 자료입니다.

목차

1. 하드웨어 연결

2. LED의 위치를 이동시키는 프로그램 설명

3. LED의 위치를 이동시키는 프로그램의 응용

4. ROTATE.C 프로그램 설명

5. 레포트를 쓰고 나서...

본문내용

수 있다.
●shift1.c(이동 속도 변경)
주기를 선언해야 아래의 Delay를 사용 할 수 있다.
#include
#define _XTAL_FREQ 4000000
void main(void)
{
OSCCON = 0b01100000;
ANSEL = 0b00000000;
TRISD = 0b00000000;
Delay를 900ms(0.9초)로 값을 바꾸어 0.9초의 속도로 왼쪽으로 하나씩 이동하는 프로그램을 만들었다.
PORTD = 0b00000001;
while(1){
__delay_ms(900);
PORTD <<= 1;
if(PORTD == 0b00000000)
PORTD = 0b00000001;
}
}
-위의 프로그램처럼 #define _XTAL_FREQ 4000000를 써 넣어 주기를 선언해야 delay되는 시간을 바꾸어 선언 할 수 있다. 이렇게 하면 LED의 이동 속도를 내 마음대로 조절 할 수 있다.
●shift1.c(방향 변경)
#include
#define _XTAL_FREQ 4000000
void main(void)
PORTD의 초기 값을 0b10000000으로 주어야
왼쪽에서 오른쪽으로 이동하는 프로그램을 만들 수 있다.
{
OSCCON = 0b01100000;
ANSEL = 0b00000000;
TRISD = 0b00000000;
PORTD = 0b10000000;
PORTD가 오른쪽방향으로 1씩 0.5초 간격으로 이동한다.
while(1){
__delay_ms(500);
PORTD >>= 1;
만약 PORTD가 0b00000000이 된다면, PORTD를 초기값 0b10000000로 선언한다.
if(PORTD == 0b00000000)
PORTD = 0b10000000;
}
}
-위의 프로그램처럼 PORTD 초기 값을 아까와는 반대로 0b10000000을 주고 PORTD를 오른쪽으로 이동시키는 조건문을 써 넣어 PORTD가 0b00000000이 될 때, PORTD가 초기 값인 0b10000000을 쓰면 왼쪽에서 오른쪽으로 이동하는 프로그램이 완성된다. 결과는 아래의 그림과 동일하다.
●shift1.c(이동 개수 변경)
#include
#define _XTAL_FREQ 4000000
void main(void)
{
OSCCON = 0b01100000;
ANSEL = 0b00000000;
PORTD가 오른쪽방향으로 4씩 0.5초 간격으로 이동한다.
TRISD = 0b00000000;
PORTD = 0b10000000;
while(1){
__delay_ms(500);
PORTD >>= 4;
if(PORTD == 0b00000000)
PORTD = 0b10000000;
}
}
-위의 프로그램처럼 PORTD 이동을 1이 아닌 4로 하였을 때, 초기 값인 RD7에서 4칸 오른쪽인 RD3으로 이동하고 다시 4칸 오른쪽인 RD7에 LED 불빛이 들어와 이 과정을 반복하는 것을 볼 수 있다. 결과는 아래의 그림과 동일하다.
RD3
RD0
RD1
RD2
RD4
RD5
RD6
RD7
RD3
RD0
RD1
RD2
RD4
RD5
RD6
RD7
RD3
RD0
RD1
RD2
RD4
RD5
RD6
RD7
4. ROTATE.C 프로그램 설명
● ROTATE.C
#include
PORTD 초기 값을 0b00000001으로 주었다.
#define _XTAL_FREQ 4000000
void main(void)
while문이 1이기에 아래 값을 반복한다.
{
OSCCON = 0b01100000;
ANSEL = 0b00000000;
PORTD가 왼쪽방향으로 1씩 0.5초 간격으로 이동한다.
TRISD = 0b00000000;
PORTD = 0b00000001;
while(1){
__delay_ms(500);
만약 PORTD가 0b00000000이 된다면, PORTD를 초기값 0b10000000로 선언한다.
PORTD <<= 1;
if(PORTD == 0b00000000) {
PORTD = 0b10000000;
while(PORTD){
__delay_ms(500);
while문을 if문 밑에 한번 더 적어 주기가 0.5초인 PORTD값을 1씩 오른쪽으로 이동시킨다.
PORTD >>= 1;
}
PORTD = 0b00000001;
}
}
PORTD에 대한 while문이 끝이 나면 if 조건문으로 넘어가 PORTD의 초기 값 0b00000001을 선언 해 주었다.
}
-이 결과, 위의 프로그램처럼 초기 값 RD0에서 왼쪽으로 한칸 씩 이동하여 RD7까지 이동하고, RD7에서 다시 오른쪽으로 이동하여 RD0까지 LED 불빛이 이동되는 것을 while(1)문이 반복하여 결과 값을 나타내어준다. 결과 값은 아래의 그림에서 볼 수 있다.
5. 레포트를 쓰고 나서...
-PIC16F917 MCU의 RD7에서 RD0를 발광 다이오드 D7에서 D0에 각각 연결하여 컴퓨터와 연결하고 이동되는 LED와 ROTATE되는 LED를 프로그램을 작성하여 실험 하였는데, 산술적인 LED 이동 방법이 몇 개만 이동 할 때는 쉬울지 모르지만 아주 많은 양을 적어야 할 수 있기 때문에 부담이 되었습니다. 하지만 논리적인 LED 이동 방법을 배우고 난 후 짧은 줄로 수많은 양의 LED를 이동시킬 수 있게 되었습니다. 프로그램을 많이 넣을 필요 없이 while문과 if문으로 간략하게 프로그램을 만들 수 있기 때문에 이 방법이 효율적이고 편리 한 것 같습니다. 이로 인해 간단하게 LED 이동 방향과 이동되는 개수를 조절 할 수 있었고, 전 시간 때 배운 LED 주기 조절하는 방법을 통해 LED가 이동되는 속도를 조절 하는 법을 숙달하여 조금 더 익숙해진 느낌입이다. 이 while문과 if문을 조금 더 응용하여 ROTATE되는 LED 이동을 배웠지만, 이것은 저에겐 조금 어렵게 느껴졌습니다. 산술적인 LED 이동 방법을 하였을 때, 제일 먼저 실행하여 기뻤지만 ROTATE되는 LED 이동에서 생각을 많이 하다가 교수님께서 말씀하시기 전까지 결국 해결하지 못했습니다. 그래도 스스로 전보다 나아지고 있다고 생각하고 앞으로 더욱 나아지도록 열심히 수업 듣겠습니다. 감사합니다~^^

키워드

전자,   전기,   컴퓨터,   마이컴,   공학
  • 가격1,000
  • 페이지수13페이지
  • 등록일2021.02.09
  • 저작시기2013.3
  • 파일형식한글(hwp)
  • 자료번호#1145118
본 자료는 최근 2주간 다운받은 회원이 없습니다.
다운로드 장바구니