sh4.h
上传用户:qiulin1960
上传日期:2013-10-16
资源大小:2844k
文件大小:3k
源码类别:

Windows CE

开发平台:

Windows_Unix

  1. // Copyright (c) 1999-2000 Microsoft Corporation.  All rights reserved.
  2. /*
  3. SH4 Timer Registers 
  4. */
  5. #define REG16BIT(x) (*(volatile unsigned short *)(x))
  6. // SH4 interrupt controller registers
  7. #define INTC_PRA REG16BIT(0xffd00004) // intr priority level A
  8. #define INTC_PRB REG16BIT(0xffd000c4) // intr priority level B
  9. // SH4 Timer unit registers
  10. #define TMUADDR ((volatile struct TMU_REGS *)0xffd80000)
  11. struct TMU_REGS {
  12. BYTE tocr;             // [00] timer output control (8 bit)
  13. BYTE pad1[3];
  14. BYTE tstr;         // [04] timer start register (8 bit)
  15. BYTE pad2;
  16. DWORD tcor0;         // [08] timer constant 0 (32 bit)
  17. DWORD tcnt0;         // [0c] timer count 0 (32 bit)
  18. WORD tcr0;         // [10] timer control 0 (16 bit)
  19. WORD pad3;
  20. DWORD tcor1;         // [14] timer constant 1 (32 bit)
  21. DWORD tcnt1;         // [18] timer count 1 (32 bit)
  22. WORD tcr1;         // [1c] timer control 1 (16 bit)
  23. WORD pad4;
  24. DWORD tcor2;         // [20] timer constant 2 (32 bit)
  25. DWORD tcnt2;         // [24] timer count 2 (32 bit)
  26. WORD tcr2;         // [28] timer control 2 (16 bit)
  27. WORD pad5;
  28. DWORD tcpr2;         // [2c] input capture 2 (32 bit)
  29. };
  30. #define RTCADDR ((volatile struct RTC_REGS *)0xffc80000)
  31. struct RTC_REGS {
  32.     BYTE    r64cnt;             // [00] 64-Hz Counter        
  33.     BYTE    pad1[3];
  34.     BYTE    rseccnt;            // [04] Second Counter
  35.     BYTE    pad2[3];
  36.     BYTE    rmincnt;            // [08] Minute Counter
  37.     BYTE    pad3[3];
  38.     BYTE    rhrcnt;             // [0c] Hour Counter
  39.     BYTE    pad4[3];
  40.     BYTE    rwkcnt;             // [10] Week Counter
  41.     BYTE    pad5[3];
  42.     BYTE    rdaycnt;            // [14] Date Counter
  43.     BYTE    pad6[3];
  44.     BYTE    rmoncnt;            // [18] Month Counter
  45.     BYTE    pad7[3];
  46.     WORD    ryrcnt;             // [1c] Year Counter
  47.     WORD    pad8;
  48.     BYTE    rsecar;             // [20] Second Counter
  49.     BYTE    pad9[3];
  50.     BYTE    rminar;             // [24] Minute alarm
  51.     BYTE    pad10[3];
  52.     BYTE    rhrar;              // [28] Hour alarm
  53.     BYTE    pad11[3];
  54.     BYTE    rwkar;              // [2c] Day of week alarm
  55.     BYTE    pad12[3];
  56.     BYTE    rdayar;             // [30] Date alarm
  57.     BYTE    pad13[3];
  58.     BYTE    rmonar;             // [34] Month alarm
  59.     BYTE    pad14[3];
  60.     BYTE    rcr1;               // [38] RTC control register 1
  61.     BYTE    pad15[3];
  62.     BYTE    rcr2;               // [3c] RTC control register 2
  63. };
  64. // Bits for TSTR:
  65. #define TMU_START0 0x01
  66. #define TMU_START1 0x02
  67. #define TMU_START2 0x04
  68. // Bits for TCRn:
  69. #define TMUCR_UNF 0x100 // counter underflowed
  70. #define TMUCR_UNIE 0x20 // underflow interrupt enable
  71. #define TMUCR_RISE 0x00 // count on rising edge of clock
  72. #define TMUCR_FALL 0x08 // count on falling edge of clock
  73. #define TMUCR_BOTH 0x10 // count on both edges of clock
  74. #define TMUCR_D4 0x00 // PERIPHERAL clock / 4
  75. #define TMUCR_D16 0x01 // PERIPHERAL clock / 16
  76. #define TMUCR_D64 0x02 // PERIPHERAL clock / 64
  77. #define TMUCR_D256 0x03 // PERIPHERAL clock / 256
  78. #define TMUCR_D1024 0x04    // PERIPHERAL clock / 1024
  79. #define TMUCR_RESVD 0x05    // Reserved (cannot be set)
  80. #define TMUCR_RTC 0x06 // real time clock output (16 kHz)
  81. #define TMUCR_EXT 0x07 // external clock input