Microchip
直播中

张琨

8年用户 176经验值
私信 关注
[问答]

ASM文件的追赶灯程序哪里出错了

您好,我最近开始进入编程,我已经建立了一个ASM文件的追赶灯(以下详细说明),然而,MPLAB IDE不拾取任何错误,我觉得有些东西可能遗漏从延迟子程序,我已经编程到代码中的任何建议,可能/可能不会失踪了?文件CaseR.ASM;在旋转模式上闪烁输出(端口B);如果端口A,位0是高电平,则反向。*;*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************PFFTETEON;程序ORG;0;从地址0开始;将端口B设置为输出并初始化。MOVLW B’00000000’;将二进制“00000000”放在工作寄存器BANSEL TrISB中;将所有PORTB注册为输出MOVLW B’0000000’1’;在工作寄存器MOVWF PORTB中放置二进制“0000000’1”;将“0000000 1”从WREG移动到称为PORTB BCF状态的寄存器C;清除运载位以避免“旋转”。1’进入显示;主回路。检查端口A,位0,并通过进位寄存器.mloop向左或向右旋转;重复处理btfss PORTA,0;位测试端口A,如果设置为m1 rlf PORTB,f则跳过;将文件寄存器端口B向左旋转到m2m1:rrf PORTB,f;将文件寄存器端口B向右旋转:;子例程*************************************************************************************************************************************************************************************************************************************************************************************************************delay1dedelay1dedelay1 decf1decfszGE的LED方向XOWF PORTA,0;负载WRGE02H,XOR值与Poto Goto McRoad;结束;

回帖(4)

王焕树

2020-4-27 06:27:50
其中有几个错误。在开始时,您为TRISB选择银行,但是之后您再也不写信给它。然后您不再为PORTB设置银行选择。您所谓的“子例程”根本不是子例程。您正在“在线”运行它,而不是调用它。您有两个短延迟,一个运行,另一个运行。如果您想要获得更长的延迟,则需要第二个延迟来循环回到第一个延迟的开始。而且,在开始延迟之前,您没有向延迟计数变量写入任何内容,所以你只是假设他们将永远是零开始。
举报

王玉宁

2020-4-27 06:33:24
我想我明白你的意思了,所以为了使代码更实用,建议在代码中添加几行代码。另外,当谈到与您要添加的其余代码一起运行的子例程时,还提到要添加的子例程。Clrf.Movlw number_of_times_to_loopMovwf._timeCall loopRigHT?
举报

李维兴

2020-4-27 06:41:15
您没有定义延迟计数变量。将此添加到γ-配置线以下:
举报

王玉宁

2020-4-27 06:49:38
啊哈,我现在就试试看,谢谢你的帮助^ ^
举报

更多回帖

发帖
×
20
完善资料,
赚取积分