📄 单片机中对tl16c754的初始化程序.txt
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -