⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 16550.h

📁 pcf8584应用实例
💻 H
字号:
//***************************************************************
// Modulname:    $Source: C:/c51_buecher/Teil2/software/Chip_inc/rcs/16550.h $
// User:         $Author: MEBA $
// Version:      $Name: $  $Revision: 1.1 $
// Datum:        $Date: 2001/02/03 09:36:05Z $
// Qualit鋞:     $State: Exp $
//***************************************************************
// Beschreibung: CAN-Baustein SAE81C90.H 
//***************************************************************
// Historie:
//==========
// $Log: 16550.h $
// Revision 1.1  2001/02/03 09:36:05Z  MEBA
// Initial revision
//***************************************************************
#ifndef PC16550_H
  #define PC16550_H
//***************************************************************
// Definitionen ueber C-Compiler / Assembler
//***************************************************************
   #ifdef __C51__
     #if __C51__ < 602
      #error: !! ERROR, this files work only with the C-Compiler !!
      #error: !! Version 602 or higher !!
     #endif
   #endif
   #ifdef __A51__
     #if __A51__ < 601
      #error: !! ERROR, this files work only with the A51-Compiler !!
      #error: !! Version 602 or higher !!
     #endif
   #endif
#include <defines.h>

#ifndef GLOBALS_H
  #include <globals.h>
#endif

// Baudraten Berechnung fuer den PC16550
#ifdef UART16550CLKHZ
	#define _1200_BAUD  (long)UART16550CLKHZ /(16 * 1200)
	#define _2400_BAUD  (long)UART16550CLKHZ /(16 * 2400)
	#define _4800_BAUD  (long)UART16550CLKHZ /(16 * 4800)
	#define _9600_BAUD  (long)UART16550CLKHZ /(16 * 9600)
	#define _19200_BAUD (long)UART16550CLKHZ /(16 * 19200)
#else
   #error: UART16550CLKHZ ist nicht in GLOBALS.h definiert worden.
   #error: Der Wert muss in Hz angegeben werden.
#endif
//***************************************************************
// Definitionen zum Chip
//***************************************************************
struct PC16550UART_DEC {
  union{
   uchar const ucRBR; // Addressbyte 0 RBR = Receive Buffer   Reg.
   uchar ucTHR;	      // Addressbyte 0 THR = Transmit Holding Reg.
   uchar ucDLL;       // Addressbyte 0 DLL = Divisor Latch (LS)
  }By0;

  union{
   uchar ucIER;       // Addressbyte 1 IER = Interrupt Enable Reg.
   uchar ucDLM;       // Addressbyte 1 DLM = Divisor Latch (MS)   
  }By1;

  union{
   uchar const ucIIR; // Addressbyte 2 IIR = Interrupt Ident  Reg.
   uchar ucFCR;       // Addressbyte 2 FCR = FIFO Control     Reg.
  }By2;

  uchar ucLCR;		  // Addressbyte 3 LCR = Line Control     Reg.
  uchar ucMCR;		  // Addressbyte 4 MCR = Modem Control    Reg.
  uchar ucLSR;		  // Addressbyte 5 LSR = Line Status      Reg.
  uchar ucMSR;        // Addressbyte 6 MSR = Modem Status     Reg.
  uchar ucSCR;		  // Addressbyte 7 SCR = Scratch          reg.   
}; 

// Definitionen fuer das Steuerregister MCR
#define  DTR    B00000001  // Signal DTR  setzen / ruecksetzen
#define  RTS    B00000010  // Signal RTS  setzen / ruecksetzen
#define OUT1    B00000100  // Signal OUT1 setzen / ruecksetzen
#define OUT2    B00001000  // Signal OUT2 setzen / ruecksetzen
#define LOOP    B00010000  // Starten des internen UART Tests

// Definitionen fuer das Steuerregister LSR
#define  DR     B00000001  // Signal Data Ready
#define  OE     B00000010  // Signal Overrun Error
#define  PE     B00000100  // Signal Parity Error
#define  FE     B00001000  // Signal Framing Error
#define  BI     B00010000  // Signal Break Interrupt
#define  THRE   B00100000  // Signal Transmitter Holding Register
#define  TEMT   B01000000  // Signal Transmitter Empty
#define  RCVE   B10000000  // Signal Receive FIFO Error

// Definitionen fuer das Steuerregister LCR
#define _5BIT   B00000000  // Definition der Baudrate 
#define _6BIT   B00000001  // Definition der Baudrate 
#define _7BIT   B00000010  // Definition der Baudrate 
#define _8BIT   B00000011  // Definition der Baudrate 

#define _2STOP   B00000100  // Definition der Baudrate 
#define NO_PAR   B00000000  // No Parity
#define ODD_PAR  B00001000  // Odd Parity
#define EV_PAR   B00011000  // Even Parity
#define ST_PAR   B00111000  // Stick Parity
#define SET_SOUT B01000000  // Direktes Setzen des SOUT
#define DLAB     B10000000  // Umschaltung Funktionsweise

#define NO_FIFO  B00000000  // Kein FIFO aktiviert

// Definitionen fuer das Steuerregister IER
#define ERBFI    B00000001  // Enable Received Data avialable
#define ETBEI    B00000010  // Enable Transmitter holding register empty
#define ELSI     B00000100  // Enable Receiver Line status
#define EDSSI    B00001000  // Enable Modem status interrupt
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -