急!!!求一个简单的单片机C程序

要求:发光二极管点亮并轮流发光同时延时五秒关闭
我是菜鸟,请逐句标注清楚,万分感谢。
不好意思,用AT89C51的单片机,5个LED。
2楼和3楼的程序我都编译了一下,都有问题,还有哪位大侠帮帮忙啊。

#include <reg52.h>
#include <intrins.h>
#define ulong unsigned long
#define uchar unsigned char
uchar temp;
void delay(uint);
void main()
{
temp=0xfe; //初始状态,点亮第一个LED
P1=temp;
while(1)
{
temp=_crol_(temp,1); //库函数_crol_用来控制左移
delay(1100); //调用演示程序,设置延时时间
P1=temp;
}

}
void delay(ulong z) //延时函数
{
ulong x,y;
for(x=100;x>0;x--)
for(y=z;y>0;y--);
}
试试这个
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-12-28
再急也要把问题说清楚噻

用什么单片机?几个LED?
第2个回答  2009-12-28
#include <reg52.h> //52系列单片机头文件
#include <intrins.h>
#define uint unsigned int //宏定义
#define uchar unsigned char
void delayms(uint); //声明子函数
uchar aa,flag,num;
void main() //主函数
{
aa=0xfe; //赋初值11111110
flag=0; //旗帜
TMOD=0x01; //设置定时器0为工作方式2(0000 0010)
TH0=(65536-50000)/256; //初值
TL0=(65536-50000)%256;
EA=1; //开总中断
ET0=1; //开定时器0中断
TR0=1; //启动定时器0
while(1) //大循环
{
if(flag==0)
{
P1=aa;
delayms(200); //延时200毫秒
aa=_crol_(aa,1); //将aa循环左移1位后再赋给aa
}
if(flag==1)
{
P1=0xff;
}
}
}
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--) //i=xms即延时约xms毫秒
for(j=110;j>0;j--);
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256; //50ms中断一次
TL0=(65536-50000)%256;
num++;
if(num==100) //5秒到了
{
flag=1; //关灯
TR0=0; //停止计数
}
}
没编译过,应该是对的
第3个回答  2009-12-30
粗略的看了一下,二楼和三楼的程序应该没问题,程序我就不写了,下面给你分析一下你之所以运行出错的原因【你以后可以自己找原因,这很重要。还有不懂的就到百度HI上找我】

***top1:最可能的是你的接口和上两位的不一样,他两用的都是P1口,你看你自己用的哪一口,改一下数字就可以了。

**top2:要是你不是直接烧到板子上,而是用Proteus仿真,又是用的P0口,最好在那加个上拉电阻,我有一次做点阵的时候在这摔过跤,大小差不多200欧就可以了。

*top3:硬件连接问题,检查一下自己的连接是否正确以及是否连好了。

今天没时间写,如果你看了上面的还没解决,到网上找我,我给你程序和仿真,这个其实很简单,要自己尝试才有效果,QQ:358931664

还有,二楼的适合新手,因为他直接调用的函数,简洁明了;三楼的用了中断,定时精确到1us,可以试试

谁能帮我写一下单片机C语言程序?
sbit K1=P1^1;sbit K2=P1^2;void delay(int ms){ unsigned char i;while(ms--)for(i=0;i<120;i++);} void t0isr(void) interrupt 1 { TH0=(65536-10000)\/256;TL0=(65536-10000)%256;LED=~LED;} main(){ TMOD=0x01;TH0=(65536-10000)\/256;TL0=(65536-10000)%256;ET0=1;E...

编写简单的单片机c语言程序 1、指定数组找最大值 2、排序
defineNR10\/\/数组元素个数 \/*从主函数开始*\/ intmain(intargc,char**argv){ intar[NR];inti;fprintf(stdout,"请输入%d个整数:\\n",NR);\/*获取并检查用户输入*\/ while(1){ \/*循环获取NR个数据*\/ for(i=0;i<NR;i++){ if(fscanf(stdin,"%d",&ar[i])!=1){ fprintf(stdout,"输入...

求一51系列单片机C程序,最好是简单易懂,有注释。 程序目的:通过串口...
SCON = 0x50;\/\/定时器1为串口提供时钟 TH1 = 0xFD;\/\/初值9600bps TL1 = TH1;PCON = 0x00;\/\/波特率不加倍(如果为0x80代表波特率加倍)EA = 1;\/\/打开总中断 ES = 1;\/\/打开串口中断 TR1 = 1;\/\/定时器1开始计数 } void SendOneByte(unsigned char c)\/\/发送字节 { SBUF = c; \/\/赋...

求一单片机c语言程序:两个按键控制两个led,按键按住不放led闪烁,松手...
一个按键时程序如下:while(1){ if(key==0)\/\/按键按下 { delayms(20);\/\/延时消抖 if(key==0)\/\/再次判断按键是否按下 { while(key==0)\/\/按键没有抬起 { led=!led; delayms(200);}\/\/LED闪烁 } } else led=0;}

求单片机程序(C语言),新手不会写
把P0.0定义K1,P0.1定义K2, P0.3定义K4,P1.0定义Y0,P1.1定义Y1,单片机低电平有效。K1光电开关(为触发开关)检测到物体时输出低电平,K2(检测开关)检测到物体时高电平,K4(检测开关)检测到物体时是低电平,Y0外接电机,Y1外接继电器。1、 在开机状态下,K1没有检测到物体(没有触发...

求一个51单片机C语言程序编程
单片机甲、乙进行双机串行通信,甲机通过串口控制乙机LED闪烁(如下图所示,要求利用芯片MAX232),双方的晶振频率均为11.0592MHz(波特率为9600kb\/s)要求:甲机按开关K1一次,发送字符“A”给乙机,点亮灯D1与D2;按开关K1两次,发送字符“B”给乙机,点亮灯D3与D4;按开关K1三次,发送字符“C...

急需单片机高手帮忙用C语言写一个单片机4个灯轮流闪亮的源程序。 详...
L3=1; \/\/第三盏灯亮 delay(100); \/\/调用延时子程序 L4=1; \/\/第四盏灯亮 delay(100); \/\/调用延时子程序 while(1); \/\/这里我用了个死循环,目的程序只运行一次,如果需要自动重新运行,可以把这句删掉 } 纯手工书写,并仿真调试过,记得加分哟~...

怎么用c语言编程51单片机读写程序?
编程代码如下:ORG 0000H MOV DPTR,#1000H ;给源数据块地址指针DPTR赋初值 MOV P2, #20H ;给目的数据块地址指针P2和R0赋初值 MOV RO,#00H LOOP: MOVX A, @DPTR .MOVX @RO, A .INC DPTR INC RO CJNE RO,#64H, LOOP SJMP

请大神帮忙编写一个单片机C语言程序,串行通信的。
这是基于STC12C5A60S2 单片机编写的程序,应该也兼容51单片机。这里只是串口的收发,和数码管显示,由于我的数码可能和你的不一样所以需要更改。include<stc.h> define uchar unsigned char define uint unsigned int \/\/unsigned char code dofly[16]={0,0x3f,0x79,0x5e,0x07,0x7f,0x6f,0x39,...

很简的51单片机C语言流水灯程序
1、51单片机C语言实现循环8个流水灯左移三次,后右移三次。例程:include<reg51.h> \/\/51单片机头文件#include <intrins.h> \/\/包含有左右循环移位子函数的库#define uint unsigned int \/\/宏定义#define uchar unsigned char \/\/宏定义sbit beep=P2^3;void delay(uint z) \/\/延时函数,z...

相似回答
大家正在搜