打印

帮忙看看这个程序

[复制链接]
1908|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
西门闩|  楼主 | 2010-4-9 16:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我这个程序是RB1-4口有时会输入高电平,要求是,当任一个口输入高电平后,RC1口要输出高电平驱动继电器工作,,一旦没有高电平输入,测RC口也无输出,但是我想了很久,都没有想到怎么来解决这个问题。
我在RB口任一端输入高电平,然后去掉高电平,但是输出还是高电平,求大家帮手看看。
多谢了!
程序如下:
MAIN
BTFSS PORTB,1 ;再次测试B1口的数据,是否有高电平读取
GOTO PB1 ;去执行定时的子程序
BTFSS PORTB,2 ;再次测试B2口的数据,是否有高电平读取
GOTO PB2 ;去执行定时的子程序
BTFSS PORTB,3 ;再次测试B3口的数据,是否有高电平读取
GOTO PB3 ;去执行定时的子程序
BTFSS PORTB,4 ;测试B4口的数据,是否有高电平
GOTO PB4 ;去执行定时的子程序
GOTO BAT ;
PB1
CALL DELAY ;延时确认
BTFSC PORTB,1 ;测试B1口的数据,是否有高电平
GOTO MAIN ;误判,返回重新检测
BSF PORTC,1
BTFSC PORTB,1
GOTO LR1
BSF PORTC,1
GOTO PB1
LR1
BCF PORTC,1
GOTO MAIN


沙发
CHJ76| | 2010-4-10 20:33 | 只看该作者
这程序也太啰嗦了。
取一下RB的值,做一下与运算,再判断一下是否非零。

使用特权

评论回复
板凳
Light_David| | 2010-4-18 20:46 | 只看该作者
MAIN
MOVF  PORTB,W
ANDLW 0XF0
SKPZ
GOTO $+3
BCF PORTC,1   ;RB0-3=0/RC1=0
GOTO MAIN
BSF PORTC,1   ;RB0-3=0任何一个为1/RC1=H

GOTO MAIN
这样就OK了吧

使用特权

评论回复
地板
Light_David| | 2010-4-18 20:48 | 只看该作者
:L与错了,更正
MAIN
MOVF  PORTB,W
ANDLW 0FH:
SKPZ
GOTO $+3
BCF PORTC,1   ;RB0-3=0/RC1=0
GOTO MAIN
BSF PORTC,1   ;RB0-3=0任何一个为1/RC1=H
GOTO MAIN

使用特权

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

本版积分规则

71

主题

288

帖子

1

粉丝