[에리카A+] 마이크로프로세서응용 Lab7 Assembler Language Programming
- 최초 등록일
- 2020.04.02
- 최종 저작일
- 2018.01
- 7페이지/ MS 워드
- 가격 1,500원
목차
Chapter 1. 구현 방법
Chapter 2. 결과
Chapter 3. 결론 및 Discussion
본문내용
Chapter 1. 구현 방법
이번에 구현할 프로그램은 토글스위치이다. 어셈블리어로 구현을 해야 했는데, 어셈블리어를 처음 사용하는 상황이어서 프로그램 구현에 조금 어려움을 겪었다.
JMP 위치설정에 약간의 어려움이 있었지만, 결국에는 제대로 코딩하여 정상적으로 작동시킬 수 있었다.
해당 프로그램을 구현하기 위해서
1. 현재의 값을 저장하는 변수 (R16, 초기값 0x0F)
2. 이전의 값을 저장하는 변수 (R17, 초기값 0b00010000)
3. 버튼의 State 변화를 저장하는 변수 (R20, 초기값 0b11111111)
4. 출력을 반전시키기 위한 변수 (R21, 초기값 0b00000001)
를 사용하였다. R18, R19 는 딜레이 함수에 이미 사용되고 있어서 사용하지 못하였다. (하지만 결국 딜레이 함수를 사용하지는 않았다.)
1. 변수 선언 및 초기화
2. 스위치로 새로운 입력을 받음.
3. ANDI 연산을 통해 R16을 특정 상수로 변환
4. 이전 상태의 값을 확인
5. ‘안 눌림’ 상태일 경우 현재 상태의 값을 확인
‘눌림’ 상태일 경우// 다른 경우는 UNPRES 로
6. R20 을 반전시켜 줌
7. UNPRES 로 점프
8. 이전 상태의 값을 현재상태의 값으로 초기화
9. LOOP 로 점프
Chapter 2. 결과
처음에 코딩할 때에는 JMP위치를 잘못 설정하여(위쪽의 JMP를 LOOP로 설정하였었음) 대략적으로 75% 확률로 정상작동하였다. 스위치가 원래 조금 안 좋았기 때문에 스위치 때문인가 싶기도 하였지만, 오작동의 정도가 평소보다 심했었다. 그래서 천천히 생각해본 결과 코딩에 약간의 문제가 있었다. 전체적인 프로그램 구현 논리는 맞지만 상황에 따른 변수값 수정이 바로바로 안 이루어지고 다음 LOOP 에서 버튼의 상태가 변화가 있을 시 UNPRES로 이동하여 출력이 변하도록 코딩을 했었다. 출력을 변화시키는 부분이 R20 을 반전시켜준 후에도 있어야 하지만 그걸 생각하지 못하였다.
참고 자료
없음