본문내용
게 한다.
READ9:LDSAL,TWCR; SLA+R complete ?
SBRSAL,TWINT; 컨트롤 레지스터의 값을 불러들어 TWINT 비트가 set 되어있으면
READ10을 실행한다.
RJMPREAD9; 아니면 다시 루프 READ9실행
READ10:LDSAL,TWSR; 상태레지스터의 값을 AL로 불러온다.
ANDIAL,0b11111000; 11111000과 AND 연산을 한후
CPIAL,0x40; 40과 비교하여 같으면 그다음명령수행하고
BRNEREAD10; 다르면 다시 READ10 루프를 수행한다.
LDIAL,0b10000100; 컨트롤레지스터에 인터럽트를 요청하여 라이트가 시도하게 한다.
STSTWCR,AL;
READ11:LDSAL,TWCR; address complete ?
SBRSAL,TWINT;
RJMPREAD11; 주소가 라이트 끝났는지확인하여 끝나지않았다면 READ11루프로 다시돌아가서 끝나기를 기다린다.
READ12:LDSAL,TWSR; 상태레지스터의 값을 AL로 불러들어
ANDIAL,0b11111000; 11111000와 AND 연산을 한후
CPIAL,0x58; 58과 비교하여 같지않다면
BRNEREAD12; READ12로 돌아가 다시연산하고
LDSDL,TWDR; 데이터 레지스터의 내용을 데이터가 저장된 레지스터로 옮겨 디스플레이할 때 사용한다.
LDIAL,0b10010100; AL에 10010100를 넣어서 스탑조건을 준다.
STSTWCR,AL
RET
;------------------------------------------------
;AT24C16 Write (BH:BL=address, DL=data)
;------------------------------------------------
WRITE:LDIAL,0b10100100; 시작 조건을 걸어주기 위하여 TWCR에 10100100을 넣어준다.
SCL 클럭신호가 계속하여 L상태로 유지되어주며, TWI가 마스터로 동작하여 TWI는 버스가 사용가능한 상태인지를 체크하며 TWI가 동작가능 하는 것을 가능하게 하며 SDA 및 SCL핀을 유효 하게한다.
STSTWCR,AL
WRITE1:LDSAL,TWCR; 컨트롤레지스터에 있는 값을 AL에 저장시켜놓고 AL레지스터의 TWINT비트가 1로 set되어 있으면 Write2로 이동 아니면 인터럽트 허용될 때까지 기다린다.
SBRSAL,TWINT
RJMPWRITE1
WRITE2:LDSAL,TWSR; 상태레지스터의 값을 AL에 저장
ANDIAL,0b11111000; 11111000 과 AL을 AND연산을 취해준다.
CPIAL,0x08; 08과 비교하여 같으면 BH의 값을 AL로 이동하고 아니면 다시 WRITE2루프로 돌아간다.
BRNEWRITE2
MOVAL,BH; 상태레지스터의 값이 08일 때 BH의 값을 AL로 이동
LSLAL; AL의 값을 로지컬 쉬프트 레프트 취해준다
ANDIAL,0b00001110; AL과 00001110을 AND 연산취해주고
ORIAL,0b10100000; AL과 10100000을 OR 연산을 취해준다
STSTWDR,AL; 그값 AL을 TWI 데이터 레지스터에 저장한다.
LDIAL,0b10000100; AL에 10000100을 저장하여 컨트롤 레지스터에 그 값을 넣어서 TWI 동작을 가능하게 만들고 SDA, SCL핀을 유효하게 한다.
STSTWCR,AL
WRITE3:LDSAL,TWCR; TWCR의 값을 AL에 넣어 TWINT 비트가 1로 SET되어 있는지 확인하여SLA+W이 완료되었는지를 확인한다.
SBRSAL,TWINT
RJMPWRITE3; 아니면 TWINT가 1이 될 때까지 WRITE3루프를 시행시킨다.
WRITE4:LDSAL,TWSR; TWSR의 상태레지스터의 값을 AL에 저장시켜
ANDIAL,0b11111000; 11111000과 AND 연산을 취해주고
CPIAL,0x18; 16진수 18과 비교하여 그 값이 같다면
BRNEWRITE4; BL의 값을 데이터레지스터에 저장하고 그 값이 같지않다면 WRITE4 루프를 계속 수행한다.
STSTWDR,BL; word address
LDIAL,0b10000100; 10000100 값을 AL에 저장하여 컨트롤 레지스터에 저장한다.
STSTWCR,AL
WRITE5:LDSAL,TWCR; 컨트롤레지스터의 값을 AL에 저장하여 AL레지스터의 TWINT 가 1로 SET되어 있는지 확인하여 address 가 완료되었는지 확인 후 완료가 되었으면
WRITE6 루프를 시행하고 그렇지 않으면 WRITE5로 돌아간다.
SBRSAL,TWINT
RJMPWRITE5
WRITE6:LDSAL,TWSR; 상태레지스터의 값을 AL로 저장한후
ANDIAL,0b11111000; 11111000 과 AL을 AND 연산을 한뒤
CPIAL,0x28; 16진수 28과 비교하여
BRNEWRITE6; 같지 않다면 WRITE6으로 돌아가고 같다면 DL레지스터의 값을 데이터레지스터로 저장한다.
STSTWDR,DL; DL에 있는 값을 TWDR로 저장한다.
LDIAL,0b10000100; 10000100을 TWCR로 저장하여 인터럽트를 요청하고 동작하는 것을 가능 하게 하며 SDA,SCL 핀을 유효한다.
STSTWCR,AL
WRITE7:LDSAL,TWCR; 컨트롤레지스터에 있는 값을 AL로 옮긴다.
SBRSAL,TWINT; TWINT 비트가 1로 SET되어 있는지 확인한 후 1로 되어있다면 WRITE8로 이동하고 0으로 되어있다면 WRITE7로 다시 돌아간다.
RJMPWRITE7
WRITE8:LDSAL,TWSR; 상태레지스터에 있는 값을 AL로 저장한뒤
ANDIAL,0b11111000; 11111000 와 AL 레지스터를 AND 연산을 한다.
CPIAL,0x28; 16진수 28과 비교하여
BRNEWRITE8; 같다면 다음 연산 즉 스탑 조건을 주고 다르다면 WRITE8루프로 돌아가서 다시 상태레지스터의 값을 비교한다.
LDIAL,0b10010100; AL레지스터에 10010100을 저장하여 TWCR 레지스터에 저장하면 TWI가 스탑조건을 출력한다.
STSTWCR,AL
CALLD5MS; 5ms의 타임딜레이를 준다.
RET
READ9:LDSAL,TWCR; SLA+R complete ?
SBRSAL,TWINT; 컨트롤 레지스터의 값을 불러들어 TWINT 비트가 set 되어있으면
READ10을 실행한다.
RJMPREAD9; 아니면 다시 루프 READ9실행
READ10:LDSAL,TWSR; 상태레지스터의 값을 AL로 불러온다.
ANDIAL,0b11111000; 11111000과 AND 연산을 한후
CPIAL,0x40; 40과 비교하여 같으면 그다음명령수행하고
BRNEREAD10; 다르면 다시 READ10 루프를 수행한다.
LDIAL,0b10000100; 컨트롤레지스터에 인터럽트를 요청하여 라이트가 시도하게 한다.
STSTWCR,AL;
READ11:LDSAL,TWCR; address complete ?
SBRSAL,TWINT;
RJMPREAD11; 주소가 라이트 끝났는지확인하여 끝나지않았다면 READ11루프로 다시돌아가서 끝나기를 기다린다.
READ12:LDSAL,TWSR; 상태레지스터의 값을 AL로 불러들어
ANDIAL,0b11111000; 11111000와 AND 연산을 한후
CPIAL,0x58; 58과 비교하여 같지않다면
BRNEREAD12; READ12로 돌아가 다시연산하고
LDSDL,TWDR; 데이터 레지스터의 내용을 데이터가 저장된 레지스터로 옮겨 디스플레이할 때 사용한다.
LDIAL,0b10010100; AL에 10010100를 넣어서 스탑조건을 준다.
STSTWCR,AL
RET
;------------------------------------------------
;AT24C16 Write (BH:BL=address, DL=data)
;------------------------------------------------
WRITE:LDIAL,0b10100100; 시작 조건을 걸어주기 위하여 TWCR에 10100100을 넣어준다.
SCL 클럭신호가 계속하여 L상태로 유지되어주며, TWI가 마스터로 동작하여 TWI는 버스가 사용가능한 상태인지를 체크하며 TWI가 동작가능 하는 것을 가능하게 하며 SDA 및 SCL핀을 유효 하게한다.
STSTWCR,AL
WRITE1:LDSAL,TWCR; 컨트롤레지스터에 있는 값을 AL에 저장시켜놓고 AL레지스터의 TWINT비트가 1로 set되어 있으면 Write2로 이동 아니면 인터럽트 허용될 때까지 기다린다.
SBRSAL,TWINT
RJMPWRITE1
WRITE2:LDSAL,TWSR; 상태레지스터의 값을 AL에 저장
ANDIAL,0b11111000; 11111000 과 AL을 AND연산을 취해준다.
CPIAL,0x08; 08과 비교하여 같으면 BH의 값을 AL로 이동하고 아니면 다시 WRITE2루프로 돌아간다.
BRNEWRITE2
MOVAL,BH; 상태레지스터의 값이 08일 때 BH의 값을 AL로 이동
LSLAL; AL의 값을 로지컬 쉬프트 레프트 취해준다
ANDIAL,0b00001110; AL과 00001110을 AND 연산취해주고
ORIAL,0b10100000; AL과 10100000을 OR 연산을 취해준다
STSTWDR,AL; 그값 AL을 TWI 데이터 레지스터에 저장한다.
LDIAL,0b10000100; AL에 10000100을 저장하여 컨트롤 레지스터에 그 값을 넣어서 TWI 동작을 가능하게 만들고 SDA, SCL핀을 유효하게 한다.
STSTWCR,AL
WRITE3:LDSAL,TWCR; TWCR의 값을 AL에 넣어 TWINT 비트가 1로 SET되어 있는지 확인하여SLA+W이 완료되었는지를 확인한다.
SBRSAL,TWINT
RJMPWRITE3; 아니면 TWINT가 1이 될 때까지 WRITE3루프를 시행시킨다.
WRITE4:LDSAL,TWSR; TWSR의 상태레지스터의 값을 AL에 저장시켜
ANDIAL,0b11111000; 11111000과 AND 연산을 취해주고
CPIAL,0x18; 16진수 18과 비교하여 그 값이 같다면
BRNEWRITE4; BL의 값을 데이터레지스터에 저장하고 그 값이 같지않다면 WRITE4 루프를 계속 수행한다.
STSTWDR,BL; word address
LDIAL,0b10000100; 10000100 값을 AL에 저장하여 컨트롤 레지스터에 저장한다.
STSTWCR,AL
WRITE5:LDSAL,TWCR; 컨트롤레지스터의 값을 AL에 저장하여 AL레지스터의 TWINT 가 1로 SET되어 있는지 확인하여 address 가 완료되었는지 확인 후 완료가 되었으면
WRITE6 루프를 시행하고 그렇지 않으면 WRITE5로 돌아간다.
SBRSAL,TWINT
RJMPWRITE5
WRITE6:LDSAL,TWSR; 상태레지스터의 값을 AL로 저장한후
ANDIAL,0b11111000; 11111000 과 AL을 AND 연산을 한뒤
CPIAL,0x28; 16진수 28과 비교하여
BRNEWRITE6; 같지 않다면 WRITE6으로 돌아가고 같다면 DL레지스터의 값을 데이터레지스터로 저장한다.
STSTWDR,DL; DL에 있는 값을 TWDR로 저장한다.
LDIAL,0b10000100; 10000100을 TWCR로 저장하여 인터럽트를 요청하고 동작하는 것을 가능 하게 하며 SDA,SCL 핀을 유효한다.
STSTWCR,AL
WRITE7:LDSAL,TWCR; 컨트롤레지스터에 있는 값을 AL로 옮긴다.
SBRSAL,TWINT; TWINT 비트가 1로 SET되어 있는지 확인한 후 1로 되어있다면 WRITE8로 이동하고 0으로 되어있다면 WRITE7로 다시 돌아간다.
RJMPWRITE7
WRITE8:LDSAL,TWSR; 상태레지스터에 있는 값을 AL로 저장한뒤
ANDIAL,0b11111000; 11111000 와 AL 레지스터를 AND 연산을 한다.
CPIAL,0x28; 16진수 28과 비교하여
BRNEWRITE8; 같다면 다음 연산 즉 스탑 조건을 주고 다르다면 WRITE8루프로 돌아가서 다시 상태레지스터의 값을 비교한다.
LDIAL,0b10010100; AL레지스터에 10010100을 저장하여 TWCR 레지스터에 저장하면 TWI가 스탑조건을 출력한다.
STSTWCR,AL
CALLD5MS; 5ms의 타임딜레이를 준다.
RET
키워드
추천자료
컴퓨터 통신언어의 매체언어적 성격 및 대화양식에 관한 고찰
[IT와경영정보시스템]컴퓨터시스템 하드웨어의 직렬처리 방식에 비해 병렬처리 방식의 특징과...
컴퓨터 활용능력 1급 필기 요약
[원격교육][CAL][컴퓨터보조학습][정보통신기술][정보사회]원격교육의 개념, 원격교육의 동향...
마이크로프로세서(Microprocessor)의 발전 과정과 컴퓨터 산업에 기여한 점 그리고 최신동향...
(컴퓨터의이해) 1.스마트폰의 최신동향을 서술_스마트폰최신동향 스마트폰 유용성 스마트폰역...
컴퓨터 정보 통신 - Wireless LAN에 관해서
[정보통신 실습] 중첩의 원리 (principle of superposition) : 중첩의 원리를 실험적으로 확...
[컴퓨터의 이해 공통] 1.스마트폰 현재 기준 ①대표적인 스마트폰 3개 이상 선정 이유와 각 운...
[컴퓨터의 이해 공통] 1. 본인이 사용 중이거나 또는 최신 스마트폰을 1 개 선정하고 아래의 ...
[언어와 생활 공통] 교재 1장을 참고하여, 통신 언어의 특징을 보이는 자료를 직접 수집ㆍ조...
[컴퓨터의 이해 공통] 1. 본인이 사용 중이거나 또는 최신 스마트폰을 1 개 선정하고 아래의 ...
소개글