해보기는 했어?

오늘 안됐다고 포기하지 말고 용기내서 내일 다시 해 보자.

MEGAWIN

MG82F6D16 GPIO MODE

롬돌이 2022. 10. 25. 23:05
반응형

1. 프로그램 개요

P22Green 0 LED, P24 Red LED, P26Green 1 LED가 연결되어 있다.

부팅 시 LED가 모두 ON 되어 있다가 1초가 지난 뒤에 모두 OFF 된다. 그 뒤 G0èG1èRèG0…의 순으로 200ms마다 순차적으로 LED가 켜진다.

 

2. 회로도

/* LED 부분 회로도 추가 */

 

3. Code

main routine

 

void main() Main routine 시작
{  
    InitSystem(); 시스템 초기화루틴
    LED_G_0=0;LED_G_1=0;LED_R=0; LED를 모두 ON 시킴
    DelayXms(1000); 1초 딜레이
    LED_G_0=1;LED_G_1=1;LED_R=1; LED를 모두 OFF 시킴
    while(1) 무한루프, 시스템 동작
    {  
        LED_G_0=0; Green 0 LED ON
        DelayXms(200); 200ms 딜레이
        LED_G_0=1; Green 0 LED OFF
        LED_G_1=0; Green 1 LED ON
        DelayXms(200); 200ms 딜레이
        LED_G_1=1; Green 1 LED OFF
        LED_R=0; Red LED ON
        DelayXms(200); 200ms 딜레이
        LED_R=1; Red LED OFF
    }  
}  
   

 

 

⑵ 시스템 초기화 루틴

void InitSystem(void)
{
           InitPort();
}
시스템 초기화 루틴
 
포트 초기화루틴

 

⑶ 포트 초기화 루틴 회로도를 보면서 각 입출력 핀의 속성을 지정한다.

"(EN)MG82F6D16_Datasheet_V051.PDF13Configurable I/O Ports”를 참조한다.

P10, P11 : 아날로그 입력으로 설정한다.

P15Open Drain type으로 설정하고 Pull-Up을 설정해 준다.

P16Open Drain type으로 설정한다.

P17Push-Pull type으로 설정한다.

P22, P24, P26Push-Pull type으로 설정한다.(LED연결)

P20, P31, P33, P34, P35 Quasi-Bidirectional type으로 설정한다.

P61 Open-Drain typ으로 설정한다.

*** 아래 함수에 사용된 매크로함수는 “API_Macro_MG82FG6D16.H”에서 찾아볼 수 있다.

\Megawin 8051\(EN)MG82F6D16_SampleCode_v1.20\MG82F6D16_GPIO_Mode\code\include

 

void InitPort(void)

{

           PORT_SetP1AInputOnly(BIT0|BIT1);     // Set P10,P11 as Analog-Input-Only

          ==>P10, P11을 아날로그 입력으로설정

           PORT_SetP1OpenDrainPu(BIT5);        // Set P15 as Open-Drain with Pull-High

          ==> P15Pull-Up이 연결된 Open-Drain 핀으로 설정

           PORT_SetP1OpenDrain(BIT6);            // Set P16 as Open-Drain

          ==>P16Open-Drain 핀으로 설정

           PORT_SetP1PushPull(BIT7);                          // Set P17 as Push-Pull,

          ==> P17 Push-Pull type으로 설정

           PORT_SetP2PushPull(BIT2|BIT4|BIT6);   // Set P22,P24,P26 as Push-Pull,

          ==>P22, 24, 26Push-Pull type으로 설정

           PORT_SetP3QuasiBi(BIT0|BIT1|BIT3|BIT4|BIT5);  // Set P30,P31,P33,P34,P35 as Quasi-Bidirectional

          ==>P30, 31, 33, 34, 35는 양방향 핀으로 설정

           PORT_SetP6OpenDrain(BIT0|BIT1);      // Set P60,P61 as Open-Drain

          ==>P61Open-Drain 핀으로 설정

}

 

4. 프로그램 실행

*** Keil compiler가 인스톨되어 있어야함 ***

해당 Example 폴더를 찾아가 KeilPrj폴더를 Open 한다.

\Megawin 8051\(EN)MG82F6D16_SampleCode_v1.20\MG82F6D16_GPIO_Mode\KeilPrj

 해당 폴더의 Keil project 파일을 더블클릭하여 실행시킨다.(MG82F6D16_DEMO.uvproj)

 Rebuild 아이콘을 클릭하여 프로젝트를 컴파일 한다.

 Demo BoardUSB Connector를 연결하여 전원을 인가하고, 전원 스위치를 ON시키고, OCD ICE를 연결한 상태에서 위 이미지의 Start/Stop Debug Session(Ctrl+F5) 버튼을 눌러 컴파일된 프로젝트의 디버그 데이터를 다운로드 시킨다.(컴파일 시 에러가 발생하지 않아야함)

 다운로드 후 Run(F5) 버튼을 클릭하면 프로그램이 동작한다.

 5. 동작 영상

 https://youtu.be/p-GsFQtzCQ0

 

반응형

'MEGAWIN' 카테고리의 다른 글

MG82F6D Series ADC with Interrupt - 4  (0) 2022.11.08
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
MG32F02A072 SPI  (0) 2022.10.27