SN8P2501查询法定时器T0程序,大家有空看看哪点写的还可以改进!!本人新手

[复制链接]
查看4230 | 回复1 | 2017-8-10 22:59:24 | 显示全部楼层 |阅读模式
/****************************************************************************
--程序名:利用定时器T0应用
--功能:利用定时器T0实现P2.0口的LED灯闪烁
--时间:2017.8.10 18:27
****************************************************************************/
CHIP SN8P2501B
//{{SONIX_CODE_OPTION
        .Code_Option        LVD                LVD_H                ; 2.4V Reset Enable LVD36 bit of PFLAG for 3.6V Low Voltage Indicator
        .Code_Option        Reset_Pin        Reset
        .Code_Option        Watch_Dog        Disable
        .Code_Option        High_Clk        4M_X'tal        ; Crystal/Resonator: 2Mhz~10Mhz
        .Code_Option        Fcpu                #2     ; Fcpu = Fosc/4
        .Code_Option        Security        Disable
        .Code_Option        Noise_Filter        Disable
//}}SONIX_CODE_OPTION
.DATA
        TIME DS 1//定时器溢出次数变量存储               
.CONST
        TIME_COUNT EQU 10//定时器溢出次数一次是50MS
.CODE
        ORG 0000H
        JMP RESET
        ORG 0009H
        JMP START
RESET:  MOV A,#0FFH
        B0MOV P2M,A//设置工作在输出模式
        MOV A,#0FEH//设置P2口的初始值
        B0MOV P2,A
        MOV A,#TIME_COUNT//定时器溢出次数
        MOV TIME,A
        MOV A,#00H//设置定时器分频比为Fcpu/256,并工作在定时模式
        B0MOV T0M,A
        MOV A,#3DH//给定时器赋初始值 定时器T0的周期*(256-T0的初始值)=定时器溢出时间
        B0MOV T0C,A
        B0BCLR INTRQ.4//清楚溢出标志位避免误动作
        B0BSET T0M.7//启动定时器
START:  B0BTS1 INTRQ.4//如果溢出标志位为1则跳过下条指令
        JMP START
        B0BCLR INTRQ.4//清除溢出标志位
        MOV A,#3DH//给定时器赋初始值
        B0MOV T0C,A
        DECMS TIME//定时器溢出次数减一为0则跳过下条指令
        JMP START
        MOV A,#TIME_COUNT//重新赋值定时器溢出次数
        MOV TIME,A
        MOV A,#0FFH//利用异或取反P2口
        XOR P2,A
        MOV A,#0FEH//保留P2.0位数据
        OR P2,A
        JMP START
您需要登录后才可以回帖 登录 | 注册

本版积分规则