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

Windows CE

开发平台:

Windows_Unix

  1. // Copyright (c) 1999-2000 Microsoft Corporation.  All rights reserved.
  2. /*
  3. SH3 Timer Registers 
  4. */
  5. #define REG16BIT(x) (*(volatile unsigned short *)(x))
  6. // SH3 interrupt controller registers
  7. #define INTC_PRA REG16BIT(0xfffffee2) // intr priority level A
  8. #define INTC_PRB REG16BIT(0xfffffee4) // intr priority level B
  9. // SH3 Timer unit registers
  10. #define TMUADDR ((volatile struct TMU_REGS *)0xfffffe90)
  11. struct TMU_REGS {
  12. BYTE tocr;             // [00] timer output control (8 bit)
  13. BYTE pad1;
  14. BYTE tstr;         // [02] timer start register (8 bit)
  15. BYTE pad2;
  16. DWORD tcor0;         // [04] timer constant 0 (32 bit)
  17. DWORD tcnt0;         // [08] timer count 0 (32 bit)
  18. WORD tcr0;         // [0c] timer control 0 (16 bit)
  19. WORD pad3;
  20. DWORD tcor1;         // [10] timer constant 1 (32 bit)
  21. DWORD tcnt1;         // [14] timer count 1 (32 bit)
  22. WORD tcr1;         // [18] timer control 1 (16 bit)
  23. WORD pad4;
  24. DWORD tcor2;         // [1c] timer constant 2 (32 bit)
  25. DWORD tcnt2;         // [20] timer count 2 (32 bit)
  26. WORD tcr2;         // [24] timer control 2 (16 bit)
  27. WORD pad5;
  28. DWORD tcpr2;         // [28] input capture 2 (32 bit)
  29. };
  30. #define RTCADDR ((volatile struct RTC_REGS *)0xfffffec0)
  31. struct RTC_REGS {
  32.     BYTE    r64cnt;             // [00] 64-Hz Counter        
  33.     BYTE    pad1;
  34.     BYTE    rseccnt;            // [02] Second Counter
  35.     BYTE    pad2;
  36.     BYTE    rmincnt;            // [04] Minute Counter
  37.     BYTE    pad3;
  38.     BYTE    rhrcnt;             // [06] Hour Counter
  39.     BYTE    pad4;
  40.     BYTE    rwkcnt;             // [08] Week Counter
  41.     BYTE    pad5;
  42.     BYTE    rdaycnt;            // [0a] Date Counter
  43.     BYTE    pad6;
  44.     BYTE    rmoncnt;            // [0c] Month Counter
  45.     BYTE    pad7;
  46.     BYTE    ryrcnt;             // [0e] Year Counter
  47.     BYTE    pad8;
  48.     BYTE    rsecar;             // [10] Second Counter
  49.     BYTE    pad9;
  50.     BYTE    rminar;             // [12] Minute alarm
  51.     BYTE    pad10;
  52.     BYTE    rhrar;              // [14] Hour alarm
  53.     BYTE    pad11;
  54.     BYTE    rwkar;              // [16] Day of week alarm
  55.     BYTE    pad12;
  56.     BYTE    rdayar;             // [18] Date alarm
  57.     BYTE    pad13;
  58.     BYTE    rmonar;             // [1a] Month alarm
  59.     BYTE    pad14;
  60.     BYTE    rcr1;               // [1c] RTC control register 1
  61.     BYTE    pad15;
  62.     BYTE    rcr2;               // [1e] 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_RTC 0x04 // real time clock output (16 kHz)
  79. #define TMUCR_EXT 0x05 // external clock input