关于 51 微控制器的 C 语言程序中的一个错误(我真的不知道为什么是错的? )

发布于 科技 2024-05-25
14个回答
  1. 匿名用户2024-01-28

    打断***

    #define count1 5000

    定义 m0 (65536-count1) 256 定义 tl m0 (65536-count1)%256 ***t1中断***

    #define count2 250

    #define th_m1 (256-count2)#define tl_m1 (256-count2)int count_m1=0;t1 中断次数。

    int count_m0=0;t0 预定义计时次数,然后定义变量。

  2. 匿名用户2024-01-27

    难道不是吗“; “我没有做对,检查一下,我不能只通过这个程序看到它。

  3. 匿名用户2024-01-26

    int count_m1=0;t1 中断次数。

    这句话有一个额外的分号。

  4. 匿名用户2024-01-25

    我不知道 C51 的状态是什么,但我想知道 C 编译器是否识别注释。

  5. 匿名用户2024-01-24

    对不起,大哥,小哥来这里学习......

  6. 匿名用户2024-01-23

    你说“没有联系,他们独立运作”的说法令人费解。 在这种情况下,传感器检测到的值有什么用? 传递到主机?

    LED 和步进电机在什么条件下运行? 由主机控制? 如果是这样,只需将其设置为一个简单的串行驱动应用程序即可。

  7. 匿名用户2024-01-22

    它们都是循环延迟函数,包含以下两个句子;

    for(m=20;m>0;m--)for(n=20;n>0;n--) 但区别在于语义不同(在这种情况下,什么都没有);分号);

    而。 <>

    是一个设定的周期,则其循环数=m * n;

    而。 <>

    是两个独立的周期,周期数=m+n;

  8. 匿名用户2024-01-21

    函数 2 的两个 for 循环彼此不嵌套,循环 1 在执行完成后执行一次循环 2。 在函数 1 中,第二个 for 循环由第一个循环控制,即第二个 for 循环被控制执行 20 次。 如果用作延迟,则第一个函数的延迟时间约为第二个函数的 20 倍。

  9. 匿名用户2024-01-20

    很奇怪,为什么在这个界面里总看不到别人的问题内容,好像只能看到单片机C语言遇到的问题的标题。

  10. 匿名用户2024-01-19

    总结。 1. 指向代码区域中数组的指针也应由 code 关键字声明。 (1)按下开关时的振动。

    第一个低电平会进入中断处理程序,然后即使这些振动是在中断处理程序执行过程中产生的,即使总中断在进入中断处理程序后关闭,这些毛刺仍然会导致中断标志位置在结束中断处理程序结束后立即再次触发中断处理程序。

    2)松开开关时的振动。当达到第一个高点时,中断处理程序将退出,之后的毛刺再次进入中断处理程序。

    MCU 程序问题。

    1. 指向代码区域中数组的指针也应由 code 关键字声明。 (1)按下开关时的振动。 第一个低电平会进入中断处理程序,然后即使这些振动是在中断处理程序执行过程中产生的,即使总中断在进入中断处理程序后关闭,这些毛刺仍然会导致中断标志位置在结束中断处理程序结束后立即再次触发中断处理程序。

    2)松开开关时的振动。当达到第一个高点时,中断处理程序将退出,之后的毛刺再次进入中断处理程序。

    0x01 是什么意思?

    这种情况已经遇到过很多次了,只要15系列MCU使用串口,就必须知道AUXR寄存器的值,不像12系列可以忽略这个寄存器。 我在使用 15 系列微控制器时养成了一个习惯:main 函数的第一句话让 auxr=0; ,串口正在根据需要对其进行初始化。

  11. 匿名用户2024-01-18

    51单片机12M晶振,定时计数器时钟为1us,所以单个16位定时计数器可以达到最大定时时间:65536*1us=,所以在12m晶体振荡器的情况下,用单个16位定时器无法获得100ms的定时。 在这种情况下,您可以用较低的频率替换晶体振荡器或使用以下两种软件方法:

    1.定时器累积。 计数值用于记录计时器中的中断次数。 例如,如果将定时器设置为中断 10ms,则使用计数值记录定时器的中断次数,并在每个中断计数中加 1,这样当计数值为 10 时,定时器将被中断 10 次,即 100ms,然后将计数值清除为 0 并重新计数。

    这种方法会有一个小误差,因为操作计数值需要一点时间,比较短。

    串联的定时器计数器。 一个用作计时器,一个用作计数器。 当定时器中断时,输出一个脉冲作为计数器的计数脉冲,设置计数值,当计数已满时中断计数。 总定时时间的原理与上述相同。

    至于计时计数器的操作,楼上的两人说得很清楚。

  12. 匿名用户2024-01-17

    定时器需要设置一个初始值,然后在定时器启动时,定时器会在每个周期内将这个初始值增加 1,直到溢出,并产生定时中断。

    如果单片机是12m晶体振荡器,定时器会加1到1ms,如果不知道,可以看看单片机各个周期之间的关系。

    下面以某个定时器t0为例,介绍初始值的设置。

    th0=(65536-100)/256;

    tl0=(65536-100)%256;

    Th0 和 TL0 共同组成一个 16 位定时器,其初始值在溢出前设置为 100,因此在 100ms 后,定时器会溢出并产生中断。

    我不会谈论如何设置定时器工作模式,如何启动定时器和中断。

  13. 匿名用户2024-01-16

    当总数达到ffffh时,计时器被打断! 那么你想让它计数 10,000,你是否使用 ffff(十六进制)减去 10,000(十进制)作为计数的初始值? th0=-(10000/256);tl0=-(10000%256) 与 FFFF(十六进制)减去 10000(十进制)相同。

    从th0=-(10000 256); tl0=-(10000%256) 开始计数,直到 10000 刚满。 这相当于从 ffff(十六进制)中减去 10,000(十进制数字!! 写起来比较容易,不算!!

    只需查看原始代码和补码即可。 正数的补码是对应的二进制数,符号位为零,负数的补码是其绝对值对应的二进制数,二进制数逐位反转再加一,符号位为一。 如果一个无符号数字不考虑符号,那么结果与从 FFFF 中减去其绝对值相同。

  14. 匿名用户2024-01-15

    将它们错开在一起,更改几行,删除几行,再填写几行,就完成了。

相关回答
19个回答2024-05-25

原理:只是执行一些所谓的“无意义指令”,比如缩放或执行一个int自加法,简单来说,就像高中数学中的“乘法原理”一样,很容易快速增加上面提到的“无意义指令”的数量。 >>>More

6个回答2024-05-25

还行。 在 51 微控制器的嵌入式 C 语言中,还支持指针。 >>>More

2个回答2024-05-25

1. 直接调用库函数。

2.以下是该函数的配置,从中可以看出,当i=0时,端口对应的灯亮,当i=1时,端口对应的灯亮,在for循环中,两组灯交替闪烁。 >>>More

16个回答2024-05-25

前两句话是自定义字符。

设置起始地址0x40后,可以写入8字节的点阵数据,即形成一个字符。 >>>More

8个回答2024-05-25

这是一个简单的例程,即 P1 端口上 LED 灯闪烁的例程。 >>>More