找回密码
 立即注册
楼主: 电子DIY小家

冲哥32位8051视频教程疑问解答贴

 火.. [复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:408
  • 最近打卡:2025-06-27 08:27:03

16

主题

137

回帖

1116

积分

金牌会员

积分
1116
发表于 2024-1-31 21:51:26 | 显示全部楼层
请教冲哥一个问题,我在做《第十二集:计数器的使用》的时候,用的计数器1,程序就是按照给的例子,很奇怪,下载运行后P60那个灯就一直闪。找不出原因来,怀疑硬件有问题。于是,改用计数器0,TMOD有0x40改成0x04,后面改TH0、TL0、ET0、TR0,包括最后中断号由3改1,这个就没有问题,按T0按键就可以控制灯亮或灭。但程序一改为T1,灯就不停地闪,这时还没按按键,怎么可能闪呢?是否硬件故障?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:408
  • 最近打卡:2025-06-27 08:27:03

16

主题

137

回帖

1116

积分

金牌会员

积分
1116
发表于 2024-1-31 21:57:38 | 显示全部楼层
本帖最后由 pursuing 于 2024-1-31 22:47 编辑

我用的是STC8H的实验箱,之前的实验也都可以正常完成,程序也很简单,就这个计时器T1有问题。我重新焊了焊按键引脚,没用,把TL1=0xff; 改为0xf0,灯闪的频率降低了,说明计数器也起作用了。但没有按键按下,为什么一直在闪呢?
我又运行了官方的《04-利用T0,T1做外部计数器》实验,也是发现左边数码管T0计数正常,但T1对应的数码管一直从0闪到200多,然后就归0,重新开始。

想到会不会是线路上有什么影响,我查原理图,P3.5还是红外遥控接收的OUT,运行官方《29-红外遥控接收程序(NEC码)-数码管显示》实验,没有问题。望高手解答,谢谢!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:472
  • 最近打卡:2025-06-27 00:02:58

14

主题

54

回帖

1578

积分

金牌会员

积分
1578
发表于 2024-2-1 12:31:49 | 显示全部楼层
没有实验箱,请问下能用Proteus 8来仿真吗?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:408
  • 最近打卡:2025-06-27 08:27:03

16

主题

137

回帖

1116

积分

金牌会员

积分
1116
发表于 2024-2-1 13:27:37 | 显示全部楼层
本帖最后由 pursuing 于 2024-2-5 22:36 编辑

经过排查,P3.5和红外接收管共用一个引脚,进一步排查发现是显示器的红外探测功能影响了计数。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:475
  • 最近打卡:2025-06-28 13:51:19

24

主题

109

回帖

388

积分

中级会员

积分
388
发表于 2024-2-13 16:43:51 | 显示全部楼层
20集后特别是要查手册就看得吃力,拿到手册后就怎么知道要查特定寄存器,期望冲哥出一期视频讲解一下
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:475
  • 最近打卡:2025-06-28 13:51:19

24

主题

109

回帖

388

积分

中级会员

积分
388
发表于 2024-2-16 00:02:23 | 显示全部楼层
I2总线写函数void write_byte(uchar date) //写入一个字节到I2C总线
{
        uchar i,temp;
        temp=date;
        for(i=0;i<8;i++)
        {
                temp=temp<<1;
                SCL=0;
                delay();
                SDA=CY;
                delay();
                SCL=1;
                delay();
        }
        SCL=0;
        delay();
        SDA=1;
        delay();
}


请教一下temp=temp<<1;这句什么意思?

点评

这个是左移符号,作用是将数据向左移动一位,空余补0。 举个例子,假如现在temp等于二进制10001011,进行左移后会变成00010110。 结合例子中的cy位,意思是最高位(左侧)被挤出去的位就是进位。 还是上面的例子,因  详情 回复 发表于 2024-2-16 00:49
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:508
  • 最近打卡:2025-06-28 10:05:05
已绑定手机
已实名认证

113

主题

2423

回帖

6157

积分

版主

积分
6157
发表于 2024-2-16 00:49:12 | 显示全部楼层
垂柳*** 发表于 2024-2-16 00:02
I2总线写函数void write_byte(uchar date) //写入一个字节到I2C总线
{
        uchar i,temp;

这个是左移符号,作用是将数据向左移动一位,空余补0。
举个例子,假如现在temp等于二进制10001011,进行左移后会变成00010110。
结合例子中的cy位,意思是最高位(左侧)被挤出去的位就是进位。
还是上面的例子,因为被挤出去了一个1,所以算作进位,cy就为1了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:475
  • 最近打卡:2025-06-28 13:51:19

24

主题

109

回帖

388

积分

中级会员

积分
388
发表于 2024-2-16 08:46:00 | 显示全部楼层
这个是左移符号,作用是将数据向左移动一位,空余补0。
举个例子,假如现在temp等于二进制10001011,进行左移后会变成00010110。
结合例子中的cy位,意思是最高位(左侧)被挤出去的位就是进位。
还是上面的例子,因为被挤出去了一个1,所以算作进位,cy就为1了


谢谢回帖。c语言左移语法我知道,但就不晓得,左移后跟SDA=CY有什么联系,CY位是什么大神,请大咖详解一下,谢谢
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:475
  • 最近打卡:2025-06-28 13:51:19

24

主题

109

回帖

388

积分

中级会员

积分
388
发表于 2024-2-16 09:06:50 | 显示全部楼层
I2总线读写时,时钟不是芯片自动产生吗?

点评

是  详情 回复 发表于 2024-2-16 09:53
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:112
  • 最近打卡:2025-06-29 00:35:48

740

主题

1万

回帖

1万

积分

管理员

积分
17183
发表于 2024-2-16 09:53:26 | 显示全部楼层
垂柳*** 发表于 2024-2-16 09:06
I2总线读写时,时钟不是芯片自动产生吗?

回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-29 13:18 , Processed in 0.132091 second(s), 103 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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