帮忙看看这个程序

[复制链接]
2579|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
您需要登录后才可以回帖 登录 | 注册

本版积分规则

73

主题

294

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部