📄 uart.c
字号:
#include"hal.h"
#define RE_EN (U0CSR|=0X40)
#define RTX_BY (U0CSR&0X01==1)
#define TX_BYYE (U0CSR&0X02)
BYTE RX_IN;
int i;
char data[20]={5,2,3,4,5,6,7,8,9,11,12,12,13,13,34,5,45,67,0,21};
void EI();
void DI();
void initialUART();
void main(void)
{
P2SEL=0X00;
IO_DIR_PORT_PIN(2,0,IO_OUT);
IO_DIR_PORT_PIN(2,1,IO_OUT);
P2_1=1;
P2_0=1;
while(1){
initialUART();
for(int j=0;j<200;j++);
//U0UCR|=0X3D; // 9 BIT odd 2 low stop bit and low start bit;
URX0IF=0;
UTX0IF=0;
INT_ENABLE(INUM_URX0, INT_ON);
EI();
U0CSR|=0X40;
i=1;
while (!URX0IF);
if(RX_IN==0X01){
INT_ENABLE(INUM_UTX0, INT_ON);
EI();
U0DBUF=data[0];
while( i<22&&i>1);
}
}
}
#pragma vector = URX0_VECTOR
__interrupt void URX0_ISR(void){
DI();
INT_SETFLAG(INUM_URX0, 0); //urxif set 0;
P2_1=!P2_1;
RX_IN=U0DBUF;
INT_ENABLE(INUM_URX0, INT_ON);
EI();
}
#pragma vector = UTX0_VECTOR
__interrupt void UTX0_ISR(void){
DI();
INT_SETFLAG(INUM_UTX0,0);
P2_0=!P2_0;
U0DBUF=data[i++];
INT_ENABLE(INUM_UTX0, INT_ON);
EI();
}
void initialUART(){
SET_MAIN_CLOCK_SOURCE(CRYSTAL);
IO_PER_LOC_UART0_AT_PORT0_PIN2345(); //UART0 SELECT
UART_SETUP(0,9600,HIGH_STOP); //High start bit
}
void EI(){
INT_GLOBAL_ENABLE(INT_ON);
}
void DI(){
DISABLE_ALL_INTERRUPTS();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -