;-----------------------------------------------------
.include "s3f8S19.reg"
;***************************************************
;以下为程序运行所用变量定义
;----------------------------------
;注意: 程序中用到的所有RAM变量均定义在第1页中(P1: 00H--080H)
;因此,操作变量时,必须切换页面到PP=11H
;程序中所有IO操作均是在BANK1中操作,因此常规页面设置为P1-SB1
;切换到其它页面或SB0时,返回时必须切换到P1-SB1,以免操作出错
;------------------------------------------------------
TMR_CNT_L EQU 00H
TMR_CNT_H EQU 01H
;-----------------------------------------------------
ORG 0000H
JP RESET
;----------------------------------------------------
;----------------
ORG 003CH
DB 0FFH
DB 0FFH
DB 0FFH
DB 01111110B ;内部4MHZ
;----------------
ORG 0040H
;----------------------------------------------
ORG 00D4H
.VECTOR $,INT_TMR0
;-----------------------------------------------------
ORG 0100H
RESET:
DI
;=============
LD CLKCON,#00011000B ;SET NO DIV FCLK
LD OSCCON,#00000100B ;ONLY MAIN OSC WORK
LD SPH,#00H ;设置栈指针
LD SPL,#0FFH
SRP #0C0H ;设置R0工作寄存器初始地址
;==============
;注意: 8S19芯片所有的有关IO端口的操作寄存器都在BANK1区
SB1
LD P4CONL,#00000011B ;SET P4.0 作为推挽输出模式,驱动LED显示
AND PNE4,#0FEH
OR P2CONL,#11000000B ;SET P2.3 作为推挽输出,驱动4KHZ蜂鸣器
;==============
LD PP,#11H ;本程序中所有RAM变量定义均位于PAGE 1空间,只对P1进行操作
;==============
LD R0,#00H
CLR_RAM:
CLR @R0
INC R0
CP R0,#70H
JR ULE,CLR_RAM
;-------------------------
SB0
OR IMR,#04H
LD T0PS,#00000010B ;4分频,注意:T0PS分频器最大值是12,超过12则无效
LD T0DATAH,#00H
LD T0DATAL,#125
LD T0CON,#00111000B ;开T0定时中断,开始计时
EI
MAIN:
LD BTCON,#02H
CP TMR_CNT_H,#20
JR ULT,MAIN
CLR TMR_CNT_H
CLR TMR_CNT_L
SB1
XOR P4,#01H ;0.5S取反一次LED显示
LD BTCON,#02H
JR MAIN
;---------------------------------------------
INT_TMR0:
SB0
TM T0CON,#02H
JR Z,INT_TMR0_BACK
AND T0CON,#11111101B
OR T0CON,#20H
SB1
XOR P2,#08H ;125US,取反一次蜂鸣器输出
INC TMR_CNT_L
CP TMR_CNT_L,#200
JR ULT,INT_TMR0_BACK
CLR TMR_CNT_L
INC TMR_CNT_H
INT_TMR0_BACK:
IRET
;----------------------------------------------------------
.END
|
相关备注: |
无 |
|