📄 comin.c
字号:
#include "LPC210x.h"
#include "com.h"
#include "def.h"
UARTMODE myuart0set;
volatile unsigned char com_busy_bit=0;
extern unsigned char combuf[COMBUF];
extern unsigned short comnumber,printbufprint;
extern volatile unsigned int myintenable;//=0x00000000; //copy VICINTENABLE
void sendonebyteuart0(unsigned char dat)
{
U0THR=dat;
while((U0LSR&0x40)==0);
}
void sendoneworduart0(unsigned short dat)
{
unsigned char temp1,temp2;
temp1=0x00ff&dat;
temp2=dat>>8;
U0THR=temp2;
while((U0LSR&0x40)==0);
U0THR=temp1;
while((U0LSR&0x40)==0);
}
void __irq IRQ_UART0(void)
{
unsigned char i=0,j=0;
switch(U0IIR&0x0f){
case 0x04: if(comnumber<(COMBUF-COMBUFBUTTOM_100)){
for (i=0;i<14;i++){ combuf[comnumber]=U0RBR;
comnumber++;}
}
else { for (i=0;i<14;i++) j=U0RBR;}
break; //fifo int
case 0x0c : while(U0LSR&0x01){
if(comnumber<(COMBUF-COMBUFBUTTOM_100))
{ combuf[comnumber]=U0RBR;
comnumber++;}
else j=U0RBR;
}
break; //cti int
default : break;
}
if(comnumber>(COMBUF-COMBUFBUTTOM_200)){
com_busy_bit=1;}
else {
com_busy_bit=0;}
VICVectAddr = 0x0000; // 中断处理结束
}
void InitUart0(void)
{
unsigned int bak;
myuart0set.datab=8;
myuart0set.stopb=1;
////////////////////////*******************
myuart0set.parity=0;
//myuart0set.baud=19200;
////////////////////////////***********
U0LCR = 0x80; // DLAB位置1
bak = (Fpclk>>4)/myuart0set.baud;
U0DLM = (bak>>8);
U0DLL = (bak&0xff);
bak = myuart0set.datab-5; // 设置字长度
if(2==myuart0set.stopb) bak |= 0x04; // 判断是否为2位停止位
if(0!=myuart0set.parity) {myuart0set.parity = myuart0set.parity-1; bak |= 0x08;}
bak |= myuart0set.parity<<4; // 设置奇偶校验
U0LCR = bak;
//U0FCR=0x81; //使能FIFO,触发点为8字节(bit7,bit6 11 14dot 10 8dot 01 4dot 00 1 dot
U0FCR=0xc1 ; //使能FIFO,触发点为14字节
//U1IER=0x01|0x08; //fifo int cti int mode int
U0IER=0x01; //fifo int mode int
VICIntSelect = 0x00000000; // 设置所有通道为IRQ中断
VICVectCntl0 = 0x26; // UART0中断通道分配到IRQ slot 0,即优先级最高
VICVectAddr0 = (int)IRQ_UART0; // 设置UART0向量地址
myintenable=myintenable|0x00000040;
VICIntEnable= myintenable;
//VICIntEnable =0x00000080; // 使能UART1中断
}
/// CTS=1 MARK=-3--- -15 V IS BUSY
// CTS=0 SPACE=+3---+15 V IS NO BUSY
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -