일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 혼자 공부하는 SQL
- 혼자 공부하는 컴퓨터 구조 + 운영체제
- sqld
- INSERT
- 첫 프로그래밍
- 데이터 모델링
- youtube review
- 명령 프롬프트
- 열거형
- 컴퓨터 활용 능력
- Update
- 인덱스의 개념과 장단점
- 컴퓨터 활용 능력 1급
- 컴퓨터 구조
- mysql 설치 방법과 정상 작동 확인하기
- 2025-02-13
- 웹 디자인 기능사
- github에 새 리포지토리 추가하기
- 운영체제
- 혼자 공부하는 컴퓨터 구조 및 운영체제
- 친절한 SQL 튜닝
- 뷰
- 리눅스 마스터 2급
- delete
- 혼자 공부하는 네트워크
- gitkraken을 통한 프로젝트 올리기
- 클러스터형 인덱스와 보조 인덱스
- 이것이 오라클이다
- 데이터모델링
- oracle
- Today
- Total
코딩 브이로그
레지스터를 직접 조작하며 입출력 해보기 본문
#들어가며
어떻게 입출력장치가 레지스터를 통해 작동하는지를 알아보려고 합니다.
작은 컴퓨터를 하나 보여드립니다.
보이는 시계와 스위치와 LED 등 CPU를 제외하고는 전부 다 입출력 장치 입니다.
이 장치들이 모두 입출력을 하기 위해서는 각각의 레지스터가 있고 레지스터를 통해서 읽고/쓰기 기능이 작동될 수 있습니다.
#프로그래밍
프로그래밍을 통해서 이러한 레지스터들을 직접 읽고 씀으로써 작동시킬 수 있다.
위에 보이는 LED를 위한 미리 정해진 레지스터들이 있습니다. (장치의 이름은 ATmega 128 GPIO 입니다.)
예를 들어 DDRx에 x에 포트를 연결할 수 있습니다. DDRA 또는 DDRB 이러한 방식입니다.
DDRA에 값 1을 대입하면 LED등에 불빛이 들어올 것입니다.
DDRE에 값 0을 입력하면 스위치를 입력으로 사용할 수 있습니다.
PORTA에는 LED에 어떻게 불빛을 쏘고 싶은지를 정하게 됩니다. 출력하고자 하는 값을 쓰면 됩니다.
PINE은 스위치에 입력된 입력값을 레지스터에 저장된 값을 읽어들일 수 있게 됩니다.
#프로그래밍 방법
다음과 같이 C언어를 통해서 프로그래밍을 할 수 있습니다.
DDRA = ob11111111; 은 LED의 8개 모두를 출력으로 쓰겠습니다가 됩니다.
PORTA = ob11111111; 모든 LED에 불을 킬 수 있습니다.
빌드를 한 다음에 이 소스 코드를 직접적으로 판에다가 다운로드를 받아주면은
다음과 같이 LED에 불빛이 들어옵니다.
위 소스와 같이 코드를 입력하고 빌드를 하고 판에 다운로드를 하면
스위치를 누르기 전 그리고
이렇게 됩니다.
특정 레지스터를 통해서 불빛을 조정하고
특정 인터럽트를 통해서 불빛을 켜기/끄기를 할 수 있습니다.
감사합니다.
'혼자 공부하는 컴퓨터 구조 및 운영체제 (복습)' 카테고리의 다른 글
[운영체제] 운영체제를 알아야 하는 이유 (3) | 2024.10.18 |
---|---|
컴퓨터 구조를 위해 '혼자 공부하는 컴퓨터 구조 및 운영체제 (한빛 미디어)'를 참고하였습니다. (4) | 2024.10.14 |
다양한 입출력 방법 (4) | 2024.10.13 |
장치 컨트롤러와 장치 드라이버 (4) | 2024.10.13 |
RAID의 정의와 종류 (5) | 2024.10.13 |