打印

使用52T2输出2种波形的问题

[复制链接]
1729|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xiexi2001|  楼主 | 2009-2-16 17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ov, se, rc, ce, hm
我写的这个程序是实现两种输出方波的转换.
利用定时器0来查询转换的条件,转换条件是P1.0输入一个负脉冲,当然对脉冲的宽度有一定的要求.程序如下:
    ORG     0000H
    AJMP    MODE1
    ORG    000BH
    AJMP    CTC0
    ORG    002BH
    AJMP    CTC2
    ORG     30H
    T2MOD   EQU  0C9H
    T2CON   EQU  0C8H
    TR2     EQU  T2CON.2
    TF2     EQU  T2CON.7 
    ET2     EQU  IE.5
    RCAP2L  EQU  0CAH
    RCAP2H  EQU  0CBH
    TL2     EQU  0CCH
    TH2     EQU  0CDH
MODE1:    
    CLR     TR2
    SETB    P3.0
    MOV     TMOD,#01H    ;脉宽检测
    MOV     TL0,#0AFH
    MOV     TH0,#3CH
    SETB     EA
    SETB     ET0
CE1:
    MOV     B,0
LOOP:    JB    P1.0,LOOP
    SETB     TR0
LOOP2:    JNB     P1.0,LOOP2
    CLR     TR0
    MOV     A,B    ;条件判断,脉宽在50ms到3s之间时候转换模式
    CLR     C
    SUBB     A,#01H
    JC     CE1
    CLR     C
    MOV     A,B
    SUBB     A,#3CH
    JNC     CE1
MODE3:
    MOV     T2MOD,#00000001B
    MOV     T2CON,#10001100B 
    MOV     RCAP2H,#0ECH 
    MOV     RCAP2L,#017H     ;定时器T2,控制输出方波
    SETB     EA
    SETB     ET2
    SETB     TR2
    MOV    TMOD,#01H
    MOV     TL0,#0AFH    ;脉宽检测
    MOV     TH0,#3CH
    SETB     ET0
CE3:
    MOV     B,0
LOOP5:
    JB    P1.0,LOOP5
    SETB     TR0
LOOP6:    JNB     P1.0,LOOP6
    CLR     TR0
    MOV     A,B    ;条件判断,脉宽在50ms到3s之间时候转换模式
    CLR     C
    SUBB     A,#01H
    JC    CE3
    CLR     C
    MOV     A,B
    SUBB     A,#3CH
    JNC     CE3
    LJMP     MODE1
CTC2:
    CLR     EA    ;定时器1中断服务程序,控制输出方波。
    CPL    P3.0
    MOV    TL2,#78H    ;输出占空比为50%
    MOV     TH2,#0ECH
    SETB     EA
    RETI
CTC0:
    CLR     EA    
    INC     B    ;计时器扩展
    MOV     TL0,#0AFH
    MOV     TH0,#3CH
    SETB     EA
        RETI
    END
理论上好象没错,但是不能实现我想要的功能.
各位大大,帮忙看看,谢谢

相关帖子

沙发
xiexi2001|  楼主 | 2009-2-16 17:11 | 只看该作者

补充一下

其中关于T2的T2CON和T2MOD的设定比较不熟悉,今天刚看的,可能有问题
用的是自动重载,t1被我用到其他地方去了.呵呵

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

34

帖子

0

粉丝