Google 網上論壇首頁
說明 | 登入
徵文 討論的留言
您要留言的群組是 Usenet 群組。在此群組留言,網際網路上的任何使用者將可以看到您的電郵地址。
您的回覆郵件尚未寄出。
您已成功留言
燕南  
檢視個人資料
 更多選項 7月22日, 上午12時12分
寄件者: 燕南 <ezfo...@gmail.com>
日期: Mon, 21 Jul 2008 09:12:12 -0700 (PDT)
當地時間: 2008年7月22日(星期二) 上午12時12分
主旨: Re: 徵文
Timer1 以 Nxp LPC2210 Timer1為例

\ defer.f
---------------------------------------------------------------
        defer p!        ' !   is p!     \ 當I/O 非 memory MAP or 模擬晶片動作時 修改
        defer p@        ' @   is p@     \ 當I/O 非 memory MAP or 模擬晶片動作時 修改

\ VIC_Nxp2210.f
-----------------------------------------------------------
        0xFFFFF000 constant VICIRQStatus
        0xFFFFF004 constant VICFIQStatus
        0xFFFFF008 constant VICRawIntr
        0xFFFFF00C constant VICIntSelect
        0xFFFFF010 constant VICIntEnable
        0xFFFFF014 constant VICIntEnClr
        0xFFFFF018 constant VICSoftInt
        0xFFFFF01C constant VICSoftIntClr
        0xFFFFF020 constant VICProtection
        0xFFFFF030 constant VICVectAddr
        0xFFFFF034 constant VICDefVectAddr
        0xFFFFF100 constant VICVectAddr0
        0xFFFFF104 constant VICVectAddr1
        0xFFFFF108 constant VICVectAddr2
        0xFFFFF10C constant VICVectAddr3
        0xFFFFF110 constant VICVectAddr4
        0xFFFFF114 constant VICVectAddr5
        0xFFFFF118 constant VICVectAddr6
        0xFFFFF11C constant VICVectAddr7
        0xFFFFF120 constant VICVectAddr8
        0xFFFFF128 constant VICVectAddr10
        0xFFFFF12C constant VICVectAddr11
        0xFFFFF130 constant VICVectAddr12
        0xFFFFF134 constant VICVectAddr13
        0xFFFFF138 constant VICVectAddr14
        0xFFFFF13C constant VICVectAddr15
        0xFFFFF200 constant VICVectCntl0
        0xFFFFF204 constant VICVectCntl1
        0xFFFFF208 constant VICVectCntl2
        0xFFFFF20C constant VICVectCntl3
        0xFFFFF210 constant VICVectCntl4
        0xFFFFF214 constant VICVectCntl5
        0xFFFFF218 constant VICVectCntl6
        0xFFFFF21C constant VICVectCntl7
        0xFFFFF220 constant VICVectCntl8
        0xFFFFF224 constant VICVectCntl9
        0xFFFFF228 constant VICVectCntl10
        0xFFFFF22C constant VICVectCntl11
        0xFFFFF230 constant VICVectCntl12
        0xFFFFF234 constant VICVectCntl13
        0xFFFFF23C constant VICVectCntl15

        0x1             constant VIC_Mask_WDT
        0x4             constant VIC_Mask_ICERx
        0x8             constant VIC_Mask_ICETx
        0x10            constant VIC_Mask_TIMER0
        0x20            constant VIC_Mask_TIMER1
        0x40            constant VIC_Mask_UART0
        0x80            constant VIC_Mask_UART1
        0x100   constant VIC_Mask_PWM
        0x200   constant VIC_Mask_SPI0
        0x400   constant VIC_Mask_SPI1
        0x800   constant VIC_Mask_SSP
        0x1000  constant VIC_Mask_PLL
        0x2000  constant VIC_Mask_RTC
        0x4000  constant VIC_Mask_EINT0
        0x8000  constant VIC_Mask_EINT1
        0x10000 constant VIC_Mask_EINT2
        0x20000 constant VIC_Mask_EINT3
        0x40000 constant VIC_Mask_ADC

        0x0      constant EnableFIQ
        0x20 constant EnableIRQ

        EnableIRQ 0 or constant VIC_Hex_WDT
        EnableIRQ 2 or constant VIC_Hex_ICERX
        EnableIRQ 3 or constant VIC_Hex_ICETX
        EnableIRQ 4 or constant VIC_Hex_TIMER0
        EnableIRQ 5 or constant VIC_Hex_TIMER1
        EnableIRQ 6 or constant VIC_Hex_UART0
        EnableIRQ 7 or constant VIC_Hex_UART1
        EnableIRQ 8 or constant VIC_Hex_PWM
        EnableIRQ 9 or constant VIC_Hex_SPI0
        EnableIRQ 10 or constant  VIC_Hex_SPI1
        EnableIRQ 11 or constant VIC_Hex_SSP
        EnableIRQ 12 or constant VIC_Hex_PLL
        EnableIRQ 13 or constant VIC_Hex_RTC
        EnableIRQ 14 or constant VIC_Hex_EINT0
        EnableIRQ 15 or constant VIC_Hex_EINT1
        EnableIRQ 16 or constant VIC_Hex_EINT2
        EnableIRQ 17 or constant VIC_Hex_EINT3
        EnableIRQ 18 or constant VIC_Hex_ADC

\ Timer1_Nxp2210.f
-----------------------------------------------------------
        0xE0008000      constant T1IR
        0xE0008004      constant T1TCR
        0xE0008008      constant T1TC
        0xE000800C      constant T1PR
        0xE0008010      constant T1PC
        0xE0008014      constant T1MCR
        0xE0008018      constant T1MR0
        0xE000801C      constant T1MR1
        0xE0008020      constant T1MR2
        0xE0008024      constant T1MR3
        0xE0008028      constant T1CCR
        0xE000802C      constant T1CR0
        0xE0008030      constant T1CR1
        0xE0008034      constant T1CR2
        0xE0008038      constant T1CR3
        0xE000803C      constant T1EMR

\ Set_Timer1_Nxp2210.f
---------------------------------------------------------
: Set_Timer1( time --- )
        0x0 T1TCR P!
        0x0     T1TC    P!
        0x2 T1PR        p!
        0x0 T1PC        p!
                  T1MR0 p!    \ (PCLK/Sec)+1
        0x5 T1MCR p!
        0x01 T1TCR p!
        ;

: Set_VIC ( --- )
        0x0     VICIntSelect p!
        VIC_Mask_TIMER1 VICIntEnable p!
        VIC_Hex_TIMER1 VICVectCntl0 p!
        Timer1_ISR VICVectAddr0 p!
        ;

\ Timer1_ISR_Nxp2210.f
: Timer1_ISR ( --- )
        \ Timer1程式處理_begin

        \ Timer1程式處理_end
        0x1 T1IR p!
        0xFF VICVectAddr p!
        ;

\ demo.f
        \ fload defer.f
        \ fload VIC_Nxp2210.f
        \ fload Timer1_Nxp2210.f
        \ fload Set_Timer1_Nxp2210.f
        \ fload Timer1_ISR_Nxp2210.f
: demo ( --- )
        12000000 1000 / + 1  Set_Timer1         \ Timer1 to 1ms in PCLK=12MHz
        Set_VIC
        ;


    回覆作者    轉寄  
您必須先登入才能張貼訊息。
若要張貼訊息,您必須先加入此群組
請在留言之前更新您訂閱設定網頁上的暱稱。
您沒有留言所需的權限。

建立群組 - Google 網上論壇 - Google 首頁 - 服務條款 - 隱私權政策
©2008 Google