마이크로소프트 박종호.

Slides:



Advertisements
Similar presentations
1 2011` ( 금 ) 신성장동력 인력양성 정책방향. ◎ 3 대 분야 17 개 신성장동력 인력 중점 양성 -> 『신성장동력 인력양성 추진계획』 수립 (‘09.5 월 ) 3 대 분야 17 개 신성장동력 녹색기술 ①신재생에너지 ②탄소저감에너지 ③고도 물처리 ④.
Advertisements

조건문, 함수 정대진 ( ) C Programming -3 일차 ITA 8 월 강의.
스택 스택 추상자료형 스택 스택의 구현 스택의 응용 한빛미디어(주).
3 8051을 위한 C 언어 프로그래밍.
프로그래밍1 및 실습 (C언어) - 3장 기본자료형 (3.6부터 끝까지) -
Vision System Lab, Sang-Hun Han
제 3 장 변수와 자료형.
4. ADC 충북인력개발원 전자과 공학박사 강원찬.
다섯째날 : 외부 인터럽트 - 당근이의 AVR 갖고 놀기 - 당근닷컴
리니어 스케일 김한수.
C++ Espresso 제2장 제어문과 함수.
컬러 LED바 이해하기 목차 재료준비 및 브레드 보드 배선 구성하기 컬러 LED바 이해 및 프로그램 실습 응용 작품 만들기.
Programming을 이용한 ECG증폭기 설계
C 프로그래밍.
DC Motor Control.
C 6장. 함수 #include <stdio.h> int main(void) { int num;
제3장 추가 실습 3장 관련 C 언어 프로그래밍 실습.
C 11장. 포인터의 활용 #include <stdio.h> int main(void) { int num;
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
제5장 제어명령
처음으로 배우는 C 프로그래밍 제2부 기초 제5장 반복문.
Autokey Cipher 자동키 암호 Department of Cyber Security / 박건주.
7. while 문의 흐름 제어.
AVR - Chapter 15 황 지 연.
Chapter 4 – 연 산 자 Outline 4.1 산술 연산자 4.2 관계 연산자 4.3 동등 연산자 4.4 논리 연산자
Chapter 06. 선택문.
AVR - Chapter 2 황 지 연.
C언어 프로그래밍의 이해 Ch05. 명령문 Phylogenetic: 계통, 발생(학)의.
다섯째날 : 외부 인터럽트 - 당근이의 AVR 갖고 놀기 - 당근닷컴
캡스톤 물리 음성 인식을 통한 무드 등 지금은 6시 55분 조.
아두이노 프로그래밍 2일차 – Part2 PSD 거리센서 강사: 김영준 목원대학교 겸임교수.
아두이노 프로그래밍 2일차 – Part2 PSD 거리센서 강사: 김영준 목원대학교 겸임교수
제 3 장 상수와 변수
쉽게 풀어쓴 C언어 Express 제7장 반복문 C Express.
임베디드 시스템을 위한 C프로그래밍 기법 3.7 ~ 4.5 장 Raphael.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
자전거를 배우려면 안장에 올라가 페달을 밟아라.
제2장 제어구조와 배열 if-else 문에 대하여 학습한다. 중첩 if-else 문에 대하여 학습한다.
8051 IO-PORT 정보통신•컴퓨터 공학부 송명규
함수와 변수 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
Moving Walk 17조 장철훈 장황재 이연호.
제어문 & 반복문 C스터디 2주차.
선택 정렬 #define SWAP(x, y, t) {(t) = (x); (x) = (y); (y) = (t);}
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
Java의 정석 제 4 장 조건문과 반복문 Java 정석 남궁성 강의
자바 5.0 프로그래밍.
센서값 전송하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
Fflush 사용이유 및 방법 [이유] 키보드에서 입력된 내용은 입력버퍼에 저장되었다가 Enter 키가 들어오면 프로그램으로 전달됨 이 때 입력버퍼에 있는 Enter 키도 프로그램으로 전달됨 그러므로 아래와 같은 프로그램에서 문자 하나를 입력해도 Enter키도 입력된 것으로.
-Part2- 제1장 1차원 배열이란 무엇인가.
6장 반복제어문 for 문 while 문 do while 문 기타 제어문.
C 코드최적화 세명대학교 AI연구실 양승조.
C언어 프로그래밍의 이해 Ch05. 명령문.
-Part1- 제7장 반복문이란 무엇인가.
-Part1- 제8장 조건문이란 무엇인가 (교재 199페이지 ~ 224페이지)
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express Slide 1 (of 28)
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
Chapter 08 조건문.
1학기 정리 지난 학기에 배운 내용을 복습해 본다..
아두이노 프로그래밍 4일차 – Part1 모바일 로봇 강사: 김영준 목원대학교 겸임교수
반복문의 기능 반복문 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 while문
어서와 C언어는 처음이지 제16장.
아두이노 서보로봇 제어 (블루투스 스마트폰 조종) -03차시-
C 13장. 입출력 라이브러리 #include <stdio.h> int main(void) { int num;
printf("Global Korea\n");
배열, 포인터, 함수 Review & 과제 1, 2.
PHP 기초문법 PHP를 공부하는데 있어 가장 기초가 되는 PHP기초문법에 대해서 배워 봅니다.
Presentation transcript:

마이크로소프트 박종호

서론 8051로 무엇을 할 것인가? 링카운터 존슨카운터 +@ 학번

순서 1.회로도 2. 실행프로그램 1 3. 실행프로그램 2 4. 학번 5. 프로그램 설명

1.회로도

2. 실행프로그램 1 1)링카운터(LEFT ▷ RIGHT) LED가 오른쪽으로 켜지면서 이동 2)링카운터(RIGHT ▷ LEFT) LED가 왼쪽으로 켜지면서 이동 3) +@추가 (LEFT ▷ RIGHT) LED가 오른쪽으로 꺼지면서 이동 4 )+@추가 (RIGHT ▷ LEFT) LED가 왼쪽으로 꺼지면서 이동

2-1 링 카운터(LEFT ▷ RIGHT) 스위치 :■ □ □ □ (■ = on. □ = off)

2-2 링 카운터(RIGHT ▷ LEFT) 스위치 : ■ □ ■ □ (■ = on. □ = off)

2-3 +@(LEFT ▷ RIGHT) 스위치 : ■ □ ■ ■ (■ = on. □ = off)

2-4 +@(RIGHT ▷ LEFT) 스위치 : ■ □ □ ■ (■ = on. □ = off)

3. 실행프로그램 2 1)존슨 카운터 (LEFT ▷ RIGHT) 오른쪽으로 하나씩 LED 켜짐 2)존슨 카운터 (RIGHT ▷ LEFT) 왼쪽으로 하나씩 LED 켜짐 3)+ @ 추가 (LEFT ▷ RIGHT) 오른쪽으로 하나씩 LED 꺼짐 4)+ @ 추가 (RIGHT ▷ LEFT) 왼쪽으로 하나씩LED 꺼짐

3-1 존슨 카운터 (LEFT ▷ RIGHT) 스위치 :□ ■ □ □ (■ = on. □ = off)

3-2 존슨 카운터 (RIGHT ▷ LEFT ) 스위치 :□ ■ ■ □ (■ = on. □ = off)

3-3 +@(LEFT ▷ RIGHT) 스위치 :□ ■ ■ ■ (■ = on. □ = off)

3-4 +@ (RIGHT ▷ LEFT ) 스위치 :□ ■ □ ■ (■ = on. □ = off)

4. 학번 INT0 키(토글 스위치)를 누를 때마다 학번이 순서대로 찍힘. ‘2’ ‘0’ ‘0’ ‘2’ ‘1’ ‘7’ ‘5’ ‘3’ 순으로.

5.프로그램 설명 include "C:\mda\Sim51\C\INC\win51.h" #define SELECT (*(unsigned char*)(0x2fc48)) void L1(); //함수이름 2-1 프로그램 void L2(); //2-2 프로그램 void R1(); //2-3 프로그램 void R2(); //2-4 프로그램 void L3(); //3-1 프로그램 void L4(); //3-2 프로그램 void R3(); //3-3 프로그램 void R4(); //3-4 프로그램 void REQ(); //스위치 값 확인 프로그램 //p0는 앞부븐 세그먼트 뒷부분 스위치.p1는 led char led, sw, select, a, b, c, d, e, f, g, h ,i; char count = 0; //인터럽트 횟수를 저장. sbit sw1=P0^4; //포트를 비트단위로 sbit sw2=P0^5; sbit sw3=P0^6; sbit sw4=P0^7;

/* 스위치 구문을 사용해서 스위치 상태에 맞는 함수를 실행 시킨다*/ void delay(int del) { while(del--); //딜레이 함수 } void main(void) SELECT = 0x9c; IT0= 1; //인터럽트 0 EX0 =1; //외부인터럽트 set EA = 1; //모든 인터럽트 set PX0= 1; // 인터럽트0을 우선순위 REQ(); //스위치 값을 체크. while(1) P1 = 0xff; //LED에 초기값으로 점등 옆으로-> switch(select) //스위치 상태를 ‘select’로 저장 { case 1: L1(); break; case 2: L2(); break; case 3: R1(); break; case 4: R2(); break; case 5: L3(); break; case 6: L4(); break; case 7: R3(); break; case 8: R4(); break; } /* 스위치 구문을 사용해서 스위치 상태에 맞는 함수를 실행 시킨다*/

//링카운터 void L1() //왼쪽부터 점등이동 { do P1= led = 0x7f; //초기값 지정 delay(40000); //지연 for(i=0; i<8;i++) //조건 반복 REQ(); // 스위치 상태 읽음 if(a!=1) break; //스위치 값이 변경되면 빠져나감 delay(40000); led = (led>>1)| 0x80; P1 = led; } }while(a); //스위치 값이 바뀌면 while문을 빠져나감 옆으로-> //링카운터 void L2(void) //오른쪽부터 점등이동 { do P1 = led = 0xfe; delay(40000); for(i=0; i<8;i++) REQ(); if(b!=1) break; //스위치 값이 바뀌면 빠져나감 led = (led <<1)|0x01; P1= led; } }while(b); } //스위치값이 유지되면 b=1 무한반복 //스위치 갑이 바뀌면 b=0 종료

//+@ 프로그램 void R1(void) //왼쪽부터 점등 꺼지며 이동 { do P1 = led = 0x80; delay(40000); for(i=0; i<8;i++) REQ(); if(c!=1) break; led = (led >>1); P1= led; } }while(c); 옆으로-> //+@ 프로그램 void R2(void) //오른쪽 부터 점등 꺼지며 이동 { do P1 = led = 0x01; delay(40000); for(i=0; i<8;i++) REQ(); if(d!=1) break; led = (led <<1); P1= led; } }while(d);

//존슨 프로그램 void L3(void) //왼쪽부터 점등 하나씩 증가 { do P1 = led = 0x7f; delay(40000); for(i=0; i<8;i++) REQ(); if(e!=1) break; led = (led >>1); P1= led; } }while(e); 옆으로-> //존슨 프로그램 void L4(void) //오른쪽 부터 점등 하나씩 증가 { do P1 = led = 0xfe; delay(40000); for(i=0; i<8;i++) REQ(); if(f!=1) break; led = (led <<1); P1= led; } }while(f);

//+@ 프로그램 void R3(void)//왼쪽부터 하나씩 꺼짐 { do P1 = led = 0x80; delay(40000); for(i=0; i<8;i++) REQ(); if(g!=1) break; led = (led >>1)|0x80; P1= led; } }while(g); } 옆으로-> //+@ 프로그램 void R4(void)//오른쪽부터 하나씩 꺼짐 { do P1 = led = 0x01; delay(40000); for(i=0; i<8;i++) REQ(); if(h!=1) break; led = (led <<1)|0x01; P1= led; } }while(h);

//인터럽트 0 함수 void EX(void) interrupt 0 { char num; count++; //인터럽트가 걸릴 때마다 증가 switch(count) case 1: num = 0xf2; P0= num; break; //p0에 ‘2’를 찍음 case 2: num = 0xf0; P0= num; break; //p0에 ‘0’를 찍음 case 3: num = 0xf0; P0= num; break; //p0에 ‘0’를 찍음 case 4: num = 0xf2; P0= num; break; //p0에 ‘2’를 찍음 case 5: num = 0xf1; P0= num; break; //p0에 ‘1’를 찍음 case 6: num = 0xf7; P0= num; break; //p0에 ‘7’를 찍음 case 7: num = 0xf5; P0= num; break; //p0에 ‘5’를 찍음 case 8: num = 0xf3; P0= num; break; //p0에 ‘3’를 찍음 default : count = 0; P0= 0x0f; } /* 카운트 숫자가 증가함에 따라 학번을 찍어낸다, 8을 넘어가면 다시 초기화 */

//스위치 값 받는 함수 void REQ(void) { a=b=c=d=e=f=g=h=0; if((sw1==0)&&(sw2==1)) //스위치 1번으로 링을 돌리겠음 if((sw3==1)&&(sw4==1)) //링 카운터 왼 -> 오른쪽 a=1, select=1; else if((sw3==0)&&(sw4==1)) //링 카운터 오른쪽 -> 왼 b=1, select=2; else if((sw3==0)&&(sw4==0)) //+@ 왼 ->오른쪽 c=1, select=3; else if((sw3==1)&&(sw4==0)) //+@ 오른쪽 ->왼 d=1,select=4; } else if((sw1==1)&&(sw2==0)) // 스위치 2번으로 존슨 돌리겠음 if((sw3==1)&&(sw4==1)) // 존슨 카운터 왼->오른쪽 e=1, select=5; else if((sw3==0)&&(sw4==1)) //존슨 카운터 오른쪽 -> 왼 f=1, select=6; else if((sw3==0)&&(sw4==0)) //+@ 왼 -> 오른쪽 g=1, select=7; else if((sw3==1)&&(sw4==0)) //+@ 오른쪽 -> 왼 h=1, select=8; //영문 소문자로 값을 받아서 while 구문을 무한 반복시킴 // select 값으로 스위치 구문에서 해당 함수를 호출.