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

소개글

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

목차

1. Define the role of INTE & INTF bits.

2. 하드웨어 구성

3. Explain each statement of Program INT.c & IOC.c

4. What is difference between INT.c & IOC.c

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

본문내용

B = 0b11110000;
7번 bit 0 -> Pull-up 저항을 사용한다.
OPTION_REG = 0b00000000;
내부에 있는 Pull up 저항을 사용 한다.
WPUB = 0b11110000;
PORTD = 0b00000000;
while(1){
if(LED_ctrl == 1){
PORTD = LED_data;
__delay_ms(50);
LED_data <<= 1;
if(LED_data == 0x00)
LED_data = 0x01;
}
else if(LED_ctrl == 2){
PORTD = LED_data;
__delay_ms(50);
LED_data >>= 1;
if(LED_data == 0x00)
LED_data = 0x80;
}
else if(LED_ctrl == 3){
PORTD = 0b10101010;
__delay_ms(150);
PORTD = 0b01010101;
__delay_ms(150);
}
else{
PORTD = 0xff;
__delay_ms(250);
PORTD = 0x00;
__delay_ms(250);
}
}
}
· 스위치를 이용하여 LED 불이 들어오게 하는 프로그램이다.
· 스위치8번 -> D0에서 D7으로 LED가 1개씩 이동한다,
· 스위치7번 -> D7에서 D0으로 LED가 1개씩 이동한다,
· 스위치6번 -> LED의 불빛이 10101010과 01010101을 반복한다.
· 스위치5번 -> LED의 불빛이 11111111과 00000000을 반복한다.(초기동작)
· 프로그램을 시작 하면 초기 동작으로 LED의 불빛이 11111111과 00000000을 반복한다.
● IOC_2.c
#include
#define _XTAL_FREQ 4000000
unsigned char SW_data;
unsigned char LED_ctrl, LED_data;
void interrupt IOC_ist(void)
{
if(RBIF){
RBIF = 0;
SW_data = (PORTB)&(0xf0);
switch(SW_data){
case(0b01110000) :
LED_ctrl = 1;
break;
case(0b10110000) :
LED_ctrl = 2;
break;
case(0b11010000) :
LED_ctrl = 3;
break;
case(0b11100000) :
LED_ctrl = 4;
break;
default :
LED_ctrl = 0;
break;
}
}
}
void main(void)
{
OSCCON = 0b01100000;
TRISB = 0b11110000;
TRISD = 0b00000000;
INTCON = 0b10001000;
IOCB = 0b11110000;
OPTION_REG = 0b00000000;
WPUB = 0b11110000;
PORTD = 0b00000000;
while(1){
if(LED_ctrl == 0){
PORTD = 0xff;
__delay_ms(250);
PORTD = 0x00;
__delay_ms(250);
}
else if(LED_ctrl == 1){
PORTD = LED_data;
__delay_ms(50);
LED_data <<= 1;
if(LED_data == 0x00)
LED_data = 0x01;
}
else if(LED_ctrl == 2){
PORTD = LED_data;
__delay_ms(50);
LED_data >>= 1;
if(LED_data == 0x00)
LED_data = 0x80;
}
else if(LED_ctrl == 3){
PORTD = 0b10101010;
__delay_ms(150);
PORTD = 0b01010101;
__delay_ms(150);
}
else if(LED_ctrl == 4){
PORTD = 0b11110000;
__delay_ms(150);
PORTD = 0b00001111;
__delay_ms(150);
}
}
}
· 스위치 case와 브레이크를 이용하여 LED 불이 들어오게 하는 프로그램
· IOC_1.c 프로그램에 case와 break만 추가 적으로 사용하였다.
· 스위치8번 -> D0에서 D7으로 LED가 1개씩 이동한다,
· 스위치7번 -> D7에서 D0으로 LED가 1개씩 이동한다,
· 스위치6번 -> LED의 불빛이 10101010과 01010101을 반복한다.
· 스위치5번 -> LED의 불빛이 11110000과 00001111을 반복하도록 만들어 보았다.
· 스위치5번 -> LED의 불빛이 11111111과 00000000을 반복한다.(초기동작)
· 프로그램을 시작 하면 초기 동작으로 LED의 불빛이 11111111과 00000000을 반복한다.
4. What is difference between INT.c & IOC.c
● INT (INT on RB0 pin)
· 엣지 트러가 RB0 pin에 INT Flag에 설정된다.
· INTCON Register에 INTE bit가 설정됨으로써 Interrupt Service Routine이 실행된다.
● IOC - (Interrupt On Change on PORTB)
· PORTB의 현재 값과 이전의 값이 같이 않으면 IOC Flag를 설정한다.
· INTCON Register에 RBIE bit가 설정됨으로써 Interrupt Service Routine이 실행된다.
5. 레포트를 쓰고 나서...
· 이 레포트를 통해 RB0 INT와 IOC에 대해 배웠습니다. 실험을 통해서 전 시간에 동작이 되지 않았던 이유가 RB7, RB6 pin이 스위치 기능과 함께 사용 되서 동작이 안 되었던 것였고, 이로 인해 Pull-up 저항을 따로 사용하고, 실행 시킬 때는 보드와 연결 되어있는 선을 빼고 실행하면 기기에 혼동이 오지 않다는 것도 알았습니다. IOC.c 프로그램을 만들 때 “이런 동작도 시켜보고 싶다“라는 생각으로 IOC.c 프로그램을 약간 추가해보았습니다. 아주 간단한 동작이지만 나름 긴 프로그램에 제 지식으로 추가 할 정도가 된다하니 흥미가 더욱 생겼습니다. Project A를 곧 해야 하는데 어떤 프로그램들이 나올지 기대가 됩니다. 감사합니다.^^

키워드

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