📄 m10_uart.txt
字号:
// File : m10_uart.c
#include <gc80c520_pl44i.h>
#include <stdio.h>
unsigned char received_data;
unsigned char transmit_ready;
unsigned char response;
unsigned char i;
code char buff[] = "string";
extern void _putchar(char ch);
void initialize();
void printf_fast(code char *fmt, ...);
void putchar(char ch)
{
SBUF = ch;
while(transmit_ready == 0);
transmit_ready = 0;
}
void uart_int(void) interrupt SIO_VECTOR
{
if (TI)
{
// Transmit Mode
_asm nop _endasm;
TI = 0;
transmit_ready = 1;
}
else if (RI)
{
// Receive Mode
received_data = SBUF;
RI = 0;
if(received_data=='T')
{
response = 1;
}
else
{
SBUF = received_data; // Resend to Serial Port
while(!TI);
_asm nop _endasm;
TI=0;
}
}
}
void main()
{
initialize();
printf("\r\ntest\r\n");
while(1)
{
if(response == 1)
{
response = 0;
printf("test %d 0x%x %s\r\n",10,0x20,buff);
}
};
}
void initialize() {
response = 0;
transmit_ready = 0;
ALTSEL |= 0x06;
// *Fosc = 22.1284MHz 57600 bps
TMOD = 0x20; // Timer 1 : Mode 2<Auto Reload>
SM0 = 0; // SM0,SM1 = [0,1] : UART Mode 1 (8-bit UART)
SM1 = 1;
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 + -