I. 실험 목적
1, 인터페이스 기술 및 프로그래밍 환경 구현의 AEDK Experimenter ISA 버스 구성 모드에 익숙해집니다. 그리고 다른 두 가지, 즉 단일 보드 구성 모드와 직렬 포트 모니터링 구성 모드를 이해합니다.
2. 60코어 버스, 드라이버, 디코더 등을 통해 새로운 인터페이스 칩을 PC 외부로 확장하는 방법을 배웁니다.
3. 프로그래머블 인터페이스를 제어하는 프로그래밍 방법을 이해합니다.
둘, 테스트 장비
하드웨어: PC 호환 기계
AEDK 실험 장비
소프트웨어: 운영체제 MS-DOS 또는 WINDOWS.
MASM... 실행 가능한 프로그램 확장
LINK.EXE 디버깅 및 편집 및 기타 편집기.
셋째, 실험 내용
1, 관련 내용의 어셈블리 언어 및 마이크로 컴퓨터 원리를 검토하여 버스 및 포트 주소 주소 지정 방법(통합 주소 지정 및 독립 주소 지정)을 이해합니다. CS 신호가 어떻게 생성되는지 숙지합니다.
2. 어셈블리 언어 편집, 컴파일, 링크 및 디버깅 프로그램에 대한 지식. 명령어와 디버깅 프로그램 사용에 능숙합니다.
3. 실험용 계기판의 구조를 숙지하고 더 나은 사용과 원활한 개발 작업을 위한 원리를 숙지합니다.
4. 요구 사항 및 지침
1, 실험실의 규칙 및 규정을 준수하고 실험 기기를 관리합니다 (인간-기계 쌍의 서명 및 기록 방법 구현) .
2. 결과의 구성 : 일반적인 실험 및 보고서의 70 %, 시험은 65,438 + 00 %, 실험 기기 사용, 관리 및 재활용은 20 % (좋은 실험 스타일을 배양하기 위해 첫 번째 오류 경고는 65,438. +00점, 20점, 총점에서 40점 감점);
3. 이 실험은 8253 카운터 / 타이머, 포트 주소 200H, 201H, 202H, 203H를 사용하여 COUNT0, COUNT1, COUNT2 및 제어 포트에 해당합니다.
Verb(동사의 줄임말) 어셈블러 구조
데이터 세그먼트
.
.
.
데이터의 끝
코드 세그먼트
CS: 코드, DS: 데이터
시작:
.
.
.
코드 끝
시작 끝
여섯째, 소스 프로그램 생성 단계
1. 편집기를 사용하여 소스 프로그램을 편집합니다.
파일명을 편집합니다. ASM(사용자가 정의한 파일명)
2. 매크로 어셈블러 MASM을 사용하여 소스 프로그램을 컴파일하여 대상 프로그램을 생성합니다.
C & gtMASM 파일 이름. 공대지 미사일
어셈블리 후 오류가 발생하지 않으면 순서대로 3단계로 진행하고, 그렇지 않으면 1-2단계를 반복하고 오류 원인을 기록 및 분석합니다.
3. 연결 프로그램을 사용하여
C & gt 링크 파일 이름. obj (외래어 OBJ는 생략 가능)
4. 디버거를 사용하여 프로그램을 디버깅합니다.
C & gt 디버그 파일명. 실행 프로그램의 확장
디버깅 과정에서 다양한 현상을 관찰하고 기록하는 데 주의를 기울입니다.
5. 하드웨어를 올바르게 연결하고, 강사가 회로 연결을 확인한 후 실험 장치의 전원 스위치를 켜고 프로그램을 실행합니다. DEBUG 단일 단계 실행을 사용하여 입력, 출력, 메모리-레지스터 전송, 레지스터-메모리 전송 명령어 실행 시 버스 신호 인터페이스 칩 선택 신호 CS의 현상과 상태를 관찰하고 기록합니다. (파형 다이어그램을 그리는 것이 좋습니다)
VII. 보고서 요건
1, 이 실험 과목에 대한 건설적인 제안, 교수법에 대한 견해 및 달성하고자 하는 목표에 대해 이야기하십시오.
2. 실험 수업에서 주제 또는 8253, 8255, 8251, 8259, A/D, D/A 및 기타 더 나은 실험 프로그램을 수행 할 수있는 주제를 지정하십시오. 이 교육 개혁을 어떻게 생각하시나요?
실험 2 8253 타이머/타이머
I. 실험의 목적
1. 62코어 버스, 드라이버, 디코더 등에 대한 추가 연구를 통해 새로운 인터페이스 칩을 PC 외부로 확장하기 위해.
2. 8253 카운터의 프로그래밍 원리를 익히고, 오실로스코프나 LED를 이용하여 다양한 모드에서의 파형이나 주파수 관계를 관찰한다.
II. 실험 장비
하드웨어:PC 호환기
마이크로컴퓨터 실험기기
오실로스코프
LED3
소프트웨어:운영체제 MS-DOS
MASM. 실행 프로그램 확장
LINK.EXE
III.실험 내용
1.8253을 사용하여 구형파 발생기와 주파수 분배기를 형성하여 그림과 같이 연결을 완료합니다.
1 & gt; 8253의 CLKO의 실험 기기 출력 주파수 2.5kHz-20kHz(기기마다 다름)의 Q0-Q3 단자 중 하나를 연결합니다.
2 & gt, OUT0은 CLK1에 연결하고, OUT1은 CLK2에 연결하며, OUT0, OUT1, OUT2는 LED 양극에 연결합니다.
3 & gt, GATE0, GATE1, GATE2는 +5v에 연결됩니다.
4 & gt- 칩은 200h ~ 207h에 연결할 CS 잭을 선택합니다. d-트리거와 LED를 선택하여 CS 신호의 상태를 감지할 수 있습니다. 연결 방법은 실험 1을 참조하십시오.
2. 프로그래밍을 완료하려면 카운터 0과 1을 모드 3(구형파)으로, 타이머 2를 모드 2(분할 주파수)로 설정합니다. 카운터 0의 출력 펄스는 카운터 1의 클럭 입력으로 사용되고 카운터 1의 출력 펄스는 카운터 2의 클럭 입력으로 사용됩니다. 프로그램에서 초기 카운팅 파라미터를 수정하여 구형파 폭과 크로스오버 주파수 신호 주기를 변경하고 카운터 0, 1, 2의 출력 주파수 관계를 LED로 관찰한 후 주파수 관계 그래프의 파형을 그립니다.
1. 카운팅의 초기값 = F 입력/F 출력 = T 입력/T 출력
4, 프로그래밍 기술
1, 8253 제어 포트의 주소는 203H.
카운터 0의 주소는 200H.
카운터 1의 주소는 201H.
카운터 2의 주소는 202H.
카운터 2의 주소는 202H.
.2. 8253의 제어어:
3. 프로그램의 블록 다이어그램
동사(동사의 약어) 프로그램 목록 참조
데이터 세그먼트
TS DB '현상 관찰 및 출력 파형 관계 기록', OAH, ODH, ' $ '
데이터의 끝
코드 세그먼트
CS: 코드, DS: 데이터
시작:MOV ax, 데이터
MOV DS, AX
LEA DX, TS
MOV ah, 9
INT 21H
MOV DX, 203H
MOV-al, 36H
OUTPUT DX, AL
MOV DX, 200H
MOV-Al
출력 DX, AL
출력 DX, AL
MOV DX, 203H
MOV-Al, 56H
출력 DX, AL
MOV DX, 201H
OUTPUT p>
MOV-Al, 8
출력 DX, AL
MOV DX, 203H
MOV-Al, 94H
출력 DX, AL
MOV DX, 202H
MOV-Al, 6
출력 DX, AL
MOV 아, 4채널
INT 21H
코드 종료
시작 종료
6, 테스트 단계
1. 편집기로 소스 프로그램을 편집합니다.
C & gt 편집 파일 이름. asm (파일 이름은 사용자가 정의)
주: 편집이 끝나면 편집기를 종료하기 전에 생성된 소스 프로그램을 저장해야 합니다.
2. 매크로 어셈블러 MASM을 사용하여 소스 프로그램을 어셈블하고 대상 프로그램을 생성합니다.
C & gtMASM 파일 이름. 공대지 미사일
조립 후 오류가 발생하지 않으면 순서대로 3단계로 진행하고, 그렇지 않으면 1-2단계를 반복하고 오류의 원인을 기록하고 분석합니다.
3. 연결 프로그램을 사용하여
C & gt 링크 파일 이름. obj (외래어 OBJ는 생략 가능)
4. 디버거를 사용하여 프로그램을 디버깅합니다.
C & gt 디버그 파일명. 실행 프로그램의 확장
디버깅 과정에서 다양한 현상을 관찰하고 기록하는 데 주의를 기울입니다.
5. 강사가 회로가 올바르게 연결되었는지 확인한 후 실험 장치의 전원 스위치를 켜고 프로그램을 실행합니다. 각 카운터가 동작 모드 제어어를 쓰고 초기값을 카운트한 후, DEBUG 1단계 실행을 사용하여 OUT 끝의 현상과 상태를 관찰하고 기록합니다.
카운터 0 카운터 1 카운터 2
작동 모드 카운트 초기값 출력 f 또는 t작동 모드 초기값 출력 f 또는 t작동 모드 초기값 출력 f 또는 t
지시 OUT0 OUT1 OUT2 명령을 실행합니다.
주: 파형을 기록합니다.
6. 토론 및 개선
1 & gt; 소스 프로그램에서 작업 모드 제어어를 변경하고 초기값을 카운트하여 실행 결과를 관찰 및 분석해 보십시오.
2 & gtLED 관찰과 CRT 관찰의 차이점은 무엇인가요? 왜 그럴까요?
3 & gt적외선 송수신관 한 쌍과 8253 카운터를 사용하여 생산 라인의 물리적 계수 장치를 설계하고 수집된 데이터를 CPU로 전송하여 처리하도록 합니다.
4 & gt는 이 실험을 개선하기 위해 제안을 했습니다.
실험 3 8255 병렬 인터페이스(키보드 제어) 실험
I. 실험 목적
1. PC 시스템에서 입출력 인터페이스 확장 방법을 학습한다. 8255 병렬 인터페이스의 프로그래밍 원리를 숙지하여 프로그래밍 가능한 인터페이스 설계의 유연성과 편리성을 확보할 수 있다.
2. 비 코딩 키보드의 구조적 특성을 이해하고, 키보드 키 값을 스캔하고 읽는 방법과 CRT 프로그래밍 방법 및 하드웨어 구조에 대해 학습합니다.
실험 장비
하드웨어: PC와 호환되는 기계
마이크로컴퓨터 실험 장치
첫 번째 실험을 위한 소프트웨어.
셋, 실험 내용
1. 16키 키패드를 제어하는 8255 병렬 인터페이스 (라인 스캔 방식 또는 역 방식 가능), 연결 다이어그램에 따라 :
1 & gt; 와이어 PA0-PA7을 잭 RL0-RL7에 연결하여 키보드 라인 데이터를 제어합니다.
2 & gt 키보드 열 데이터를 제어하는 와이어로 PB0 및 PB1을 잭 Y0 및 Y1에 연결합니다. K10에서 모든 단락 슬리브를 제거합니다.
3 & gt, 칩은 CS를 선택하여 218H-21FH를 연결합니다.
2. 프로그램을 작성합니다. 프로그램을 실행하면 키패드가 제어권을 넘겨줍니다. 키보드의 키를 누르면 컴퓨터 화면에 읽은 키의 이름이 표시됩니다. 키보드에서 "F"를 누르면 DOS로 돌아가고 키보드가 다시 제어권을 되찾습니다.
넷째, 프로그래밍 기술
1, 일반적으로 라인 스캔 방법 또는 반전 방법을 사용하여 키보드의 닫힌 키를 식별합니다.
행 스캔 방법은 키보드의 한 행을 낮게, 다른 행을 높게 만듭니다. 그런 다음 열 값을 읽고 열 값 중 하나가 낮으면 행과 열의 교차점에있는 키를 눌렀다는 의미이며 열 값 + 줄 값 = 키 값을 캐시에 저장된 키 값 테이블과 비교 한 다음 키 이름에 해당하는 문자를 찾아서 마이크로 컴퓨터 화면에 표시하거나 DOS로 돌아가고 그렇지 않으면 모든 줄이 스캔 될 때까지 다음 줄을 스캔합니다.
줄 반전 방법은 한 줄을 병렬 포트에 연결하고 출력 모드에서 작동합니다. 열 라인은 다른 병렬 포트에 연결되고 입력 모드에서 작동합니다. 이 절차는 CPU가 출력 포트에서 모든 라인 라인으로 낮은 레벨을 보낸 다음 열 라인의 값을 읽도록 합니다. 이때 키를 누르면 확실히 열 줄 값이 0이 됩니다. 그런 다음 프로그램은 두 병렬 포트의 모드를 설정하여 행 줄은 입력 모드에서, 열 줄은 출력 모드에서 작동하도록 하고 열 줄에 연결된 병렬 포트에서 방금 읽은 열 줄 값을 출력한 다음 행 줄의 입력 값을 읽습니다. 이때 키가 꺼져 있는 행 줄의 키를 누르면 행 값은 0이 되어야 하므로 키를 누르면 고유한 키 값 쌍(열 값 + 행 값)을 읽을 수 있습니다.
2. 프로그래밍 시 각 키의 키 이름은 사용자가 정의할 수 있으며, 각 키에 해당하는 키 코드(열 값 + 행 값)는 인터페이스 배열에 따라 결정됩니다. 행과 열의 교차 개수는 키의 개수이며, 키 이름과 키 값은 모두 데이터 세그먼트의 키 테이블에 저장됩니다. 프로그램은 테이블을 조회하여 어떤 키가 눌렸는지 확인합니다.
Verb(동사의 줄임말) 참조 절차 목록(역방향 방식)
데이터 세그먼트
테이블 DW 0101H, 0102H, 0104H, 0108H, 0110H, 0120H, 0140H, 0180H
DW 0201H, 0202H, 0204H, 0208H. 0210H, 0220H, 0240H, 0280H
문자 데이터베이스 ' 89ABCDEF01234567 '
TS DB '키보드의 아무 키나 누르면 CRT에 표시되고 F를 누르면 프로그램이 ', 0DH, 0AH, ' $ '
데이터 끝
코드 세그먼트
가정 CS: 코드, DS: 데이터
주 프로세스 멀리
시작:MOV 축, 데이터
MOV DS, AX
LEA DX, TS
MOV ah, 9
INT 21H
KY: 호출 키
CMP DL, ' F '
JNZ KY
MOV ah, 4CH
INT 21H
침지하면 부드럽게
메인 ENDP
키 닫기
INI: MOV DX, 21BH
MOV-Al, 82H
출력 DX, AL
출력을 닫습니다. p>
대기 1:MOV DX, 218H
MOV-Al, 0
출력 DX, AL
MOV DX, 219H
온 Al, DX
MOV Ah, Al
And AL, 03H
CMP Al, 03H
JZ Wait 1
MOV-Al, ah
MOV Ah, 0
푸시 액스
푸시 액스
MOV CX, 1000H
DLY:링 DLY
MOV DX, 21BH
MOV-Al, 90H
아웃풋 DX, AL
MOV DX, 219H
블래스터
출력 DX, AL
MOV DX, 218H
온 알, DX
Bop-BX
MOV ah, BL
Not al
MOV SI, 오프셋 테이블
p >MOV DI, 오프셋 문자
MOV CX, 16
스킵:CMP AX, [SI]
JZ-DISP
12월 CX
JZ ini
Add SI, 2
Company DI
JMP-Skip
DISP:MOV
MOV ah, 2
INT 21H
Push DX
MOV DX, 21BH
MOV-al, 82H
출력 DX, AL
대기 2:MOV DX, 218H
MOV-al, 0<<
출력 DX, AL
MOV DX, 219H
In Al, DX
및 AL, 03H
CMP Al, 03H
JNZ 대기 2
팝 DX
연하게 만들기 위해 디핑
Base ENDP
Code 끝
끝 시작
6. 실험 단계
1. 소스 프로그램 편집, 컴파일, 링크 및 디버그.
2. 회로를 올바르게 연결하고 교사가 오류가 없는지 확인한 후 전원을 켭니다.
3. 프로그램을 실행하여 PA0-PA7과 PB0-Pb 1의 상태를 각각 LED로 측정합니다. 실험 현상을 관찰하고 기록합니다.
키패드: 아무 키도 누르지 않은 상태.
Pa0-pa7pb0-pb1 키 이름 pa0-pa7pb0-pb1
키보드:
4. 토론 및 개선
1 & gt; LED를 사용하여 PA0-PA7을 측정하는 현상은 무엇이며 그 이유는 무엇인가요?
2 & gtLED로 측정한 키 입력이 있는 상태와 없는 상태의 PB0과 PB1의 상태는 어떤 차이가 있나요? 왜 그런가요?
3 & gt키패드가 활성화된 상태에서 키패드를 사용할 수 있나요? 키패드를 16번 누르면 CRT에 어떤 일이 일어나는지 기록합니다.
4 & gt16비트 키패드는 8비트 포트 A와 2비트 포트 B로 제어할 수 있습니다.... 8255 포트를 선택한 경우 그룹 A 12비트 및 그룹 B 12비트로 몇 개의 키를 제어할 수 있습니까*? 8255로 104개의 표준 키보드를 제어할 수 있습니까?
5 & gt 소스 프로그램의 모듈에 주석을 달고 순서도를 그립니다.
실험 4 8259A 인터럽트 컨트롤러 실험
I. 실험 목적
1. 8259A 인터럽트 컨트롤러의 작동 원리를 숙지하고, 실험에 사용되는 8259A의 인터럽트 마스크 레지스터 IMR과 인터럽트 서비스 레지스터 ISR의 사용법을 숙지합니다.
3. 외부 인터럽트 소스에 대한 소개와 인터럽트 핸들러 작성 방법을 익힙니다.
II. 실험 장비
하드웨어: PC와 호환되는 기계
마이크로컴퓨터 실험 장치
첫 번째 실험에 사용되는 소프트웨어.
셋째, 실험 내용
1. 외부 인터럽트 소스로 포지티브 및 네거티브 단일 펄스를 사용하여 인터럽트 요청을 임의로 생성할 수 있습니다(8253 카운터를 사용하여 시간 제한 외부 인터럽트 요청을 생성할 수도 있습니다). 인터럽트 요청은 PC/XT 62 코어 버스의 IRQ2 터미널을 통해 내부 8259에 입력되고, 8259는 버스에 INTA 신호를 보냅니다. 버스는 INTA 응답 신호를 보내 응답합니다. 인터럽트 서비스 루틴으로 전환합니다.
2. 호스트 컴퓨터가 외부 인터럽트 IRQ2에 응답할 때마다 8255 병렬 인터페이스를 시작하고, 푸시 버튼 스위치 그룹에서 4비트 신호를 입력하여 PC7-4에서 캡처하고, PC3-0에서 4개의 LED 디스플레이로 출력하도록 하는 프로그램을 작성합니다. 푸시버튼 스위치 조합은 각 인터럽트 요청 전에 선택되며, 인터럽트 응답 후 LED에 조합 스위치의 상태가 표시됩니다. 10번의 인터럽트 후 프로그램이 종료됩니다.
넷째, 프로그래밍 기술
1. 이 실험에서는 PC의 8259A 칩을 사용합니다. 호스트가 시작될 때 8259A 인터럽트 제어 레지스터의 첫 5비트는 00001로 초기화되어 있으므로 IRQ2의 인터럽트 번호는 0001010b = 0ah이고 IRQ5의 인터럽트 번호는 000168입니다. 호스트는 사용자를 위해 IRQ2를 유지하고 다른 외부 인터럽트는 시스템 클럭, 키보드 등이 차지합니다. 따라서 시스템에서 이미 사용 중인 인터럽트 요청 번호는 프로그래밍하지 마세요. IMR 레지스터에서 IRQ2에 해당하는 비트를 지우면(IC W3 = 1111101b가 되도록) IRQ2 인터럽트 마스크를 제거하고 IRQ2 인터럽트를 허용할 수 있습니다.
2. PC의 8259A가 일반 종료 모드로 초기화됩니다. 외부 인터럽트가 종료되면 인터럽트 종료 명령을 사용하여 인터럽트 서비스 레지스터 ISR의 해당 비트를 0으로 지워야 합니다. (MOV AL, 20H OUT 20H, AL OCW2=00100000B).
3. 프로그램이 종료되면 IRQ2 인터럽트를 끄고 IMR의 해당 비트를 1로 설정합니다(OCW 1 = 1111111b가 되도록).
3. PC 시스템에서 포트 8259A의 주소: 짝수 주소 20H, 홀수 주소 21H
Verb(동사의 약어) 프로그램 목록 참조
데이터 세그먼트
TS 1dB '푸시 버튼 스위치와 결합하여 코드를 설정하고 단일 펄스 키를 누르고 LED 디스플레이를 관찰하고 상승 에지 또는 하강 에지의 트리거에 주의하십시오', 0DH , 0AH,' $ '
Ts2db '병렬 인터페이스 8255 C가 데이터를 수집하여 표시하므로 관찰하고 기록하십시오','$'
데이터의 끝
코드 세그먼트
CS: 코드, DS: 데이터
Begin:MOV AX, CS
MOV DS, AX
LEA DX, INTPROG
MOV ah, 25H
MOV-al, 0AH
INT 21H
코인 레벨 인디케이터(코인 레벨 표시기의 줄임말) 배치용 명령줄 인터페이스( 스크립팅)
MOV DX, 21H
알, DX
알, 11111011B
출력 DX, AL
MOV BX, 10
MOV SI, 0041H
성적으로 전염된 감염
MOV Axe MOV DS, 데이터
MOV DS, AX
LEA DX, TS1
MOV Ah, 9
INT 21H
YY: NOP
JMP-YY
INTPROG:
MOV Axe, 데이터
MOV DS, AX
MOV DS, AX
LEA DX of TS2
MOV ah, 9
INT 21H
MOV-CX, 05H
MOV DL, 20H
MOV ah, 2
XH0: INT 21H
Cyclic XH0
MOV DX. SI
MOV Ah, 2
INT 21H
MOV DL, 0DH
INT 21H
MOV DL, 0AH
INT 21H
MOV DX, 21BH
MOV-Al, 88H
출력 DX, AL
MOV DX, 21AH
In Al, DX
MOV CL, 4
Ro Al, CL
Not Al
OUTPUT DX, AL
MOV DX, 20H
MOV-Al, 20H
OUTPUT DX, AL
12월 BX
JNZ 계속
MOV DX, 21H
인 Al, DX
still AL, 04
출력 DX, AL
성 매개 감염
MOV Ah, 4CH
INT 21H
계속:회사 SI
IRET
코드 끝
시작 끝
VI.실험 단계
1. 소스 프로그램을 편집, 컴파일, 링크 및 디버그합니다.
2. 회로를 올바르게 연결하고, 교사가 오류가 없는지 확인한 후 전원을 켭니다.
3. 프로그램을 실행합니다. CRT 디스플레이의 안내에 따라 조합 버튼의 코드를 선택하고 더하기 버튼을 누른 후, CRT 디스플레이와 LED로 표시되는 PC3-0의 코드를 관찰하고, INTR 신호의 상승 또는 하강 에지가 유효한지 분석합니다. 실험 현상을 관찰하고 기록합니다. 어떻게 감지하나요?
4. 8259A 인터럽트 컨트롤러의 인터럽트 요청 레지스터 IRR에 인터럽트 요청을 기록하는 기능이 있는지 관찰합니다. 어떻게 증명하나요?
실험 5 메모리에서 직접 DMA 전송
I. 실험 목적
1. DMA의 작동 원리와 DMA 컨트롤러 8237a-5의 사용법을 이해한다.
2. PC 환경에서 프로그래밍을 통한 DMA 데이터 전송을 숙달하고, DMA의 동작 순서를 이해한다.
둘. 실험 장비
하드웨어: PC 호환 머신
마이크로컴퓨터 실험 장비
소프트웨어는 실험 1과 동일합니다.
셋째, 실험 내용
1. PC 메모리 60000h-61FFH의 내용을 실험 기기의 외부 메모리 62256에 DMA 읽기를 통해 보낸 후, 다시 70000-71FFH의 영역에 DMA 쓰기를 통해 쓰는 프로그램을 작성한다.
2. 74LS154 통합 4D 플립플롭을 사용하여 DREQ 및 DACK 신호의 상태를 감지합니다.
3. 디버거를 사용하여 60000h-61fffh의 메모리 영역을 채운 후 70000h-71fffh 영역의 데이터를 읽어 전송된 데이터에 오류가 없는지 확인합니다.
4, 실험 설명
1. 이 실험에서는 PC의 DMA 컨트롤러를 사용하며, PC의 몇 가지 조건을 준수해야 합니다:
PC 시스템에서 DMA 컨트롤러 8237-A. 4개의 DMA 채널 중 채널 0은 RAM 새로 고침(새로 고침 요청 신호는 시스템의 8253 카운터 채널 1에서 생성되며 15.13마이크로초마다 생성됨), 채널 1은 사용자 전용, 채널 2는 플로피 데이터 전송, 채널 3은 하드 디스크 데이터 전송에 사용되며 8237-A의 주소 지정 범위는 00H-0FH로 채널 1에 해당합니다. 페이지 주소는 83H입니다.
PC BIOS가 초기화되면 제어 레지스터는 00H로 설정됩니다. 즉, DREQ는 활성 하이, DACK은 활성 로우, 우선 순위는 고정, 타이밍은 정상, 비확장 쓰기 모드가 사용됩니다. 4개의 채널 모두 이 규칙을 준수하므로 시스템 설정의 혼동을 피하기 위해 제어 레지스터의 내용을 설정하지 않는 것이 좋습니다.
2. DMA 사용 시 주의해야 할 사항:
1 & gt; 채널 0의 RAM 새로 고침이 올바르게 작동하는지 확인합니다. 그렇지 않으면 충돌이 발생합니다. 세 가지 DMA 전송 모드의 경우 PC 환경에서는 단일 바이트 전송 모드만 지원됩니다. 다른 두 모드는 버스에서 너무 많은 시간을 차지하여 RAM이 제때 새로 고쳐지지 않기 때문에 충돌이 발생합니다. 시스템에서는 동적 RAM 새로 고침의 우선 순위를 보장하기 위해 고정 우선 순위 모드를 설정했습니다. ROM-BIOS가 이미 동적 RAM 새로 고침에 채널 0을 사용하고 있고 사용자가 이를 변경할 수 없기 때문에 채널 0과 1에 메모리 간 DMA 전송이 있어도 PC는 메모리 간 DMA 전송을 지원하지 않습니다.
2 & gt 소프트웨어 요청 모드는 블록 전송 모드에 해당합니다. RAM 새로 고침을 방해하지 않으려면 직접 전송 모드를 사용하는 것이 좋습니다. 여러 바이트를 전송할 때는 루프 절차로 구현됩니다.
2. 단락 설정 JP0, JP1, JP2, JP3, JP4는 DMA 측(왼쪽)으로, K11, K12 다이얼은 DMA 측으로 점프하며, HALT 키는 DMA 버튼으로도 사용됩니다.
3. 버스 신호 DREQ1과 DACK1은 각각 D 플립플롭의 S와 R 단자에 연결되고, Q 단자는 LED에 연결됩니다.
Verb(동사의 약어) 프로그램 목록
데이터 세그먼트
'ts 1dB' DMA(HALT) 버튼을 누르면 메모리 소스 데이터 영역에서 외부 메모리 62256(주변 장치)으로 32KB의 데이터를 직접 전송하도록 요청하는 경우, LED에 표시되는 DREQ1 및 DACK1 신호를 관찰합니다. , 0DH, 0AH,' $ '
Ts2db '외부 메모리 62256(주변 장치)에서 메모리 대상 영역으로 32KB의 데이터 직접 전송을 요청하려면 DMA(HALT) 키를 누르고, LED에 표시되는 DREQ1 및 DACK1 신호를 관찰합니다.' ', 0DH, 0AH,' $ '
Ts3db' DMA 직접 전송이 완료되었으니, D 명령으로 메모리 대상 영역의 32KB 데이터가 올바른지 확인하려면 DEBUG를 입력하세요', 0DH, 0AH,' $ '
데이터 끝
스택 세그먼트
STA DW 50 DUP(?)
상위 EQU 길이 STA
스택의 끝
코드 세그먼트
CS; 코드, DS: 데이터, SS: 스택, ES: 데이터
Begin:MOV axe, 데이터
MOV DS, AX
MOV axe, 스택
MOV SS. Axe
MOV SP, top
MOV-Al, 5
나가고, Al; 채널 1 마스크 워드 설정
OUT 0CH, AL; 순차 플립플롭 클리어
MOV Al, 01001001B
OUT 0BH, AL; 모드 단어를 단일바이트 읽기로 설정합니다. 전송
MOV-BX, 0000h
MOV Lake
Out 02H, Al
MOV Limited
Out 02H, Al
MOV-Al, 06H
OUT 83H, AL; 시작 주소는 6000h: 0입니다.
MOV -Al
OUT 03H, AL
MOV Al, 07FH
OUT 03H, AL; 전송된 바이트 수는 7FFFH(32KB)입니다.
MOV Al, 01H
Out Ah, Al
LEA DX, TS1
MOV Ah, 9
INT 21H
Push Axe
Blaster
대기 0:In Al, 08H
and Al, 02H
JZ Wait 0
MOV-Al, 05H
Go out, Al; 채널 1 마스크 워드 설정
OUT 0CH, AL; 순차 플립플롭 클리어
MOV Al, 01000101B
OUT 0BH, AL; 모드 워드를 단일 바이트 쓰기 전송으로 설정합니다.
MOV Lake
OUT 02H, AL
OUT 02H, AL
MOV-Al, 07H
OUT 83H, AL; 대상은 메모리 7000h: 0.
MOV-Al
OUT 03H, AL
MOV Al. 7FH
OUT 03H, AL; 전송 바이트는 7FFFH (32KB).
MOV Al, 01
OUT AL, AL; 채널 1에서 마스크를 제거합니다.
LEA DX of TS2
MOV ah, 9
INT 21H
푸시 액스
블래스터
WAIT1: in AL, 08H
및 Al, 02H
JZ 대기 1
LEA DX of TS3
MOV 아, 9
INT 21H
MOV 아, 4CH
INT 21H
코드 종료
시작 종료
6, 실험 단계
1. 소스 프로그램 편집, 컴파일, 링크 및 디버깅.
2. 회로를 올바르게 연결하고 교사가 오류가 없는지 확인한 후 전원을 켭니다.
3. DEBUG를 입력하고 d 명령을 실행하여 6000h: 0000-6000h: 7FFFH 범위의 데이터를 확인한 후, f 명령을 사용하여 이 범위의 데이터를 채웁니다. 그런 다음 d 명령을 사용하여 해당 영역이 데이터로 채워졌는지 확인합니다.
4. 프로그램을 실행하고 프로그램 프롬프트에서 일시 중지를 눌러 DMA 전송을 요청한 후 DREQ1, DACK1, MEMR 및 IOW 신호의 상태를 관찰합니다. 메모리의 데이터가 외부 확장 메모리 62256으로 전송됩니다.
5. 프로그램 프롬프트에서 HALT 키를 다시 눌러 DMA 전송을 요청하고 DREQ1, DACK1, MEMW 및 IOR 신호의 상태를 관찰합니다. 외부 확장 메모리 62256의 데이터가 메모리로 전송됩니다.
6. DEBUG로 이동하여 d 명령을 실행하여 7000h: 0000-7000h: 7FFFH 범위의 데이터를 확인하고 소스 데이터 영역의 데이터와 비교하여 오류가 있는지 확인합니다. 오류가 있는 경우 원인을 분석합니다.
실험 6 8251 프로그래머블 시리얼 인터페이스의 통신 실험
I. 실험 목적
1, 8251의 칩 구조, 작동 원리 및 초기화 프로그래밍을 숙지한다.
2. 시리얼 통신의 하드웨어 환경, 데이터 포맷 프로토콜, 데이터 교환 프로토콜을 이해한다.
3. PC 통신의 프로그래밍 방법을 학습합니다.
II. 실험장비
하드웨어:PC 호환기
마이크로컴퓨터 실험기기
LED 4개
74LS74 또는 74LS175 IC 1칩
소프트웨어:운영체제 MS-DOS
MASM. 실행 프로그램 확장
LINK.EXE
세 가지 실험
1. 어셈블러 편집, 조립, 링크 및 디버깅. 8251을 초기화하여 직렬 전송 문자 프레임 형식, 전송 속도 계수 및 기타 데이터 형식과 데이터 교환 프로토콜을 설정합니다.
2. 쿼리 방식으로 프로그래밍, 키보드에서 데이터 입력, 8251 자동 수신, 8251의 직렬 전송 관찰 및 전송된 데이터를 CRT에 표시합니다.