인하대 전자회로실험2 2주차 LED동작 제어보고서
- 최초 등록일
- 2020.07.07
- 최종 저작일
- 2019.11
- 6페이지/
MS 워드
- 가격 2,000원
![할인쿠폰받기](/images/v4/document/ico_det_coupon.gif)
목차
1. 과제1. 스위치(C0)를 누르면 모든 LED가 켜지고, 떼면 모든 LED가 꺼지는 프로그램 작성
2. 과제2. 스위치(C0)를 누르면 모든 LED가 켜지고(유지), 이 상태에서 스위치 (C1)를 누르면 모든 LED가 꺼지는(유지) 프로그램 작성
3. 과제3. 스위치(C0)을 누르면 1개의 LED가 왕복하고, 이 상태에서 스위치(C1)를 누르면 해당 위치에서 정지하는 프로그램 작성
4. 실험고찰.
본문내용
아래의 과제들을 시행할 때 구성하였던 회로이다. ATmega128 기판에 핀구조에 각각의 LED판과 스위치가 대응되게 꼽아야 아래의 코드로 회로가 정상동작하게 된다.
과제1. 스위치(C0)를 누르면 모든 LED가 켜지고, 떼면 모든 LED가 꺼지는 프로그램 작성
#include <avr/io.h>
#include <util/delay.h>
// 아래 코드 동작에 필요한 헤더파일들을 포함한다.
int main(void) //함수가 동작할 코드를 적는곳
{
DDRC =0x00; //C포트의 모든단자를 입력으로 사용한다.
DDRF = 0xFF;//F포트의 모든단자를 출력으로 사용한다.
while(1) //아래의 코드가 무한반복된다.
{
if( (PINC & 0x02) ==0x02) //만약 PORTC의 2번핀에 입력된값이 2라면, 즉 2번핀이 HIGH라면
PORTF=0xFF; //PORTF는 전부 1로 만들어서 LED를 전체 다 켜준다.
<중 략>
실험고찰.
1번실험에서 DDRx의 명령어가 통해 입력과 출력포트를 결정하는 것임을 확인하였다. PORT이름을 x에 넣고 1로 선언하면 출력으로, 0으로 선언하면 입력으로 사용된다는 것을 확인하였으며 예를들어, 코드의 내용만 보더라도 스위치가 어떤 포트에 연결되어있고, LED가 어떤 포트에 연결되어있는지 확인 할 수 있다. 또한 1번 과제의 동작, 즉 스위치를 누르고, 떼는것만으로도 LED가 점멸하는 것을 통해, 스위치에 들어온 신호가, 누르고있는 그 순간에만 1이되고, 손을 떼는순간 다시 LOW인 0으로 바뀐다는 것을 확인하였다. 스위치 동작에서 PINC & 0x02로 한 것은, bit에서 and연산자를 사용하여, 버튼이 동시입력되도 원하는 동작을 구현하기위함이다.
참고 자료
없음