单片机程序代码问题,求大神指点!!

#include<reg52.h>
#include<stdio.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar LED0;

void delay();
uchar led();
void main()
{
P0 = 0xff;
while(1)
{
P2 = led();
}
}
void delay()
{
unsigned char a1,a2;
for(a2=205;a2>0;a2--)
for(a1=203;a1>0;a1--)
{
;
}
}
uchar led()
{
uchar x = 0xFE;
x = _crol_(x,1);
delay();
///if(0xFF == x)
//x = 0xfe;
return x;
}
led子函数,每调一次x都会初始化啊,让我直接读的话 应该是一个小灯在闪灭才对啊
这个程序我在流程上读的是有问题的(自我感觉),为啥8个流水也会依次闪亮呢?

第1个回答  2016-06-25
要说错误的话,对于定时器的设置,你只选择了定时器1的工作方式,装了初值,启动了定时器,但是,你一直在查询中断标志,而你并没有打开中断,你再加上“ET1=1”和“EA=1”,这是打开定时器1的中断和总中断。还有就是你晶振是11.0592MHz?初值装进去,我算了下是46.080ms中断一次。希望我的回答能帮助到你。

51单片机 电子时钟程序(共阳)。为何老是乱码,求大神指点
关显示的位置应该在MOV P0,@R1之前。当然在delay后面也可以,但考虑到将来要改成使用定时中断,最好还是像上面这样做。另外,这个程序应该先把中断全部关了调,不然肯定显示乱码。

MSP430单片机C语言编程问题
简单的说,UPCS0已经被TI移除。本身已无用。你把这句改为如下即可:USBPLLCTL = UPFDEN + UPLLEN ;(是的,在if和else后面两处是一样的,不用怀疑,这样没问题的。)

单片机编程:假设晶振频率为11.0592Mhz,试编写一程序,在P1.7引脚输出周期...
\/\/f=11.0592MHzsbit pout=P1^7;unsigned char cnt0=144,cnt1=32;void main(){ Init(); while(1) { PCON=0x01; \/\/休眠 }}void Init(){ TMOD=0x2; \/\/方式2:8位自装入 TH0=0x56; \/\/基础定时 TL0=0x56; TR0=1; ET0=1; EA=1; }...

...一个数码管闪烁显示“warn”的程序,跪求大神指点
可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。 单片机课程设计 数码管 aw60 闪烁 warn 搜索资料 本地图片 图片链接 代码 提交回答 匿名 回答自动保存中为你推荐:特别推荐《流浪地球》里的地下城已经建了不少 震惊!90后人均负债12万? 没有战斗的《黑暗之魂》是什么样子?

求单片机大神给我指点方向 想要精通单片机要学习什么 我现在学起来感觉...
你知道学习单片机的几个要点就可以慢慢入门了:1、学习IO口,知道IO口都干什么,输入、输出的条件。2、学习中断:外部中断、定时器中断、串口中断 3、学习存储结构:内部寄存器的几大类(工作寄存器(4组R0~R7)、位址空间20H~2FH、用于寄存器30H~7FH、特殊功能寄存器80H~FFH)外部扩展存储器。4、学习...

...请问这个语句是什么意思,求大神指点!必采纳!
接着是(PWM_OUT_flag ≠1 时),如果(power_off_flag = 0)条件满足,则强制设置条件:PWM_OUT_flag = 1,及 PWM_IO = 1;如果上述语句如你所给的那样,也可以这样表达:if( PWM_OUT_flag ==0 && power_off_flag == 0 ){ PWM_OUT_flag = 1;PWM_IO = 1;} ...

求单片机大神指点: 用DJNZ指令实现一个执行10次的循环,每次循环对累 ...
DD: MOV R2, #10 ; 设置10次的循环 D1: INC A ; 累加器A加1 DJNZ R2, D1 ; 10次的循环 RET ; 返回

...中CurrentValue=TH2<<8|TL2;后面if中语句不明白,求大神指点...
currentValue = TH2<<8 | TL2;\/\/这句是将2个8位的寄存器值转换为16位数值,TH2是高8位,TL2是低八位 if(CurrentValue >= PreValue)\/\/这句是将现在这个值和先前的值进行比较 { Value = CurrentValue - PreValue;\/\/如果现在这个值大于先前的值,则value=CurrentValue - PreValue;} else ...

个人用C51写的时钟芯片DS1302程序代码,开始上电就是无法正常显示读取时 ...
这个问题好解决,把main修改一下,增加下面的四行应该就好了:void main(void){ uchar i; for(i=0;i<100;i++){ delay(250); } SetDS1302(); while(1) { Read_RTC(); ECHO(8,disp); }}

单片机关于管脚编号的排列有什么顺序的吗?求大神指点!!
你图中显示的不就是某单片机的引脚顺序么?具体到真实单片机芯片可以这样识别:将芯片型号正面朝向自己(注意:大多数芯片左面边缘正中有一凹槽或左下角有一圆形凹点可作为器件正方向识别标志),从左下至右逆时针依次即为1~N脚,对应你的芯片就是1~20脚顺序与图示完全一样。

相似回答