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

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

 火.. [复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:374
  • 最近打卡:2025-04-29 08:33:10

16

主题

137

回帖

978

积分

高级会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:374
  • 最近打卡:2025-04-29 08:33:10

16

主题

137

回帖

978

积分

高级会员

积分
978
发表于 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
  • 打卡总天数:420
  • 最近打卡:2025-05-02 07:07:46

14

主题

54

回帖

1340

积分

金牌会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:374
  • 最近打卡:2025-04-29 08:33:10

16

主题

137

回帖

978

积分

高级会员

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

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:419
  • 最近打卡:2025-05-02 06:28:49

24

主题

108

回帖

452

积分

中级会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:419
  • 最近打卡:2025-05-02 06:28:49

24

主题

108

回帖

452

积分

中级会员

积分
452
发表于 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
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2219

回帖

5452

积分

版主

积分
5452
发表于 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
  • 打卡总天数:419
  • 最近打卡:2025-05-02 06:28:49

24

主题

108

回帖

452

积分

中级会员

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


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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:419
  • 最近打卡:2025-05-02 06:28:49

24

主题

108

回帖

452

积分

中级会员

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

点评

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

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

717

主题

1万

回帖

1万

积分

管理员

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

回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 09:10 , Processed in 0.129495 second(s), 113 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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