一度梦想 发表于 2013-10-10 23:32:43

高手们帮我看看stc89c52单片机定时/计数2用在递增递减程序.那

;------------单元赋值--------------------
        T2CON EQU 0C8H        ;T2CON定时/计数控制寄存器
        T2MOD EQU 0C9H        ;T2MOD控制寄存器
        RCAP2L EQU 0CAH;捕获缓冲寄存器低
        RCAP2H EQU 0CBH;捕获缓冲寄存器高
        TL2 EQU 0CCH ;16位计数储存低位
        TH2 EQU 0CDH ;16位计数储存高位
        TR2 BIT 0C8H.2;启动T2
        TF2 BIT 0C8H.7 ;溢出标志
        ET2 BIT IE.5;中断允许
        EXF2 BIT 0C8H.6        ;外部中断标志
;-------------------------------------------------------
;-----------程序---------------------

        ORG 00H
        SJMP ABC             ;主程序
        ORG 2BH                               ;中断入口
        SJMP T2MAIN                       ;
ABC:
        MOV T2CON,#02H               ;设置16自动重装计数
        MOV T2MOD,#01H               ;设置可递减计数
        MOV P3,0C9H                       ;我刚才检测T2MOD,对不对
        MOV TH2,#0FFH               ;送人计数初始值
        MOV TL2,#0F5H
        MOV RCAP2L,#0F5H       ;自动重装值
        MOV RCAP2H,#0FFH
        SETB EA                               ;开启中断
        SETB ET2                     ;允许T2中断
        CLR P0.0                       ;我刚调试用的
        SETB TR2                       ;启动计数2
SSS:
        MOV P2,TL2                       ;捕获16位计数地位数值
        LCALL YS1S                       ;延时1s
        SJMP SSS                       ;重新捕获
T2MAIN:                                       ;T2中断服务
        CLR TF2                               ;软清零
        MOV A,TH1                       ;判断重新装载数值
        CJNE A,#0FFH,T2MAIN1;判断是递加?还是递减?
        CLR P0.1          ;递减帮p0.1清零
        SJMP T2END
T2MAIN1:
        CLR P0.2          ;递加p0.2清零
T2END:
        RETI                   ;返回中断服务断点开始
YS1S:                                   ;延时1s
       MOV R6,#04H
DL0:
        MOV R5,#0F8H
        DJNZ R5,$
        DJNZ R6,DL0
        NOP
        RET
        END
我都糊涂了,想不通那里错了
页: [1]
查看完整版本: 高手们帮我看看stc89c52单片机定时/计数2用在递增递减程序.那