博客首页 | 排行榜 |

萤火虫的博客

沒有月亮,我們可以看星光;失去星光,還有溫暖的眼光;抱著希望,等待就少點感傷;彷彿不覺

个人档案
博文分类
在ramtron vrs3074上写汇编程序(22)  2010-03-26 20:30

看门狗
一般的MCU都有看门狗模块,用于在系统异常出错时,复位MCU.VRS3074也一样,提供看门狗模块,它是由对系统预分频的14位定时器
组成.只有一个寄存器用来控制看门狗:WDTCFG,它包含了分频设置,操作模式以及复位设置.下面的例子是一个运行在系统内部时钟
40M情况下的演示,它每隔40MS复位一下看门狗.
    Include
x db 0
CPTR db 0
start:
    mov PERIPHEN1 ,#01h ;Enable Timer 0
    mov P1PINCFG , #00h ;Config port 1 as output
    mov a,DEVCLKCFG1
    anl a,#0F0h ;Force Maximum clock speed
    mov a,PERIPHEN2
    orl a,#04h
    mov P1 , #0FFh ;Set P1 to output 0xFF
    lcall delay10
    mov WDTCFG , #62h ;Configure and Reset the Watchdog Timer
    mov WDTCFG , #63h ;Bit 7:4 = WDTPERIOD : Define the timeout
    mov P1 , #00h ;Clear P1
LOOP1:
    lcall delay40
    mov WDTCFG , #62h ;Reset the Watchdog Timer
    mov WDTCFG , #63h
    ajmp LOOP1
delay40:
    mov x , PERIPHEN1 ;Load PERIPHEN1 register
    mov a, x
    orl a,#01h ;Enable Timer 0
    mov PERIPHEN1 , x;
    mov r0 , 40;
LOOP2:
    mov TH0 ,#63h ;Timer 0 Reload value for 1MS at 40MHZ
    mov TL0 , #0C0h
    mov T0T1CLKCFG , #00h ;No prescaler for Timer 0 clock
    mov T0CON , #04h ;Start Timer0 Count-up
LOOP3:
    mov x,T0CON;
    mov a,x
    anl a,#80h
    mov x,a
    jz LOOP3
    mov T0CON , #00h ;Stop Timer 0
    djnz r0,LOOP2
    mov x , PERIPHEN1; ;Load PERIPHEN1 register
    mov a, x
    anl a,#0FEh ;Disable Timer 0
    mov x,a
    mov PERIPHEN1 , x;
    ret
delay10:
    mov r0,10
LOOP4:
    lcall delay
    djnz r0,LOOP4
    ret
delay:
                MOV CPTR,#1
                MOV A,PERIPHEN1 ;LOAD PERIPHEN1 REG
                ORL A,#00000001B ;ENABLE TIMER 0
                MOV PERIPHEN1,A
DELAY1MSLP:
                MOV TH0,#063H ; 6TIMER0 RELOAD VALUE FOR 1MS AT 40MHZ
                MOV TL0,#0C0H
                MOV T0T1CLKCFG,#00H ;NO PRESCALER FOR TIMER 0 CLOCK
                MOV T0CON,#00000100B ;START TIMER 0, COUNT UP
DWAITOVT0:
                MOV A,T0CON ;READ TIMER 0 CONTROL, WAIT FOR OVERFLOW
                ANL A,#080H ;ISOLATE TIMER OVERFLOW FLAG
                JZ DWAITOVT0 ;LOOP AS LONG AS TIMER 0 DONT OVERFLOW
                MOV T0CON,#00H ;STOP TIMER 0
                DJNZ CPTR,DELAY1MSLP ;
                MOV A,PERIPHEN1 ;LOAD PERIPHEN1 REG
                ANL A,#11111110B ;DISABLE TIMER 0
                MOV PERIPHEN1,A
                RET

至此,对VRS3074MCU所提供的模块,进行汇编的分析文章基本收尾,遗憾的是没有在实际硬件上进行验证,只是理论分析,希望以后有机会
尝试验证.               

类别:mcu |
上一篇:FM1105在异常事件记录中的应用 | 下一篇:在ramtron vrs3074上写汇编程序(21)
以下网友评论只代表其个人观点,不代表本网站的观点或立场