[에리카A+] 마이크로프로세서응용 Lab8 Assembler Language Programming 2
- 최초 등록일
- 2020.04.02
- 최종 저작일
- 2018.01
- 13페이지/ MS 워드
- 가격 1,500원
목차
Chapter 1. 구현 방법
Chapter 2. 결과
Chapter 3. 결론 및 Discussion
본문내용
Chapter 1. 구현 방법
이번에 구현할 프로그램은 스위치를 이용해서 여러 동작 모드를 구현한 스톱워치이다. 이를 어셈블리어로 구현을 해야 했다.
해당 프로그램을 구현하기 위해서 많은 변수를 저장할 수 있는 레지스터가 필요했다.
1. AL 의 값을 저장하는 변수 (R16)
2. AH 의 값을 저장하는 변수 (R17)
3. button 의 값을 저장하는 변수 (R18)
4. pre_button 의 값을 저장하는 변수 (R19)
5. int_counter 의 값을 저장하는 변수 (R20)
6. int_sec 의 값을 저장하는 변수 (R21)
7. int_min 의 값을 저장하는 변수 (R22)
8. ones_digit 의 값을 저장하는 변수 (R23)
9. tens_digit 의 값을 저장하는 변수 (R24)
10. temp 의 값을 저장하는 변수 (R25)
11. mode 의 값을 저장하는 변수 (R26)
들을 사용하였다. 메모리에 저장을 시켜놓고 꺼내서 사용하는 식으로 구성하면 더욱 효율적이겠으나, 그렇게 하려면 시간이 너무 오래 걸리기 때문에 여러 개의 레지스터를 이용하여 변수를 저장하는 방식으로 프로그램을 구성하였다.
간단하게 큰 동작만을 설명하자면 아래와 같다.
1. 프로그램에서 사용할 여러 레지스터들을 설정한다. Timer/Counter1, SP 등
2. 프로그램에서 사용할 포트들을 설정한다.
3. Timer/Counter1의 CTC 모드를 설정한다
4. OC1A Interrupt 를 설정한다.
5. 버튼의 입력을 받는다.
6. 버튼의 입력에 따라 버튼이 눌린 상태일 경우 모드를 바꾸어주고 각 모드에 알맞은 동작을 실행한다. 각각의 모드에따라 여러 과정을 거친 후
(초기상태 mode = 0) : Enable Timer/Counter1 OC1A Interrupt , mode = 1
(mode = 1) : Disable Timer/Counter1 OC1A Interrupt , mode = 2
참고 자료
없음