求51单片机使led灯亮800ms灭200ms的代码 使用下面代码修改过来的

#include<reg51.h>
sbit led1=P0^0;
sbit led2=P0^1;
char i;
char j;
void delayms(unsigned char ms)
//延时子程序
{
unsigned char i;
while(ms--)
{
for(i=0;i<250;i++);
}
}

main()
{
TMOD=0x01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
EA=1;ET0=1;ET1=1;
i=0;
j=0;
TR0=1;
TR1=1;
while(1);
}
void time0_int(void) interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
i++;
if(i==20){
delayms(100);
led1=! led1; i=0;}}
void time1_int(void) interrupt 3
{
j++;
if(j==50){
delayms(120);
led2=! led2; j=0;}
}

第1个回答  2017-04-13
#include<reg51.h>
sbit led1=P0^0;
sbit led2=P0^1;
char i;
char j;
void delayms(unsigned char ms)
//延时子程序
{
unsigned char i;
while(ms--)
{
for(i=0;i<250;i++);
}
}
void time0_int(void) interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
i++;
if(i<80)led1=0;
else led1=1;
if(i>1000)i=0;
}
void time1_int(void) interrupt 3
{
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
j++;
if(j<80)led2=0;
else led2=1;
if(j>1000)j=0;
}
main()
{
TMOD=0x01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
EA=1;ET0=1;ET1=1;
i=0;
j=0;
TR0=1;
TR1=1;
while(1);
}
第2个回答  2017-04-13
程序有好几个问题。
1、中断函数里不要用延时函数,那样会乱的;
2、LED1和LED2不能达到亮800灭200的效果;
3、中断函数没有和TMOD匹配,0x01表明T0工作于方式1,T1工作于方式0,方式0是13位计数,溢出值是8192,不是65536,且不会自动重装,中断函数里也要给计数器重新赋值
第3个回答  2017-04-13
#include<reg51.h> // 试试
sbit led1=P0^0;
sbit led2=P0^1;
sbit led3=P0^7;
char i;
char j;
main()
{
TMOD=0x01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
EA=1;ET0=1;ET1=1;
i=0;
j=0;
TR0=1;
TR1=1;
while(1);
}
void time0_int(void) interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(j==0){
i++;
}
if(i==20){ // 修改i=20 数值 改变时间
led1=! led1; i=0;
led3=1; j++;
}}
void time1_int(void) interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
if(i==0){
j++;
}
if(j==80){ // 修改i=80 数值 改变时间
led2=! led2; j=0;
led3=0; i++;
}}
第4个回答  2017-04-13
你这中断怎么可以在main函数里面。

求51单片机使led灯亮800ms灭200ms的代码 使用下面代码修改过来的
void delayms(unsigned char ms)\/\/延时子程序 { unsigned char i;while(ms--){ for(i=0;i<250;i++);} } void time0_int(void) interrupt 1 { TH0=(65536-10000)\/256;TL0=(65536-10000)%256;i++;if(i<80)led1=0;else led1=1;if(i>1000)i=0;} void time1_int(void) inter...

求51单片机定时LED闪烁程序代码
include <reg52.h> \/\/包括一个52标准内核的头文件 define uchar unsigned char \/***主函数***\/ void timer0();void main() \/\/ 主程序 { TMOD=0x01; \/\/定时器0工作方式1 EA=1;ET0=1; \/\/定时器0中断 TR0=1; \/\/启动定时器0 TH0=(65536-50000)\/256;TL0=(65536-50000)%256;wh...

怎样让51单片机的led灯一灭一亮
当单片机LED灯一亮一灭间隔1秒时,可以使用以下代码实现:\/\/ 初始化IO口 P1 = 0xFF; \/\/ 设置延时时间 while (1) { P1 = 0x00; \/\/ 延时1秒 for (int i = 0; i < 10000; i++) { \/\/ 空循环 } P1 = 0xFF; \/\/ 延时1秒 for (int i = 0; i < 10000; i++) { \/\/ 空循...

51单片机声控灯,怎么改下列代码使在分贝超过一定值的时候LED灯亮?
假设你有XPT2046的源程序,且上面这段代码可以正常采集AD 则只需修改main函数 sbit led=;\/\/引脚定义 define VALUE \/\/某个经验值 void main(void){ uint temp,count;while(1){ if(count==50){ count=0;temp = Read_AD_Data(0xE4);\/\/ AIN3 外部输入 if(temp>VALUE)led=0;\/\/判断...

求52单片机程序代码
程序代码如下:#include<reg51.h>sbit K1=P1^0;sbit K2=P1^1;void delay(int a){int i;while(a--)for(i=0;i<120;i++);}main(){unsigned char keyval=0,led=0xfe;while(1) { if(K1==0) { delay(10); if(K1==0) { keyval==1; while(K1==0); ...

求51单片机C51LED灯渐亮渐暗程序。。
\/\/ LedTimeCount应该为100 \/\/ 把下面这段的宏定义放在前面,代码段覆盖你原来那段试试 \/\/ 注意保存和备份 \/\/ LED = 0表示灯亮,LED = 1表示灯灭,如果是反着的就把下面的0和1换一下,或者改下宏定义 \/\/ pwmcount初始值为三角波,因此后半段的意思是把100次分为pwmcount自减段和常0段 \/\/ ...

求控制led灯亮灭的例程和详解
第一条是让灯灭,第二条应当是延时,第三条是让灯亮,第四条和第二条一模一样,也是延时,第五条应当是转去执行第一条指令。第二和第四条实现的原理稍后谈,先看第五条,LJMP是一条指令,意思是转移,往什么地方转移呢?后面跟的是LOOP,看一下,什么地方还有LOOP,对了,在第一条指令的前面...

求51单片机c语言代码,LED灯闪烁(500ms闪烁一次),6秒后(用T0定时)流水...
\/\/LED1接P2.0,LED2接P2.1,低电平点亮 include void _delay_ms(unsigned int c) \/\/误差 0us { unsigned char a,b;for(;c>0;c--)for(b=199;b>0;b--)for(a=1;a>0;a--);} void main(void){ while(1){ P2|=(1<<0)&(1<<1);_delay_ms(300);\/\/300MS P2|=~((1...

51单片机八个灯的流水灯代码
51单片机八个灯的流水灯代码:1、用精确定时的方法,设置流水灯运行时的时间间隔,延时时间为500MS。2、#include "reg51.h"首先写出单片机的头函数。3、#include "intrins.h"输入位移函数。4、unsigned int count=0,led;定义函数。5、输入主函数,定义单片机的端口,写入延时函数。编辑推荐 对于刚接触...

单片机流水灯代码
在这个单片机流水灯代码中,假设使用的是8051单片机。需要定义8个LED灯,分别连接到P1端口的不同引脚上。然后使用一个循环结构来控制这8个LED灯按照一定的顺序逐个亮起,形成流水灯的效果。具体来说,使用for循环来控制LED灯的亮灭顺序。在每次循环中,通过给P1端口赋值来控制LED灯的亮灭状态。例如,给...

相似回答