单片机程序问题。请大家看看程序有什么问题? 那2个警告是什么意思?我下载后LED灯一点变化都没有。

单片机程序问题。请大家看看程序有什么问题? 那2个警告是什么意思?我下载后LED灯一点变化都没有。,第1张

函数单词写错了 是void main()

1WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS

说明:程序中有些函数(或片段)以前(调试过程中)从未被调用过,或者根本没有调用它的语句。

你这个函数LESSON4_1没使用

2WARNING L15: MULTIPLE CALL TO SEGMENT

有冲突 你在主循环里调用了一个函数(如aaa),而在中断服务函数里,你又调用了这个函数(如aaa)。这样当主循环运行到该函数中是,一旦产生中断,则在中断里又再次调用该函数!这时,很可能出错! 避免这种情况的方法很多:如,在进中断的时候置需调用该函数的标志,而在主循环中调用该函数

循环要这样写

while(1)

{

a=0x01 //赋初值00000001

for(i=0i<7i++)

{

P0=a

delay(500)

a=a<<1 //左移

}

for(i=0i<7i++)

{

P0=a

delay(500)

a=a>>1 //右移

}

}

或者

a=0x01 //赋初值00000001

while(1)

{

P0=a //先点亮第1个led

delay(500)

a=_crol_(a,1) //将a循环左移1位后再赋给a

}

或者

void t0() interrupt 1 //中断服务函数

{

TH0=(65536-50000)/256 //计数寄存器高8位重新载入

TL0=(65536-50000)%256//计数寄存器低8位重新载入

num++

if(num>=10) //500ms 调整流水速度

{

num=0

P0=1<<i //进入位移 *** 作,熄灭相对应位的LEDP0=1然后P0右移i位

i++

if(i>7) i=0

}

}

程序中P1要大写字母,修改如下:

#include <reg52.h>

sbit led=P1^0//这是大写P

void main()

{

led=0

while(1)//要加一行

}

LED灯,可以使用直流供电、高频率的开关稳压电源供电、专用的恒流驱动器供电、也可以使用50赫兹电感变压器降压整流供电。12v电源接led灯会有电流声的原因是由于你的电源是由50赫兹交流提供的、而且有50赫兹的变压器、并且铁芯松动造成的。如果是高频率的开关电源,或是直流供电,是听不到50赫兹交流声的。1,如果出现这种电流声,则说明你购买的台灯比较次。里面电源模块不是很好。2,好点的台灯都是使用恒流电源供应器,确保台灯使用寿命比较长。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12061033.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存