单片机中对tl16c754的初始化程序.txt
来自「ti公司的多串口芯片的初始化程序」· 文本 代码 · 共 99 行
TXT
99 行
#define PORTONE 0
#define PORTTWO 1
#define PORTTHREE 2
void Reset_16C754()
{
unsigned int waittime;
DDR4_D42 = 1;
PDR4_P42 = 1;/* INTCEL: enable interrupt */
DDR7_D70 = 1;
PDR7_P70 = 1; /* CLKCEL: divide-by-1 prescaler */
DDR7_D71 = 1;
PDR7_P71 = 1; /*reset*/
for(waittime=0;waittime<20000;waittime++);
PDR7_P71 = 0;
}
void Init_Uart_754(unsigned char portnumber)
{
unsigned long address_var;
if(portnumber == PORTONE)
{
address_var = UARTA_LCR;
*(volatile unsigned char __far*)address_var = 0x80;
address_var = UARTA_DLL;
*(volatile unsigned char __far*)address_var = 0x9c;
address_var = UARTA_DLH;
*(volatile unsigned char __far*)address_var = 0x00;
address_var = UARTA_LCR;
*(volatile unsigned char __far*)address_var = 0xBF;
address_var = UARTA_EFR;
*(volatile unsigned char __far*)address_var = 0x10;
address_var = UARTA_LCR;
*(volatile unsigned char __far*)address_var = 0x00;
address_var = UARTA_MCR;
*(volatile unsigned char __far*)address_var = 0x42;
address_var = UARTA_TLR;
*(volatile unsigned char __far*)address_var = 0x8F;
address_var = UARTA_LCR;
*(volatile unsigned char __far*)address_var = 0x03; // 8,no,1stop bit
address_var = UARTA_FCR;
*(volatile unsigned char __far*)address_var = 0x06; //trigger level 16
address_var = UARTA_FCR;
*(volatile unsigned char __far*)address_var = 0xC1; //trigger level 16
address_var = UARTA_MCR;
*(volatile unsigned char __far*)address_var = 0x08;
address_var = UARTA_IER;
*(volatile unsigned char __far*)address_var = 0x01;
}
else if (portnumber == PORTTWO)
{
address_var = UARTB_LCR;
*(volatile unsigned char __far*)address_var = 0x80;
address_var = UARTB_DLL;
*(volatile unsigned char __far*)address_var = 0x9c;
address_var = UARTB_DLH;
*(volatile unsigned char __far*)address_var = 0x00;
address_var = UARTB_LCR;
*(volatile unsigned char __far*)address_var = 0xBF;
address_var = UARTB_EFR;
*(volatile unsigned char __far*)address_var = 0x10;
address_var = UARTB_LCR;
*(volatile unsigned char __far*)address_var = 0x00;
address_var = UARTB_MCR;
*(volatile unsigned char __far*)address_var = 0x42;
address_var = UARTB_TLR;
*(volatile unsigned char __far*)address_var = 0x1F;
address_var = UARTB_LCR;
*(volatile unsigned char __far*)address_var = 0x03; // 8,no,1stop bit
address_var = UARTB_FCR;
*(volatile unsigned char __far*)address_var = 0x06; //trigger level 16
address_var = UARTB_FCR;
*(volatile unsigned char __far*)address_var = 0xC1; //trigger level 16
address_var = UARTB_MCR;
*(volatile unsigned char __far*)address_var = 0x08;
address_var = UARTB_IER;
*(volatile unsigned char __far*)address_var = 0x01;
}
else if (portnumber == PORTTHREE)
{
address_var = UARTC_LCR;
*(volatile unsigned char __far*)address_var = 0x83;
address_var = UARTC_DLL;
*(volatile unsigned char __far*)address_var = 0x9c;
address_var = UARTC_DLH;
*(volatile unsigned char __far*)address_var = 0x00;
address_var = UARTC_LCR;
*(volatile unsigned char __far*)address_var = 0x03; // 8,no,1stop bit
address_var = UARTC_FCR;
*(volatile unsigned char __far*)address_var = 0xC1; //trigger level 16
address_var = UARTC_IER;
*(volatile unsigned char __far*)address_var = 0x01;
address_var = UARTC_MCR;
*(volatile unsigned char __far*)address_var = 0x08;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?