找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

请问这串代码为什么无法实现8个LED的闪烁,麻烦各位指出一下问题

查看数: 2186 | 评论数: 6 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-11-22 08:01

正文摘要:

#include <REGX51.H> int count0=0,num0=0; int temp=1; unsigned char a[]={0xff,0x00}; void delay() {         int i,j;         f ...

回复

ID:77589 发表于 2022-11-23 14:40
明显这句错了啊num0=~num0;
不应该使用按位取反操作,按位取反操会让num0由0x00变成0xFF,当num0==0xFF时,执行P2=a[num0];就会导致一个致使错误“数组越界”,系统会出现你想不到的现象。
基于你的思路,现有两种改法:
1、删除unsigned char a[]={0xff,0x00};    把P2=a[num0]修改成P2=num0
2、其它地方不变,把num0 =~num0;修改成
num0 = num0 > 0 ? 0 : 1;
ID:308903 发表于 2022-11-23 08:29
i          num0=~num0;             这句,因为前面定义了这个数组  unsigned char a[]={0xff,0x00};,所以这里也要用数组
ID:1052650 发表于 2022-11-22 23:50
XCYYLX 发表于 2022-11-22 20:30
中断有问题,得改一下

好的感谢你
ID:999824 发表于 2022-11-22 20:30
中断有问题,得改一下
ID:1052650 发表于 2022-11-22 16:28

太感谢你了大佬
ID:161164 发表于 2022-11-22 14:53

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表