cryosc.asm

来自「8051试验程序 基础教材」· 汇编 代码 · 共 79 行

ASM
79
字号
;-----------------------------------------------------------------------------
; cryosc.ASM
;-----------------------------------------------------------------------------
; Copyright 2005, Copyright (C) 2004 Silicon Laboratories, Inc.
;
; FILE:        cryosc.ASM
; DEVICE:      C8051F00x, C8051F01x
; AUTH:        BW
; DATE:        17 JUN 03
;
; This program provides an example of how to configure the C8051F0xx device
; to operate from an external 18.432MHz crystal attached to the XTAL1 and
; XTAL2 pins.  Also enables Missing Clock Detector.
;
;-----------------------------------------------------------------------------

;-----------------------------------------------------------------------------
; EQUATES
;-----------------------------------------------------------------------------

#include "ioC8051F000.h"
LED         EQU      P1.6        ; LED on target board ('1' is LED ON)

SYSCLK      EQU      18432       ; SYSCLK frequency in kHz

;-----------------------------------------------------------------------------
; VARIABLES
;-----------------------------------------------------------------------------

;-------------------
; STACK

            RSEG STACK_PTR:IDATA
            DS    80h            ; reserve 128 bytes for stack

;-----------------------------------------------------------------------------
; MACRO DEFINITIONS
;-----------------------------------------------------------------------------

;-----------------------------------------------------------------------------
; RESET AND INTERRUPT VECTOR TABLE
;-----------------------------------------------------------------------------

            ASEGN CODE_SEG:CODE,0
            ljmp  Main                    ; RESET vector

;-----------------------------------------------------------------------------
; MAIN PROGRAM CODE
;-----------------------------------------------------------------------------

            RSEG CRYOSC:CODE

Main:
            mov   WDTCN, #0deh            ; disable watchdog timer
            mov   WDTCN, #0adh

            mov   SP, SFB(STACK_PTR)      ; init stack pointer

            mov   OSCXCN, #67h            ; enable external crystal oscillator
                                          ; at 18.432MHz

            clr   A                       ; wait at least 1ms
            djnz  ACC, $                  ;  wait ~512us
            djnz  ACC, $                  ;  wait ~512us

osc_wait:                                 ; poll for XTLVLD-->1
            mov   a, OSCXCN
            jnb   ACC.7, osc_wait

            orl   OSCICN, #08h            ; select external oscillator as
                                          ; system clock source
            orl   OSCICN, #80h            ; enable missing clock detector

            sjmp  $                       ; spin forever

;-----------------------------------------------------------------------------
; End of file.

            END

⌨️ 快捷键说明

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