반응형 interrupt7 PIC IO PORT Test 1. 개요 : I/O 포트를 테스트 해 본다. Port A와 B의 I/O 포트를 테스트 해 본다. Port A는 While 문 속에서 토글 시키고, Port B는 타이머 인터럽트를 발생시켜서 동작시킨다. 2. Main 함수 void main(void) { char i = 0; // 변수 설정 /* 16MHz 설정방법*/ IRCF1 = 1; // Configuration bit 설정 시 PLL을 ON 시켰으므로 IRCF0 = 1; // OSCCON 레지스터의 IRRCF1:0 비트를 11로 // 설정해서 Main Clock을 16MHz로 설정한다. while(ICSS==0); // ICSS가 셋 될 때 까지 기다린다. 0.5% 안정상태까지. /* 16MHz 설정완료*/ GPIO_Initialize(); //.. 2022. 12. 23. MG82F6D Series I2C Slave Int 1. 프로그램 개요 P22는 Green 0 LED, P24는 Red LED, P26은 Green 1 LED가 연결되어 있다. MG82F6D 보드는 Slave로 셋팅하고, MG32F02A072AD4 IC를 이용한 보드를 Master로 설정한다. Master에서 Slave로 데이터 어드레스, 16바이트의 데이터를 지속적으로 전송하고, Slave에서는 I2C를 이용해서 수신된 데이터를 UART0으로 전송한다. 2. 회로도 3. Code ⑴ main routine void main() { u8 i; InitSystem(); // 시스템 초기화 SendStr("\nStart"); // UART0으로 프로그램의 시작을 알림 LED_G_0=0;LED_G_1=0;LED_R=0; // LED ALL ON DelayXms.. 2022. 12. 9. MG82F6D Series UART0 TX RX INT 1. 프로그램 개요 P22는 Green 0 LED, P24는 Red LED, P26은 Green 1 LED가 연결되어 있다. UART0을 인터럽트 방식으로 송/수신하는 것을 테스트 한다. 2. 회로도 3. Code ⑴ main routine void main() { InitSystem(); // 시스템 초기화 Uart0RxIn=0; // 변수 초기화 Uart0RxOut=0; Uart0TxIn=0; Uart0TxOut=0; bUart0TxFlag=0; LED_G_0=0;LED_G_1=0;LED_R=0; // LED ALL ON DelayXms(1000); // 1초 딜레이 LED_G_0=1;LED_G_1=1;LED_R=1; // LED ALL OFF Uart0SendStr("Start!\n"); // 시리.. 2022. 12. 2. MG82F6D Series ADC with Interrupt - 4 ⑻ Interrupt Timer 0 인터럽트를 활성화시킨다. /*********************************************************************************** *Function: void InitInterrupt(void) *Description: Initialize Interrupt *Input: *Output: *************************************************************************************/ void InitInterrupt(void) { INT_EnTIMER0(); // Enable TIMER0 interrupt. } - Timer 0 인터럽트 활성화 #define INT_.. 2022. 11. 8. MG82F6D Series ADC with Interrupt - 3 ⑸ 타이머 0 초기화 루틴 è타이머 0 초기화 루틴 /*********************************************************************************** *Function: void InitTimer0(void) *Description: Initialize Timer0 *Input: *Output: *************************************************************************************/ void InitTimer0(void) { TM_SetT0Mode_1_16BIT_TIMER(); // TIMER0 Mode 1: 16-bit timer TM_SetT0Clock_SYSCLKDiv12(); /.. 2022. 11. 8. MG82F6D Series ADC with Interrupt - 2 ⑵ 시스템 초기화 루틴 void InitSystem(void) { InitPort(); InitClock(); InitTimer0(); InitUart0_T1(); InitADC(); InitInterrupt(); } // 시스템 초기화 루틴 // 포트 초기화루틴 // 클럭 초기화 루틴 // 타이머 0 초기화 // Timer 1 Overflow를 이용한 UART0 초기화 // ADC 초기화 // 인터럽트 초기화 ADC를 인터럽트로 받아들이기 위해서 ADC와 인터럽트를 초기화 시키는 루틴이 추가되었음 ADC 결과 값을 시리얼로 전송하기 위하여 UART0을 초기화하는 루틴이 추가되었음. UART0은 Timer 1의 Overflow 기능을 이용하여 Baud Rate를 결정하는 방법을 사용하였음 Megawin .. 2022. 11. 8. 이전 1 2 다음 반응형