본문내용
GATE0=1, 타이머 모드1
MOV TH0, #4BH; 16진(4BFD) -> 19453
MOV TL0, #0FDH ; 인터럽트 발생 주기(1.085us x (65536-19453) = 50ms)
SETBET0; 타이머0 인에이블
MOV A, #0FFH; P1 포트 초기 출력값(LED 모두 OFF)
MOV P1, A
CLR A
MOV R2, #0
SETBEA; 전체 인터럽트 인에이블
SETBTR0; 타이머0 -> 카운터 시작
;
LOOP:CJNER2, #20, LOOP; 인터럽트 발생주기(50ms x 20 = 1s)
MOV R2, #0
JB F0, COUNT; F0=1 이면 COUNT로 점프
JMP LOOP; 대기
;
; BCD 카운터 서브루틴
COUNT: INC A
DA A; 10진 보정
MOV R3, A
CPL A
MOV P1, A
MOV A, R3
JMP LOOP; 대기
;
;타이머/카운터0 인터럽트 서브루틴
T0_SER:CLR TR0; 타이머0 -> 카운터 정지
MOV TH0, #4BH
MOV TL0, #0FDH
INC R2
SETBTR0; 타이머0 -> 카운터 시작
RETI; 리턴(인터럽트가 발생한 곳 -> LOOP)
;
END
■ 시리얼 포트
; SERIAL1.ASM
ORG 4000H
;
MOV PSW, #08H; BANK 1
CALLSINIT; 시리얼 포트 초기화
MOV R2, #26; R2 <- 전송할 문자수
MOV A, #'A'; A <- 전송 초기 문자
SLOOP:CALLSEND; 전송
INC A; A <- 다음 문자
DJNZR2, SLOOP
;
MOV PSW, #0H; BANK 0
JMP 0057H; 모니터 프로그램으로
;
; 시리얼 포트 초기화(모드1, 9600bps)
SINIT:MOV TMOD, #00100000B ; 타이머1, 타이머 모드2
MOV PCON, #0 ; SMOD=0
MOV TH1, #0FDH ; 시간상수 9600 보레이트
SETBTR1 ; 타이머 런
;
MOV SCON, #01010010B ; TI=1,RI=0,REN=1,모드1
RET
;
; 전송 루틴(어큐뮬레이터값 전송)
SEND:JNB TI, SEND; TI=0이면 SEND
MOV SBUF, A ; 송신
CLR TI ; 다음 송신을 위해 클리어
RET
;
END
------------------------------------------------------------------------------------------------
; SERIAL2.ASM
ORG 4000H
;
CALLSINIT; 시리얼 포트 초기화
LOOP:CALLRECEIVE; 데이터 수신
CPL A; 수신 데이터 반전
MOV P1, A; P1포트의 LED에 표시
SJMPLOOP
;
; 시리얼 포트 초기화(모드1, 9600bps)
SINIT:MOV TMOD, #00100000B ; 타이머1, 타이머 모드2
MOV PCON, #0 ; SMOD=0
MOV TH1, #0FDH ; 시간상수 9600 보레이트
SETBTR1 ; 타이머 런
;
MOV SCON, #01010010B ; TI=1,RI=0,REN=1,모드1
RET
;
; 수신 루틴(수신한 값 어큐뮬레이터 저장)
RECEIVE:JNB RI, RECEIVE ; RI=0이면 RECEIVE
MOV A, SBUF ; 수신
CLR RI ; 다음 수신을 위하여 클리어
RET
;
END
------------------------------------------------------------------------------------------------
; SERIAL3.ASM
ORG 4000H
SJMPSTART
;
ORG 4023H; 시리얼 인터럽트 서비스 루틴 번지
SJMPSERIAL ; SERIAL로 점프
;
START:CALLSINIT ; 시리얼 포트 초기화
LOOP:SJMPLOOP
;
; 시리얼 포트 초기화(모드1, 9600bps)
SINIT:CLR EA
MOV TMOD, #00100000B ; 타이머1, 타이머 모드2
MOV PCON, #0 ; SMOD=0
MOV TH1, #0FDH ; 시간상수 9600 보레이트
SETBTR1 ; 타이머 런
;
MOV SCON, #01010000B ; TI=0,RI=0,REN=1,모드1
SETBES ; 시리얼 인터럽트 인에이블
SETBEA; 인터럽트 전체 인에이블
RET
;
SERIAL:JNB RI, SEEND; 수신 인터럽트가 아니면 리턴
CLR EA ; 수신동안 인터럽트 디스에이블
MOV A, SBUF ; 수신
CPL A; 수신 데이터 반전
MOV P1, A; P1포트 출력
CLR RI ; 다음 수신을 위해 클리어
SETBEA ; 인터럽트 인에이블
SEEND:RETI; 리턴(인터럽트가 발생한 곳 -> LOOP)
;
END
------------------------------------------------------------------------------------------------
; SERIAL_EXCISE1.ASM
ORG 4000H
;
CALLSINIT; 시리얼 포트 초기화
LOOP:CALLRECEIVE; 데이터 수신
CPL A; 수신 데이터 반전
MOV P1, A; P1포트의 LED에 표시
CALLSEND; 전송
JMP LOOP
;
; 시리얼 포트 초기화(모드1, 9600bps)
SINIT:MOV TMOD, #00100000B ; 타이머1, 타이머 모드2
MOV PCON, #0 ; SMOD=0
MOV TH1, #0FDH ; 시간상수 9600 보레이트
SETBTR1 ; 타이머 런
;
MOV SCON, #01010010B ; TI=1,RI=0,REN=1,모드1
RET
;
; 수신 루틴(수신한 값 어큐뮬레이터 저장)
RECEIVE:JNB RI, RECEIVE ; RI=0이면 RECEIVE
MOV A, SBUF ; 수신
CLR RI ; 다음 수신을 위하여 클리어
RET
;
; 전송 루틴(어큐뮬레이터값 전송)
SEND:JNB TI, SEND; TI=0이면 SEND
CPL A
INC A; A <- 다음 문자
MOV SBUF, A ; 송신
CLR TI ; 다음 송신을 위해 클리어
RET
;
END
MOV TH0, #4BH; 16진(4BFD) -> 19453
MOV TL0, #0FDH ; 인터럽트 발생 주기(1.085us x (65536-19453) = 50ms)
SETBET0; 타이머0 인에이블
MOV A, #0FFH; P1 포트 초기 출력값(LED 모두 OFF)
MOV P1, A
CLR A
MOV R2, #0
SETBEA; 전체 인터럽트 인에이블
SETBTR0; 타이머0 -> 카운터 시작
;
LOOP:CJNER2, #20, LOOP; 인터럽트 발생주기(50ms x 20 = 1s)
MOV R2, #0
JB F0, COUNT; F0=1 이면 COUNT로 점프
JMP LOOP; 대기
;
; BCD 카운터 서브루틴
COUNT: INC A
DA A; 10진 보정
MOV R3, A
CPL A
MOV P1, A
MOV A, R3
JMP LOOP; 대기
;
;타이머/카운터0 인터럽트 서브루틴
T0_SER:CLR TR0; 타이머0 -> 카운터 정지
MOV TH0, #4BH
MOV TL0, #0FDH
INC R2
SETBTR0; 타이머0 -> 카운터 시작
RETI; 리턴(인터럽트가 발생한 곳 -> LOOP)
;
END
■ 시리얼 포트
; SERIAL1.ASM
ORG 4000H
;
MOV PSW, #08H; BANK 1
CALLSINIT; 시리얼 포트 초기화
MOV R2, #26; R2 <- 전송할 문자수
MOV A, #'A'; A <- 전송 초기 문자
SLOOP:CALLSEND; 전송
INC A; A <- 다음 문자
DJNZR2, SLOOP
;
MOV PSW, #0H; BANK 0
JMP 0057H; 모니터 프로그램으로
;
; 시리얼 포트 초기화(모드1, 9600bps)
SINIT:MOV TMOD, #00100000B ; 타이머1, 타이머 모드2
MOV PCON, #0 ; SMOD=0
MOV TH1, #0FDH ; 시간상수 9600 보레이트
SETBTR1 ; 타이머 런
;
MOV SCON, #01010010B ; TI=1,RI=0,REN=1,모드1
RET
;
; 전송 루틴(어큐뮬레이터값 전송)
SEND:JNB TI, SEND; TI=0이면 SEND
MOV SBUF, A ; 송신
CLR TI ; 다음 송신을 위해 클리어
RET
;
END
------------------------------------------------------------------------------------------------
; SERIAL2.ASM
ORG 4000H
;
CALLSINIT; 시리얼 포트 초기화
LOOP:CALLRECEIVE; 데이터 수신
CPL A; 수신 데이터 반전
MOV P1, A; P1포트의 LED에 표시
SJMPLOOP
;
; 시리얼 포트 초기화(모드1, 9600bps)
SINIT:MOV TMOD, #00100000B ; 타이머1, 타이머 모드2
MOV PCON, #0 ; SMOD=0
MOV TH1, #0FDH ; 시간상수 9600 보레이트
SETBTR1 ; 타이머 런
;
MOV SCON, #01010010B ; TI=1,RI=0,REN=1,모드1
RET
;
; 수신 루틴(수신한 값 어큐뮬레이터 저장)
RECEIVE:JNB RI, RECEIVE ; RI=0이면 RECEIVE
MOV A, SBUF ; 수신
CLR RI ; 다음 수신을 위하여 클리어
RET
;
END
------------------------------------------------------------------------------------------------
; SERIAL3.ASM
ORG 4000H
SJMPSTART
;
ORG 4023H; 시리얼 인터럽트 서비스 루틴 번지
SJMPSERIAL ; SERIAL로 점프
;
START:CALLSINIT ; 시리얼 포트 초기화
LOOP:SJMPLOOP
;
; 시리얼 포트 초기화(모드1, 9600bps)
SINIT:CLR EA
MOV TMOD, #00100000B ; 타이머1, 타이머 모드2
MOV PCON, #0 ; SMOD=0
MOV TH1, #0FDH ; 시간상수 9600 보레이트
SETBTR1 ; 타이머 런
;
MOV SCON, #01010000B ; TI=0,RI=0,REN=1,모드1
SETBES ; 시리얼 인터럽트 인에이블
SETBEA; 인터럽트 전체 인에이블
RET
;
SERIAL:JNB RI, SEEND; 수신 인터럽트가 아니면 리턴
CLR EA ; 수신동안 인터럽트 디스에이블
MOV A, SBUF ; 수신
CPL A; 수신 데이터 반전
MOV P1, A; P1포트 출력
CLR RI ; 다음 수신을 위해 클리어
SETBEA ; 인터럽트 인에이블
SEEND:RETI; 리턴(인터럽트가 발생한 곳 -> LOOP)
;
END
------------------------------------------------------------------------------------------------
; SERIAL_EXCISE1.ASM
ORG 4000H
;
CALLSINIT; 시리얼 포트 초기화
LOOP:CALLRECEIVE; 데이터 수신
CPL A; 수신 데이터 반전
MOV P1, A; P1포트의 LED에 표시
CALLSEND; 전송
JMP LOOP
;
; 시리얼 포트 초기화(모드1, 9600bps)
SINIT:MOV TMOD, #00100000B ; 타이머1, 타이머 모드2
MOV PCON, #0 ; SMOD=0
MOV TH1, #0FDH ; 시간상수 9600 보레이트
SETBTR1 ; 타이머 런
;
MOV SCON, #01010010B ; TI=1,RI=0,REN=1,모드1
RET
;
; 수신 루틴(수신한 값 어큐뮬레이터 저장)
RECEIVE:JNB RI, RECEIVE ; RI=0이면 RECEIVE
MOV A, SBUF ; 수신
CLR RI ; 다음 수신을 위하여 클리어
RET
;
; 전송 루틴(어큐뮬레이터값 전송)
SEND:JNB TI, SEND; TI=0이면 SEND
CPL A
INC A; A <- 다음 문자
MOV SBUF, A ; 송신
CLR TI ; 다음 송신을 위해 클리어
RET
;
END
추천자료
제24회 워드프로세서 필기 1급
제26회 워드프로세서 필기 3급
제27회 워드프로세서 필기 3급
최신 워드프로세서 1,2,3급에 출제된 용어 및 핵심 정리
마이크로티칭
[입력및저장기능]워드프로세서(문서실무)
컴퓨터 구조론 pipeline,벡터 처리(vector processing),배열 프로세서(array processor),sys...
병렬처리(Parallel processing), 파이프라인(Pipeline), 배열 프로세서(Array Processor), 벡...
마이크로 소프트의 빌게이츠
마이크로 컴퓨터 실험- SPI TWI 직렬통신
마이크로컴퓨터 7세그먼트 실험 보고서 - 작시를 이용한 두 자리 7-세그먼트 LED 디스플레이
마이크로컨트롤러
소개글