C 언어로 배우는 8051 마이크로프로세서 입출력 포트. 2/44 학습목표 및 목차  입출력 포트의 기능을 이해한다.  입출력 포트의 구조를 이해한다.  Read-Modify-Write 명령어를 이해한다.  LED, 7- 세그먼트, 스위치를 이용하여 입출력 포트를.

Slides:



Advertisements
Similar presentations
13 강 논리회로 2 과목 전자계산기 구조 강사 이 민 욱. 13 강 논리회로  논리회로 1. 부울 대수 (Boolean Algebra) 에서 사용하는 기본 연산자 ① 논리부정 : NOT ( ` ) 논리부정은 F = NOT A 의 표현을 F =A` 로 표현 ② 논리곱.
Advertisements

III. AVR 마이크로컨트롤러 용어정리 , AVR, PIC 년대 Intel 사에서 개발한 8 비트 마이크로컨트롤러 AVR 1977 년 Atmel 사에서 개발한 8 비트 RISC 마이크로컨트롤러 Advanced Virtual Risc 의.
Progress Report YoonMo Yeon
6 인터럽트.
컴퓨터와 인터넷.
예비보고서1 : 8개의 푸시버튼 스위치가 있다. 이 스위치에 각각 0~7개까지의 번호를 부여하였다고 하자
패러럴 포트를 이용한 Text LCD 제어 6월 17일 허정수 나선웅.
7 – 세그먼트 동작 시키기 (0~9, A, B, C, D, E, F 표시하기)
03 전자 접촉기 제어 학습목표 ▶ 전자 접촉기의 동작 원리와 기능을 설명할 수 있다.
6장 마이크로프로세서 메모리 및 입출력장치 인터페이스.
아두이노 센서의 연결 디지털 및 아날로그 센서값의 특징 디지털 센서 핀 구조 및 연결하기 아날로그 센서 핀 구조 및 연결하기
제 3 장 74HC541 소자를 이용한 키 입력 및 74HC574로 출력하기.
제7강 학습 내용 주소지정 방식의 예 값 즉시 지정 방식과 실행 예 레지스터 직접지정 방식 메모리 직접지정 방식과 실행 예
어셈블리 문법 보강 4월 10일.
실험 3 - 비선형 연산 증폭기 회로와 능동 필터 전자전기컴퓨터공학부 방 기 영.
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
오브젝트 조합 회로 IT CookBook, VHDL을 이용한 디지털 회로 입문.
RS 및 D 플립플롭 RS Flip Flop 래치는 어떤 입력 레벨에 의해서 제어되는 데 플립플롭은 클록 입력이라고
독립형 모션제어기 사양 - Catalog (optional) XMC-PO04-MOD
제10강 중앙처리장치 1.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
컴퓨터 응용과 3학년 1반 조장 김영조 조원 구본건 , 임선택
DK-128 ADC 실습 아이티즌 기술연구소
임베디드 실습 # LED, 7’Segment 제어
BUCK 컨버터 실험 실험 준비 실험 진행 및 결과 첨부. SCR 게이트 펄스 만들기 목 차
WinCE Device Driver 실습 #2
LCD 모듈의 특징 LCD 컨트롤러 내장으로 모든 디스플레이 기능을 명령어로 제어 8비트 혹은 4비트로 인터페이스
DK-128 실습 EEPROM 제어 아이티즌 기술연구소
타이머카운터 사용법 휴먼네트웍스 기술연구소
PSW : PROGRAM STATUS WORD
ATmega128 FND 실습 휴먼네트웍스 기술연구소
DK-128 FND 실습 아이티즌 기술연구소 김태성 연구원
Microprocessor I/O Port & CLCD Noh Jin-Seok.
어서와 C언어는 처음이지 제14장.
디지털회로설계 (15주차) 17. 시프트 레지스터와 카운터 18. 멀티바이브레이터 * RAM & ROM.
디 지 털 공 학 한국폴리텍V대학.
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
DMX 통신선에 전원(24V) 연결 시 보호 회로 내장 ( 통신-IC 파괴되지 않음 )
플립플롭, 카운터, 레지스터 순서회로 플립플롭 카운터 레지스터.
DK-128 FND 실습 아이티즌 기술연구소
오브젝트 순서회로 IT CookBook, VHDL을 이용한 디지털 회로 입문.
뇌를 자극하는 Windows Server 장. 원격 접속 서버.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
논리회로 설계 및 실험 5주차.
6 레지스터와 카운터.
DK-128 실습 내부 EEPROM 제어 아이티즌 기술연구소 김태성 연구원
DK-128 실습 타이머카운터 사용법 아이티즌 기술연구소
볼링게임 시스템 3조 오지연, 손수경.
패러럴 포트를 이용한 Text LCD 제어 6월 17일 허정수 나선웅.
6. 레지스터와 카운터.
제4강 처리장치 1.
13장 CTC and DMA Slide 1 (of 10).
ATmega128의 특징 아이티즌 기술연구소
컴퓨터 계측 및 실습 디지털 출력 영남대학교 기계공학부.
계산기.
DK-128 개발환경 설정 아이티즌 기술연구소
RAM RAM 읽기 동작(read) RAM 쓰기 동작(write) 1. 주소선을 통해 주소값 입력.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
DK-128 직렬통신 실습 아이티즌 기술연구소
AT MEGA 128 기초와 응용 I 기본적인 구조.
Ⅰ 전자기초 Ⅱ 디지털 논리회로 Ⅲ C언어 기초 Ⅳ AVR 마이크로 컨트롤러 Ⅴ 마이크로 컨트롤러 개발환경
컴퓨터구조 연습문제 발표 Chapter 3 - 컴퓨터의 기능 및 상호연결의 최상위 관점
논리회로 설계 및 실험 4주차.
시리얼 UART 정리 정보통신•컴퓨터 공학부 송명규
디지털회로설계_강의안3 4. X-OR, X-NOR 게이트 5. 오픈컬렉터와 3상태 버퍼/인버터.
TVM ver 최종보고서
AdcRead API 함수 분석 마이크로프로세서.
버스와 메모리 전송 버스 시스템 레지스터와 레지스터들 사이의 정보 전송을 위한 경로
논리회로 설계 및 실험 8주차.
                                  6장 엔코드 디코드 회로 10진수와 2진수의 변환 및 표시 4 7 A B C D BCD 변환.
Presentation transcript:

C 언어로 배우는 8051 마이크로프로세서 입출력 포트

2/44 학습목표 및 목차  입출력 포트의 기능을 이해한다.  입출력 포트의 구조를 이해한다.  Read-Modify-Write 명령어를 이해한다.  LED, 7- 세그먼트, 스위치를 이용하여 입출력 포트를 제어하는 방법을 익힌다. 01. 입출력 포트의 기능과 구조 02. 입출력 포트 실습 1 : LED 구동 03. 입출력 포트 실습 2 : 신호등 제어 04. 입출력 포트 실습 3 : 7- 세그먼트 구동 05. 입출력 포트 실습 4 : 스위치 대응 LED 점등

3/ 입출력 포트의 기능과 구조 1.1 입출력 포트의 기능  8051 은 4 개의 양방향 포트인 P0, P1, P2, P3 을 내장  병렬 I/O(Input/Output) 포트들은 CPU 와 외부장치를 연결해 주는 병렬 입출력 인터페이스 (parallel Input/output interface) 를 제공  바이트 단위로 병렬 입출력 포트를 제어하기 위해서는 먼저 P0, P1, P2, P3 에 대한 특수기능 레지스터의 주소를 정의  대부분의 C 컴파일러에서는 inc 폴더 내에 8051 계열에 따라 사용할 수 있도록 sfr 정의 파일을 추가하였다. 따라서 모든 실습에서는 파일을 참조 하면 된다. sfr P0=0x80;// SFR for P0 sfr P1=0x90;// SFR for P1 sfr P2=0xa0;// SFR for P2 sfr P3=0xb0;// SFR for P3 예

4/ 입출력 포트의 기능과 구조  를 include 하였다는 가정하에 포트 1(90H) 에 데이터 7FH 를 출력하 려면  비트 단위로 제어하기 위해서는 sbit 라는 지정자를 사용하여 각 포트의 비트를 비트 단위로 정의하여야 한다.  포트로 데이터 출력하기 #include void main(void) { ……… P1=0x0f;// P1 포트의 상위 4 비트는 0000, 하위 4 비트는 1111 출력 } P1=0x7f; 예 sbit switch=P1^0; sbit buzzer=P1^1; 예

5/ 입출력 포트의 기능과 구조  포트의 값을 입력하기  포트에 비트 단위로 출력하기 #include void main(void) { unsigned char input;// input 을 지역변수로 선언 input=P1;// P1 포트 값을 입력 } #include sbit led0=P1^0;// P1 포트의 비트 0 을 비트변수 led0 으로 선언 sbit led1=P1^1; // P1 포트의 비트 1 을 비트변수 led1 로 선언 sbit led2=P1^2; // P1 포트의 비트 2 를 비트변수 led2 로 선언 sbit led3=P1^3; // P1 포트의 비트 3 을 비트변수 led3 으로 선언 void main(void) { led0=1;// P1.0 에 1 출력 led1=0;// P1.1 에 0 출력 led2=1;// P1.2 에 1 출력 led3=0;// P1.3 에 0 출력 }

6/ 입출력 포트의 기능과 구조 1.2 포트 0(P0.0~P0.7)  어드레스 및 데이터 버스로 사용할 경우  CPU 는 제어선 (control line) 을 high 로 하면, 위쪽 n 형 MOS 는 on 이 되고 MUX 의 스 위치는 위쪽으로 닫히므로 “ 어드레스 / 데이터 ” 신호가 아래쪽 n 형 MOS 를 통하여 출력  CPU 는 어드레스 A7~A0 과 데이터 D7~D0 를 이 라인을 통하여 멀티플렉스하므로 결국 포트 0 는 하위 어드레스 버스와 데이터 버스로서의 역할을 하는 것이다. 포트 0 의 구조

7/ 입출력 포트의 기능과 구조  범용 I/O 포트로 사용할 경우  CPU 는 제어선 (control line) 에 low 신호를 보내므로 위쪽 n 형 MOS 는 off 되 어 Open Drain 의 상태가 된다. 따라서 포트 0 을 범용 I/O 포트로 사용할 경 우에는 반드시 외부에 풀업저항을 연결해야 한다.  데이터 버스 사용되는 경우  특수한 경우로서 8751 에 프로그램을 기록 (write) 하는 경우에 P0 가 데이터 버스로 사용된다. 이 경우에도 제어선 (control) 에는 high 신호가 출력되므로 풀업저항을 외부에 달아 주어야 한다.

8/ 입출력 포트의 기능과 구조 1.3 포트 1(P1.0~P1.7)  포트 1 은 기본적으로 범용 I/O 포트로 사용된다. 내부에 풀업저항이 있기 때문에 범용 I/O 포트로 사용할 경우 외부에서 풀업저항을 연결하지 않아도 된다.  8751 내부의 EPROM 에 프로그램을 쓰는 (write) 경우 어드레스 버스 A7~A0 으로 사용한다. ROM 및 EPROM 의 내용을 확인 (verify) 하는 동안에도 같다.  8032AH, 8052AH, 8752BH 에서는 포트 1 의 P1.0 과 P1.1 이 각각 T2 와 T2EX 로 서의 기능도 한다. 포트 1 의 구조

9/ 입출력 포트의 기능과 구조 1.4 포트 2(P2.0~P2.7)  범용 I/O 포트로 사용가능  외부 프로그램, 데이터 메모리와 데이터 전송시 상위 어드레스 (A15~A8) 로 사용  8751 내부의 EPROM 에 프로그램을 (write) 할 때는 상위 어드레스 버스 (A15~A8) 로 사용  외부에 8 비트 어드레스만을 사용하는 기억소자를 인터페이스 하였을 경우에는 포 트 2 를 어드레스 버스로 사용 가능 포트 2 의 구조

10/ 입출력 포트의 기능과 구조 1.5 포트 3(P3.0~P3.7)  내부 풀업을 갖는 있는 8 비트 준 양방향 포트이며, 이것을 출력포트로 사용할 경우 에는 1 개의 표준 TTL(4 개의 LS TTL) 을 구동 가능  보통 범용 I/O 포트로 사용되며, 인터럽트, 타이머, 직렬포트 외부 메모리 등을 사 용하는 경우에는 특수기능을 수행 포트 3 의 구조

11/ 입출력 포트의 기능과 구조 포트 핀명칭기 능기 능 P3.0RxD 직렬통신에서 수신 핀으로 사용 P3.1TxD 직렬통신에서 송신 핀으로 사용 P3.2 외부 인터럽트 0 요청 핀으로 사용 P3.3 외부 인터럽트 1 요청 핀으로 사용 P3.4T0 타이머 / 카운터 0 의 외부 클록 입력핀으로 사용 P3.5T1 타이머 / 카운터 1 의 외부 클록 입력핀으로 사용 P3.6 외부 데이터 메모리의 write strobe 신호 P3.7 외부 데이터 메모리의 read strobe 신호 포트 3 의 특수기능

12/ 입출력 포트의 기능과 구조 1.6 Read-Modify-Write 명령  목적지 오퍼랜드가 포트가 되는 명령 즉, 연산의 결과가 포트에 저장되는 명령들 을 말한다.  포트의 데이터를 읽어서 (read) CPU 내에서 연산 (modify) 을 하고 다시 포트로 쓰 는 (write) 명령어이다.  데이터를 읽을 때에는 버퍼를 통해서 읽으므로 핀의 상태가 아닌 플립플롭의 출 력값을 읽게 된다. 이것은 모든 포트에 해당된다.  명령어의 예 ANLP1, A ORLP2, A XRLP2, A JBCP1.1, LABEL CPLP3.0 INCP1 DECP2 DJNZP3, LABEL CJNEP0, #FFH, LABEL

13/ 입출력 포트 실습 1 : LED 구동 2.1 기본 이론  LED(Light Emitting Diode) : 상태 표시를 할 수 있는 소자 회로기호  발광효율이 높고, 저 전류에서 고출력을 얻을 수 있다.  응답속도가 빠르고 펄스동작과 같은 고주파 변조가 가능하다.  전류제어로 광 출력을 쉽게 변경할 수 있다.  소형 경량이며, 수명이 길고 소비전력이 적다. LED 특징

14/ 입출력 포트 실습 1 : LED 구동 포트의 상태가 0 이면, LED 는 ON  전류 구동 소자로 통상 2V 정도의 전압을 가하면 약 3~20mA 의 전류가 흘러서 점등되므로 +5V 의 직류전원에서 사용할 때에는 200~350  의 저항을 직렬로 연 결하여 사용  LED 구동 ( 기본 ) 회로 sink 전류 구동 source 전류 구동 이 방법을 많이 사용 포트의 상태가 1 이면, LED 는 ON

15/ 입출력 포트 실습 1 : LED 구동  TTL 을 이용한 LED 구동 회로  트랜지스터를 이용한 LED 구동 회로 Sink 전류 구동 Source 전류 구동 Sink 전류 구동 Source 전류 구동 포트의 상태가 1 이면, LED 는 ON 포트의 상태가 0 이면, LED 는 ON 포트의 상태가 1 이면, LED 는 ON

16/ 입출력 포트 실습 1 : LED 구동 2.2 실습 목적  LED 를 약 0.5 초 간격으로 순차적으로 점등하는 프로그램을 작성하여 동작 LED 점등 회로도 LED 점등 순서도

17/ 입출력 포트 실습 1 : LED 구동 2.3 소요 부품 번호품명규격수량비고 1CPUAT89S511AT89C51, Atmel 2 수정 진동자 12MHz1 크리스털 3 세라믹 커패시터 20pF2 발진용 4 전해 커패시터 10  F 116V 5LED 빨간색 8 55 6 저항 330  81/4W 7 저항 4.7K  11/4W 8 스위치 TACT1 Reset 용, 소형 9 IC 소켓 40pin1 DIP 형 10 만능기판 SYP ×79mm, phenol 11 DC 파워 잭 1.3  1 어댑터의 B, C 형 잭과 호 환 9~11 번 : 기판에 제작 시 필요

18/ 입출력 포트 실습 1 : LED 구동  부품 모양 AT89S51 수정진동자 (12MHz) 20pF10uF LED(5  ) 330  4.7K  스위치 만능기판 (SYP-1108)IC 소켓 (40 핀 ) DC 파워잭

19/ 입출력 포트 실습 1 : LED 구동 2.4 프로그램 P05_01.c #include void delay(unsigned int i)// 시간지연 { while(i--); } void main(void) { unsigned char led; led=0xfe;// 초기 데이터 do { P1=led;// P1 포트로 데이터 출력 led=(led<<1) | 0x01;// 왼쪽으로 시프트하고 빈자리에는 1 을 채움 (next 데 이터 ) if (led==0xff) led=0xfe;// 마지막 데이터인지 검사 delay(0xb100);// 약 0.5 초 지연 } while(1); }

20/ 입출력 포트 실습 1 : LED 구동 2.5 과제 LED 점등 패턴을 다양하게 변화시킨다. LED 점등 패턴 2 LED 점등 패턴 초 간격으로 점등

21/ 입출력 포트 실습 1 : LED 구동 LED 점등 패턴 4 LED 점등 패턴 초 간격으로 점등 중앙으로 모일 때는 0.5 초 간격으로, 퍼질 때는 0.2 초 간격으로 동작

22/ 입출력 포트 실습 1 : LED 구동 완성 사진

23/ 입출력 포트 실습 2 : 신호등 제어 3.1 실습 목적  교차로에서의 신호등을 제어한다. 교차로 신호등 모 델 신호 상태 Route ARoute B G Y R 루트별 신호등 점등 패턴

24/ 입출력 포트 실습 2 : 신호등 제어 신호등 제어 회로도

25/ 입출력 포트 실습 2 : 신호등 제어 3.2 소요 부품 번호품명규격수량비고 1CPUAT89S511AT89C51, Atmel 2TTL74041 NOT 게이트 3LED 빨간색 4 55 4LED 녹색 4 55 5LED 노란색 4 55 6 수정 진동자 12MHz1 크리스털 7 세라믹 커패시터 20pF2 발진용 8 전해 커패시터 10  F 116V 9 저항 330  11/4W 10 저항 4.7K  11/4W 11 스위치 TACT1 Reset 용, 소형 12 IC 소켓 40pin1 DIP 형 13 IC 소켓 14pin1 DIP 형 14 만능기판 UNI-96GH1115x160mm, epoxy 15 DC 파워 잭 1.3  1 어댑터의 B, C 형 잭과 호환 12~15 번 : 기판에 제작 시 필요

26/44  부품 모양 AT89S51 수정진동자 (12MHz) 20pF10uF LED(5  ) 330  4.7K  스위치 IC 소켓 (40 핀 ) DC 파워잭 7404 IC 소켓 (14 핀 ) 03. 입출력 포트 실습 2 : 신호등 제어 LED(5  ) 만능기판 (UNI-96GH)

27/ 입출력 포트 실습 2 : 신호등 제어 3.3 프로그램 P05_02.c #include void delay(unsigned int ms)// 시간지연 (ms) { unsigned int i, j; for (i=1; i <= ms; i++) for (j=1; j <= 125; j++);// 1 ms 지연 } void main(void) { do { P1=0x21;// 루트 A 녹색 신호, 루트 B 빨간색 신호 delay(2000);// 2 초 지연 P1=0x11;// 루트 A 노란색 신호, 루트 B 빨간색 신호 delay(500);// 0.5 초간 지연 P1=0x0c;// 루트 A 빨간색 신호, 루트 B 녹색 신호 delay(2000);// 2 초 지연 P1=0x0a;// 루트 A 빨간색 신호, 루트 B 노란색 신호 delay(500);// 0.5 초 지연 } while(1); }

28/ 입출력 포트 실습 2 : 신호등 제어 3.4 과제 교차로에서 대부분의 신호등은 신호 4 개 ( 빨간색, 녹색 ( 직진 ), 녹색 화살표 ( 좌 회전 ), 노란색 ) 로 이루어져 있다. 실습의 회로와 프로그램을 수정하여 각 동작 을 확인하여라. 직진과 좌회전은 동시 신호라 가정한다. 동시 신호를 고려한 신호등 제어 회로도

29/ 입출력 포트 실습 2 : 신호등 제어 완성 사진

30/ 입출력 포트 실습 3 : 7- 세그먼트 구동 4.1 기본 이론  7-Segment 란 ? LED 를 7개 실장 한 것으로 숫자를 표시할 수 있음  접속방식 Common Anode(CA) 방식 Common Cathode(CC) 방식

31/ 입출력 포트 실습 3 : 7- 세그먼트 구동  7-Segment 핀 배치도 4.2 실습 목적 7-Segment 를 이용하여 10 진 숫자 0~9 까지를 1 초 간격으로 순차적으로 표시 하는 프로그램을 작성한다. 여기서 Font 는 다음과 같다.

32/ 입출력 포트 실습 3 : 7- 세그먼트 구동 7- 세그먼트 구동 회로도

33/ 입출력 포트 실습 3 : 7- 세그먼트 구동 4.3 소요 부품 번호품명규격수량비고 1CPUAT89S511AT89C51, Atmel 2 7- 세그먼트 FND5071 공통 애노드 (CA) 3 수정 진동자 12MHz1 크리스털 4 세라믹 커패시터 20pF2 발진용 5 전해 커패시터 10  F 116V 6 저항 330  11/4W 7 저항 4.7K  11/4W 8 스위치 TACT1 Reset 용, 소형 9 IC 소켓 40pin1 DIP 형 10 만능기판 SYP ×79mm, phenol 11 DC 파워 잭 1.3  1 어댑터의 B, C 형 잭과 호환 9~11 번 : 기판에 제작 시 필요

34/44  부품 모양 AT89S51 수정진동자 (12MHz) 20pF 10uF 330  4.7K  스위치 만능기판 IC 소켓 (40 핀 ) DC 파워잭 7- 세그먼트 04. 입출력 포트 실습 3 : 7- 세그먼트 구동

35/ 입출력 포트 실습 3 : 7- 세그먼트 구동 4.4 프로그램 P05_03.c #include code unsigned char table[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78, 0x00,0x10}; void delay(unsigned int ms)// 시간지연 (ms) { unsigned int i, j; for (i=1; i <= ms; i++) for (j=1; j <= 125; j++);// 1 ms 지연 } void main(void) { unsigned char i; do { for (i=0; i<10; i++) { P1=table[i];// P1 포트로 데이터 출력 delay(1000);// 1 초 지연 } } while(1); }

36/ 입출력 포트 실습 3 : 7- 세그먼트 구동 4.5 과제  9 부터 0 까지 숫자를 약 1 초 간격으로 순차적으로 디스플레이하는 프로그 램을 작성하여 그 동작을 확인하여라.  7- 세그먼트를 이용하여 아래의 영문자를 약 1 초 간격으로 교대로 디스플레 이하는 프로그램을 작성하여 그 동작을 확인하여라.

37/ 입출력 포트 실습 3 : 7- 세그먼트 구동 완성 사진

38/ 입출력 포트 실습 4 : 스위치 대응 LED 점등 5.1 실습 목적 4 개 스위치의 on-off 에 대응해서 4 개의 LED 를 점등하는 프로그램을 작성하고 회로 를 동작시킨다. 예를 들어 SW1 이 on 되면 이에 대응하는 LED1 이 on 이 된다. 스위치 on-off 에 따른 LED 점등 회로도

39/ 입출력 포트 실습 4 : 스위치 대응 LED 점등 5.2 소요 부품 번호품명규격수량비고 1CPUAT89S511AT89C51, Atmel 2LED 빨간색 4 55 3 스위치 TACT5 Reset 용, 소형 4 수정 진동자 12MHz1 크리스털 5 세라믹 커패시터 20pF2 발진용 6 전해 커패시터 10  F 116V 7 어레이 저항 4.7K  1 SIP 5P, 풀업용 8 저항 330  41/4W 9 저항 4.7K  11/4W 10 IC 소켓 40 핀 1 DIP 형 11 만능기판 SYP ×79mm, phenol 12 DC 파워 잭 1.3  1 어댑터의 B, C 형 잭과 호 환 10~12 번 : 기판에 제작 시 필요

40/44  부품 모양 AT89S51 수정진동자 (12MHz) 20pF 10uF LED(5  ) 330  4.7K  스위치 만능기판 IC 소켓 (40 핀 ) DC 파워잭 05. 입출력 포트 실습 4 : 스위치 대응 LED 점등 어레이 저항 (4.7K  )

41/ 입출력 포트 실습 4 : 스위치 대응 LED 점등 5.3 프로그램 P05_04.c #include void delay(unsigned char i) { while(i--); } void main(void) { unsigned char in_data; P1=0x0f;// P1.3~P1.0 를 입력포트로 설정 do { in_data=P1;// P1 포트 값을 읽음 in_data=(in_data<<4) | 0x0f;// 스위치 상태를 상위 4 비트로 이동. 하위 4 비트 1111 P1=in_data;// LED on & off delay(100);// 디바운싱을 위한 지연 } while(1);// 반복 }

42/ 입출력 포트 실습 4 : 스위치 대응 LED 점등 5.4 과제  실습 프로그램은 바이트 단위로 입력해서 바이트 단위로 출력했다. 이번에 는 비트 단위로 스위치 상태를 입력해서 해당 LED 를 on/off 하는 프로그램 을 작성하고 동작을 확인하여라.  실습 프로그램은 스위치가 눌린 동안에만 해당 스위치가 on 되었다. 이를 다음 스위치가 눌릴 때까지 계속 on 되도록 수정하고 동작을 확인하여라. 예를 들어, 먼저 SW1 을 눌렸다 떼면 LED1 이 계속 on 되다가 SW2 를 눌렀 다 떼면 LED1 은 off 되고 LED2 가 on 된다.

43/ 입출력 포트 실습 4 : 스위치 대응 LED 점등 완성 사진

IT CookBook, C 언어로 배우는 8051 마이크로프로세서