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

📄 stddefs.h

📁 fine over a ranfa of comter
💻 H
字号:
/* Set cpu specific attributes in this file */

#define    ATMEGA128    100
#define    ATMEGA163     90
#define    AT90S8515     70
#define    AT90S4434     60
#define    AT90S4433     50
#define    AT90S2313     20

// Change this line to set the device type   <*********** USER
//  See choices above.
#define DEVICE_NAME  ATMEGA163
// Define crystal frequency as 10 x MHz, i.e. 7.37 = 73, etc.  <********** USER
#define CPU_XTL  80
// Define RUN LED port / pin    <********** USER
#define RUNLED_PORT  PORTD
#define RUNLED_BIT   5
#define RUNLED_ON()    sbi(RUNLED_PORT, RUNLED_BIT)
#define RUNLED_OFF()   cbi(RUNLED_PORT, RUNLED_BIT)
#define TESTPIN_PORT PORTB
#define TESTPIN_BIT  1
#define TESTPIN_ON()   sbi(TESTPIN_PORT, TESTPIN_BIT)
#define TESTPIN_OFF()  cbi(TESTPIN_PORT, TESTPIN_BIT)

/* Maps GCC-AVR  variables to standard data types  */

typedef unsigned char  BOOLEAN;
typedef unsigned char  CHARU;   /* Unsigned  8 bit quantity  */
typedef signed char    CHARS;   /* Signed    8 bit quantity  */
typedef unsigned int   INT16U;  /* Unsigned 16 bit quantity  */
typedef int            INT16S;  /* Signed   16 bit quantity   */
typedef unsigned long  INT32U;  /* Unsigned 32 bit quantity  */
typedef long           INT32S;  /* Signed   32 bit quantity  */
typedef float          FP32;    /* Single precision floating point  */
typedef double         FP64;    /* Double precision floating point  */

// Function prototypes
void run_led(INT16U, INT16U);
void test_pin(void);
void msleep(INT16U ms);
void putBCD(INT16S X, CHARU length, CHARU TrailingSpace);
//void putchar(CHARU c);
void putstr(CHARU *s);
//CHARU bit_num(CHARU x);
//CHARU subt_rollover(CHARU x, CHARU y);
void print_hexbyte(unsigned char i);


#define ONETENTH_MS  10*(1570/CPU_XTL) 
#define CRLF()  putchar(13); putchar(10)

/* Macros to Standardize register names amongst various devices 
   This table is only partially complete - I add items as
   required.  The Device names listed cover most, but not all AVR variants.
   Use only the listed names */
   
#if DEVICE_NAME == ATMEGA128
   #define UART_BAUD_REG        UBRR0L
   #define UART_BAUD_REG_H      UBRR0H
   #define UART_CONTROL_REG     UCSR0B
   #define UART_STATUS_REG      UCSR0A   
   #define UART_RCV_INT_VECTOR  SIG_UART0_RECV
   #define UART_REG_EMPTY_INT_VECTOR  SIG_UART0_DATA
   #define UART_DATA_REG        UDR0
#elif DEVICE_NAME == ATMEGA163
   #define UART_BAUD_REG        UBRR
   #define UART_CONTROL_REG     UCSRB
   #define UART_STATUS_REG      UCSRA   
   #define UART_RCV_INT_VECTOR  SIG_UART_RECV
   #define UART_REG_EMPTY_INT_VECTOR  SIG_UART_DATA   
   #define UART_DATA_REG        UDR
#elif DEVICE_NAME == AT90S2313
   #define UART_BAUD_REG        UBRR
   #define UART_CONTROL_REG     UCR
   #define UART_STATUS_REG      USR 
   #define UART_RCV_INT_VECTOR  SIG_UART_RECV
   #define UART_REG_EMPTY_INT_VECTOR  SIG_UART_DATA   
   #define UART_DATA_REG        UDR
#elif DEVICE_NAME == AT90S4433
   #define UART_BAUD_REG        UBRRL
   #define UART_CONTROL_REG     UCSRB
   #define UART_STATUS_REG      UCSRA 
   #define UART_RCV_INT_VECTOR  SIG_UART_RECV
   #define UART_REG_EMPTY_INT_VECTOR  SIG_UART_DATA   
   #define UART_DATA_REG        UDR
#elif DEVICE_NAME == AT90S4434
   #define UART_BAUD_REG        UBRR
   #define UART_CONTROL_REG     UCR
   #define UART_STATUS_REG      USR 
   #define UART_RCV_INT_VECTOR  SIG_UART_RECV
   #define UART_REG_EMPTY_INT_VECTOR  SIG_UART_DATA   
   #define UART_DATA_REG        UDR      
#elif DEVICE_NAME == AT90S8515
   #define UART_BAUD_REG        UBRR
   #define UART_CONTROL_REG     UCR
   #define UART_STATUS_REG      USR 
   #define UART_RCV_INT_VECTOR  SIG_UART_RECV
   #define UART_REG_EMPTY_INT_VECTOR  SIG_UART_DATA   
   #define UART_DATA_REG        UDR   
#else
   // Defaults to AT90S2313
   #define UART_BAUD_REG        UBRR
   #define UART_CONTROL_REG     UCR
   #define UART_STATUS_REG      USR 
   #define UART_RCV_INT_VECTOR  SIG_UART_RECV
   #define UART_REG_EMPTY_INT_VECTOR  SIG_UART_DATA   
   #define UART_DATA_REG        UDR   
#endif 

typedef enum 
    {
    #if   CPU_XTL == 160
       BAUD115K = 8, BAUD76K = 12, BAUD57K = 16,
    	BAUD38K = 25, BAUD19K = 51, BAUD14K = 68,
    	BAUD9600 = 103, BAUD4800 = 207, BAUD2400 = 416, 
    #elif CPU_XTL == 147
       BAUD115K = 7, BAUD76K = 11, BAUD57K = 15,
    	BAUD38K = 23, BAUD19K = 47, BAUD14K = 63,
    	BAUD9600 = 95, BAUD4800 = 191, BAUD2400 = 383, 
    #elif CPU_XTL == 80
       BAUD115K = 3, BAUD76K = 6, BAUD57K = 8,
    	BAUD38K = 12, BAUD19K = 25, BAUD14K = 34,
    	BAUD9600 = 51, BAUD4800 = 103, BAUD2400 = 207, 
    	BAUD1200 = 414, BAUD600 = 818, BAUD300 = 1636
    #elif CPU_XTL == 73
       BAUD115K = 3, BAUD76K = 5, BAUD57K = 7,
       BAUD38K = 11, BAUD19K = 23, BAUD14K = 31,
    	BAUD9600 = 47, BAUD4800 = 95, BAUD2400 = 191
    #elif CPU_XTL == 40
       BAUD115K = 1, BAUD76K = 2, BAUD57K = 3,
       BAUD38K = 6, BAUD19K = 12, BAUD14K = 16,
    	BAUD9600 = 25, BAUD4800 = 51, BAUD2400 = 103  
    #endif
    } BaudRate;

void setbaud(BaudRate);




⌨️ 快捷键说明

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