基于PIC16F84A的体育场计分板代码故障排查咨询
体育场计分板PIC16F84A代码缺失功能分析
需求回顾
需实现双独立计分功能:
- 主队(HOME)、客队(VISIT)分数0-9循环递增,初始0-0
- RA0触发主队加分,RA1触发客队加分
- RB0-RB3输出主队BCD码,RB4-RB7输出客队BCD码(配合7447解码器)
- 推荐逻辑:双独立计数器,客队计数值左移4位后与主队计数值做OR运算输出至PORTB
现有代码缺失/错误部分
现有代码仅实现了单队计分的雏形,完全未满足双队独立计分需求,具体缺失内容如下:
缺少客队独立计数器
现有代码仅定义了单个Counter变量,无法分别存储主队、客队分数。需在CBLOCK中新增客队计数器变量,例如:CBLOCK 0X0C HomeCounter VisitCounter ENDC未配置RA1为输入引脚
初始化时仅设置了RA0为输入(bsf TRISA,RA0),未对RA1做输入配置,需添加:bsf TRISA,RA1缺失RA1按键的检测与处理逻辑
现有代码仅处理了RA0的触发逻辑,完全未实现RA1触发客队加分的功能。需添加与RA0逻辑对应的RA1按键检测、客队计数器递增及循环清零逻辑。BCD码表错误且输出逻辑不符合要求
- 查表标签不匹配:代码中定义的查表段标签为
BOARD,但调用时用的是call TABLE,标签名不一致会导致程序跳转错误; - BCD码值错误:7447解码器需要标准BCD码(0对应0x00,1对应0x01...9对应0x09),但现有
DT指令后的值为1,2,3,4,5,6,7,8,9,0,完全不符合要求; - 输出逻辑错误:未实现“客队计数值左移4位后与主队计数值OR运算”的要求,现有代码直接将单队查表值写入PORTB,无法同时输出两队分数。正确逻辑应为分别获取主队、客队的BCD码,将客队值左移4位后,与主队值做OR运算再写入PORTB。
- 查表标签不匹配:代码中定义的查表段标签为
初始化未覆盖客队计数器
现有代码仅清零了Counter和PORTB,若新增客队计数器,初始化时需同步清零该变量。
内容的提问来源于stack exchange,提问作者DArkWarOP
相关产品推荐
相关产品推荐

