MCU我想用否定来实现P0 led,灯一个接一个亮着

发布于 科技 2024-02-19
21个回答
  1. 匿名用户2024-01-25

    一个接一个地重复灯光...... 我能把它理解为一束流动的光吗?

    左移后,加一个实现灯光的流动,如果这样写,灯会是1,2,3,4,5,6,7,8亮,而不是一个接一个,在每个周期开始时给p0的i值是不明智的,就像2楼的问题说的,时机不对, 以下程序希望对您有所帮助,不对的地方

    p0=i;while (1)

    yanshi(500);

    i<<=1 ;

    i+=1;p0=i;

    if(p0==0x7f)

    i=0xfe;

    p0=i;

  2. 匿名用户2024-01-24

    #include

    void yanshi(unsigned int k);

    void main()

    unsigned char i=0xfe;

    while (1)

    p0=i; yanshi(500);

    i=i<<1 ;

    if(p0==0x00)

    i=~i;这意味着,如果 p0 在反转的那一刻0x00,它根本不会循环,如果你再想一想,我相信你会做到的。

    void yanshi(unsigned int k )unsigned char n ;

    for(;k>0;k--)

    for(n=0;n<250;n++)

  3. 匿名用户2024-01-23

    创建一个无限循环,在循环内部,先否定引脚,然后延迟它们,仅此而已。

  4. 匿名用户2024-01-22

    否定-调用 延迟-调用否定-。。循环。

  5. 匿名用户2024-01-21

    那么如果没有位运算,就用位否定运算“”啊! 或者添加一个操作也可以实现,或者使用数组查找表的方法,总之有很多种方法。

  6. 匿名用户2024-01-20

    p0=1;while(1)

    p0~=p0;

    time(10);滚轮凳 这是一个延迟功能,不仅属于您。

  7. 匿名用户2024-01-19

    选取 框。 他们中的少数在线。

    我将解释相隔一秒钟,时间常数。

    这取决于您如何使用计时器。 通常使用方法 1。 如果频率为24MHz,则机器周期为。

    所以计数是 1 秒,超出了范围。 所以使用循环。 它可以是 50000 次循环 4 次或其他时间。

    计算技术的初始值。

  8. 匿名用户2024-01-18

    你要的东西很多,不要那么依赖别人,单片机和LED的接口电路很简单,IO口接LED的负极,正极接1K左右的电阻,然后通过电阻接VCC。

    去看看郭天翔的十天学习单片机,除非你只是想完成老师的任务。

  9. 匿名用户2024-01-17

    mov p0,#0;灯光完全变暗。

    kkk1:mov a,p0;

    jnb ,kkk2;

    setb ;点亮 LED 0 号;

    lcall lll2;延迟 2 秒;

    clr ;熄灭 0 号 LED;

    kkk2:jnb ,kkk3;

    setb ;点亮 LED 1 号;

    lcall lll2;延迟 2 秒;

    clr ;熄灭 1 号 LED;

    kkk2:jnb ,kkk3;

    setb ;点亮 LED 2 号;

    lcall lll2;延迟 2 秒;

    clr ;熄灭 2 号 LED;

    kkk3:jnb ,kkk4;

    setb ;点亮 LED 3 号;

    lcall lll2;延迟 2 秒;

    clr ;熄灭 3 号 LED;

    kkk4:jnb ,kkk5;

    setb ;点亮 4 号 LED;

    lcall lll2;延迟 2 秒;

    clr ;熄灭 4 号 LED;

    kkk5:jnb ,kkk6;

    setb ;点亮 LED 5 号;

    lcall lll2;延迟 2 秒;

    clr ;熄灭 5 号 LED;

    kkk6:jnb ,kkk7;

    setb ;点亮 LED 6 号;

    lcall lll2;延迟 2 秒;

    clr ;熄灭 6 号 LED;

    kkk7:jnb ,kkk1;

    setb ;点亮 LED 7 号;

    lcall lll2;延迟 2 秒;

    clr ;熄灭 7 号 LED;

    lll2: .2S时钟延时子程序(延时程序请自己编,这里只提供参考,不知道对不对,程序还没调试过)。

    前后按钮应至少具有 2 秒的空间时间。

    如果要同时按多个键,可以按如下方式对程序进行编程。

    mov p0,#0;灯光完全变暗。

    kkk1:mov a,p0;

    mov p0,a;明亮的 LED

    lcall lll2;延迟 2 秒;

    mov p0,#0;LED 熄灭;

    sjmp kkk1;

  10. 匿名用户2024-01-16

    单片机一次执行一条指令,而你的程序是单片机的端口一直在闪烁。

  11. 匿名用户2024-01-15

    您可以尝试将 LED 更改为小写字母,也可以反向翻转它。

  12. 匿名用户2024-01-14

    也就是说,变量 d1 的位值倒置,1 变为 0,0 变为 1,假设 d1=0,执行 d1= d1 后,d1=1。 此处理在定时器 0 的中断程序中执行,当定时器 0 周期性中断时,d1 的位值周期性反转,连接的指示灯闪烁。

  13. 匿名用户2024-01-13

    事实上,原文**是没有标准化的,虽然不影响结果。

    使用正确! ,例如 p1 0 =! p1_0;表示 bool 类型数据被否定,原文使用 ,即每个位的否定,如 char a=0x01; b=~a;

    则 b=0xfe,即 a 的所有 8 位都被否定了,所以这意味着 char 和 int 类型的每一位数据都被否定了。

    同样,如果你想判断布尔,你应该写 if(p1 0) 或 if(!)。p1 0),而不是 if(p1 0==1)。

    好好学习,学C语言,不要自己想,看正规的教科书,不会出错

  14. 匿名用户2024-01-12

    初始值与你的单片机IO口的工作状态有关,如果你的P1 0接LED的,那么默认应该是低电平的,即D1=0,你的D1=D1放在定时器中断中,然后定时器溢出产生中断,A=100, D1 会被否定,也就是下次 D1=1,然后下次 D1 为 0,也就是 P1 0 周期被否定,所以连接它的LED会闪烁。

  15. 匿名用户2024-01-11

    这句话就是把水平反转,从高到低,或者从低到高,每次进门都翻转。

    该程序使用定时中断翻转计时器。

    在电路上,LED应该连接好,当你看外面的电路状态时,LED灯会闪烁和熄灭。

    修改 a==100 的值以更改闪烁频率。

    另外,每次输入中断时,A会自行加1,当A加到100时,可以进入一次翻转LED灯,然后A返回零,再次进入,并不断循环。

  16. 匿名用户2024-01-10

    我不太明白你说什么。

    意义。 LED上不是有开关吗,玩数码管的时候,关掉开关。

    亮,使 LED 不属于显示屏; 使用 LED 时,两个 74HC573 锁存器关闭; 打开开关,以免分心。 如果您打算在程序中分别控制数码管和 LED,则只能添加闩锁。 没办法,这就是这块板子的设计方式。

  17. 匿名用户2024-01-09

    虽然两者都是 P0,但 74HC573 用作动态扫描的锁存器。

    简单地说,一个573控制着选择中的数字管,称为。

    适应选择,573控制选择数码管的哪些段,这称为段选择。 动态扫描的原理是扫描速度足够快,感觉不到数码管的变化,这个原理是以前的砖显CRT,也是通过快速扫描来显示的。 那我们就不谈别的了。

    另外,这个数码管显示,即P0先频闪哪个数码管,然后这个数据被锁存包保存,然后P0发送显示的段码,也被锁存器持有,并等待很短的时间(如果时间长,你会看到几个数码管跳动显示), 然后频闪下一个数码管保持,然后发送段码保持,不断重复这个过程,数码管不会熄灭,当然,这很大程度上是由于我们视觉持久性的错觉。不过需要注意的是,这个过程的小问题是需要消除,但所谓的消除,其实就是在不同数码管之间切换时,加一条语句,关闭所有显示器。 关闭所有显示器意味着所有位置都设置为更高的级别(共阴极数码管)。

  18. 匿名用户2024-01-08

    有一个J1 LED开关来控制LED灯,当你想做流光灯时,你必须打开开关,然后对。

    应该降低嘴巴,它会被点亮。 数码管有一个74HC573控制,它是一个锁存器,你检查它的真值表就知道如何使用它,通过端口控制锁存器的开/关,当最后一个信号被锁存时LE为低电平,高电平是让Q0-7输出随着D0-7输入而变化。

  19. 匿名用户2024-01-07

    不可以,除非 LED 和数码管连接到中间的 74HC573。

  20. 匿名用户2024-01-06

    你没有放开监控! 也就是说,在密钥处理程序之后,需要添加 while(k1!=0);也就是说,只有松开按钮后,你才会认为按键执行完成,否则你会不断重复按键的程序,那么你的d1就会一直执行开关操作!

  21. 匿名用户2024-01-05

    您不必延迟抖动消除。

    void delay(uint z)

    delay(20) 按下按钮的地方的延迟 20 是 goodif(s1==0)。

    delay(20)

    if(s1==0)

    d1=!d1

相关回答
6个回答2024-02-19

来自用户的内容:lisuyan210

读者可能知道计算机是什么以及它能做什么。 但是你知道什么是微型计算机吗? “微机控制”这个术语在今天的各种设备中总是被使用,那么这个微机是什么呢? 它与计算机有什么关系,它与计算机有何不同? >>>More

11个回答2024-02-19

有两个建议:1、知道自己想要实现什么功能,想要使用什么芯片; >>>More

4个回答2024-02-19

AT89C52 C 系列是早期产品。 没有了编程和看门狗,为了区别于早期产品,将新产品改为具有看门狗和ISP功能的AT89S52,ISP就是编程的意思。早期是晶格的专利技术,现在被大量使用。 >>>More

30个回答2024-02-19

idata:定义的变量在 00 h ffh ram 和 256 字节的范围内,可以读写变量。 >>>More

4个回答2024-02-19

买我的 USB 驱动器,先把我变成最好的。