一个简单的S3F8S19采用TMR0驱动蜂鸣器和LED定时指示的例程
文章来源: 本站原创   更新时间: 2014-06-23
;-----------------------------------------------------
.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

相关备注:
 
三星单片机开发网首页