📄 m21_uart.txt
字号:
// File : m21_uart.c
#include <gc89c520_tq32i.h>
unsigned char received_data;
unsigned char transmit_ready;
unsigned char response;
void initialize();
void putchar(char ch)
{
while(transmit_ready == 0);
transmit_ready = 0;
SBUF = ch;
}
void delay()
{
char temp;
for(temp=0;temp<20;temp++);
}
void uart_int(void) interrupt SIO_VECTOR
{
if (TI)
{
// Transmit Mode
TI = 0;
transmit_ready = 1;
}
else if (RI)
{
// Receive Mode
received_data = SBUF;
RI = 0;
if(1) //received_data=='T')
{
response = 1;
}
else
{
SBUF = received_data; // Resend to Serial Port
while(!TI);
delay();
TI=0;
}
}
}
void main()
{
initialize();
putchar('T');
while(1)
{
if(response == 1)
{
response = 0;
}
};
}
void initialize()
{
while (!(STATUS & 0x10)); // XTUP Check (Crystal AMP)
EXIF = EXIF | XTRG_; // System Clock is Crystal Osc. (default =0, Ring Osc.)
response = 0;
transmit_ready = 1;
ALTSEL |= 0x04;
// *Fosc = 22.1284MHz 57600 bps
TMOD = 0x20; // Timer 1 : Mode 2<Auto Reload>
// UART Mode 1 (8-bit UART)
PCON |= 0x80;
TH1 = 0xFE;
REN = 1; // Reception Enable
TF1 = 0;
ES = 1; // UART Interrupt (Commnucation) Enable
EA = 1; // All Interrupts Enable
TR1 = 1; // Timer1 Start (Enable)
} // End: void initialize(void)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -