⑻ Interrupt Timer 0 인터럽트를 활성화시킨다.
/***********************************************************************************
*Function: void InitInterrupt(void)
*Description: Initialize Interrupt
*Input:
*Output:
*************************************************************************************/
void InitInterrupt(void)
{
INT_EnTIMER0(); // Enable TIMER0 interrupt.
}
- Timer 0 인터럽트 활성화
#define INT_EnTIMER0() ET0=1
IE(Interrupt Enable) 레지스터의 ET0 비트를 Set 시킨다.
⑼ Timer 0 Interrup handler(routine) èTimer 0 인터럽트 발생시 처리하는 루틴
/***********************************************************************************
*Function: void INT_T0(void)
*Description: T0 Interrupt handler
*Input:
*Output:
**************************************************************************************/
void INT_T0(void) interrupt INT_VECTOR_T0
{
TH0=TIMER_12T_1ms_TH;
TL0=TIMER_12T_1ms_TL;
if(LedTime!=0) LedTime--;
}
- 1ms 타이머를 유지하기 위하여 TH0와 TL0에 설정 값을 저장한다.
- Software Timer를 동작 시킨다.(LedTime 변수의 값이 0이 아니면 1 감소시킨다.)
⑽ ADC Interrupt Handler èADC가 종료되어 인터럽트가 발생할 경우 처리하는 루틴
/***********************************************************************************
*Function: void INT_ADC(void)
*Description: ADC Interrupt handler
*Input:
*Output:
*************************************************************************************/
void INT_ADC(void) interrupt INT_VECTOR_ADC
{
WordTypeDef wAdcValue;
LED_G_0=0;
wAdcValue.B.BHigh=ADCDH; // ADC결과 상위 바이트 저장
wAdcValue.B.BLow=ADCDL; // ADC 결과 하위 바이트 저장
TestBuf[TestBufLen].W= wAdcValue.W; // word size ADC result를 TestBuf에 저장한다.
TestBufLen++; // 버퍼 길이를 1 증가시킨다.
if(TestBufLen>=TEST_ADC_DATA_CNT) // 버퍼의 데이터가 64개가 저장되면
{
bAdcflag=TRUE; // bAdcflag에 TRUE를 저장하고
INT_DisADC(); // ADC 인터럽트를 Disable 시킨다.
}
ADCON0 = ADCON0&(~ADCI); // Clear flag
LED_G_0=1;
}
ADC 인터럽트 루틴에서는 위의 주석문과 같이 64번 AD 변환 후 ADC 인터럽트를 Disable 시킨다. AD 변환된 데이터는 Main routine에서 시리얼로 전송한다. 전송이 완료되면 다시 ADC 인터럽트를 Enable 시킨다.
4. 프로그램 실행
*** Keil compiler가 인스톨되어 있어야함 ***
해당 Example 폴더를 찾아가 KeilPrj폴더를 Open 한다.
\Megawin 8051\(EN)MG82F6D16_SampleCode_v1.20\MG82F6D16_ADC_Int\KeilPrj
해당 폴더의 Keil project 파일을 더블클릭하여 실행시킨다.(MG82F6D16_DEMO.uvproj)
Rebuild 아이콘을 클릭하여 프로젝트를 컴파일 한다.
Demo Board에 USB Connector를 연결하여 전원을 인가하고, 전원 스위치를 ON시키고, OCD ICE를 연결한 상태에서 위 이미지의 Start/Stop Debug Session(Ctrl+F5) 버튼을 눌러 컴파일된 프로젝트의 디버그 데이터를 다운로드 시킨다.(컴파일 시 에러가 발생하지 않아야함)
다운로드 후 Run(F5) 버튼을 클릭하면 프로그램이 동작한다.
5. 동작 영상
'MEGAWIN' 카테고리의 다른 글
MG82F6D Series CLK xtal (0) | 2022.11.10 |
---|---|
MG82F6D Series GPIO P6 (0) | 2022.11.09 |
MG82F6D Series ADC with Interrupt - 3 (0) | 2022.11.08 |
MG82F6D Series ADC with Interrupt - 2 (0) | 2022.11.08 |
MG82F6D Series ADC with Interrupt - 1 (0) | 2022.11.08 |