프로그램/마이컴

8051/4051 UART Interrupt

더월드 2020. 3. 3.

 

#include <reg51.h>		/* Include x51 header file */

void Ext_int_Init()				
{
	EA  = 1;		/* Enable global interrupt */
	ES = 1;  		/* Enable serial interrupt */			
}

void UART_Init()
{
	TMOD = 0x20;		/* Timer 1, 8-bit auto reload mode */
	TH1 = 0xFD;		/* Load value for 9600 baud rate */
	SCON = 0x50;		/* Mode 1, reception enable */
	TR1 = 1;		/* Start timer 1 */
}

void Serial_ISR() interrupt 4    
{
	P1 = SBUF;		/* Give received data on port 1 */
	RI = 0;			/* Clear RI flag */
} 

void main()
{
	P1 = 0x00;		/* Make P1 output */
	Ext_int_Init();  	/* Call Ext. interrupt initialize */
	UART_Init();
	while(1);
}

 

 

#include<reg51.h>
#define LEDs P0
unsigned char receivedChar=0;

void serial_isr() interrupt 4 
{ 
    if(RI == 1)
    {
        receivedChar = SBUF; // Copy the received char
        
        //-----------------------
        //수신데이터 처리부분
        SBUF = receivedChar; // echo the character back
        //-----------------------
        
        RI = 0;              // Clear the Receive interrupt flag
    }
    else if(TI == 1)
    {
        TI = 0;              // Clear the Transmit interrupt flag
    }
}


void main()
{
    SCON = 0x50;  // Asynchronous mode, 8-bit data and 1-stop bit
    TMOD = 0x20;  // Timer1 in Mode2.
    TH1 =  0xFD;  // Load timer value for 9600 baudrate
    TR1 = 1;      // Turn ON the timer for Baud rate generation
    ES  = 1;      // Enable Serial INterrupt
    EA  = 1;      // Enable Global Interrupt bit

    while(1)
    {
        LEDs = receivedChar;
    }
}

'프로그램 > 마이컴' 카테고리의 다른 글

8051 모든 인터럽트  (0) 2020.03.04
외부 인터럽트  (0) 2020.03.04
8051/4051 Timers  (0) 2020.03.04
8051/4051 UART  (0) 2020.03.03
8051 LED Blinking Program  (0) 2020.03.03

댓글

💲 추천 글