#include <REG51.H>
#define uchar unsigned char
#define uint unsigned unit
sbit led = P1^1;
sbit k1 = P3^5;
sbit k2 = P3^7;
uchar T_Count=0;
led = 0;
void delay(unint x ms)
void led() interrupt 1
void main()
{
if( k1==0)&&( k2==1)
{
delay(5);
{if(k1==0)&&(k2==1) //开关k1 关闭时候 开关2打开时 灯常亮
led = 1;
while(!k1);
}
}
if(k1==1)&&( k2==0) //开关k2 关闭 开关K1打开时 灯闪亮 频率60Hz
{
TMOD == 0x01; //定时器0 工作模式1
TH0=(65536-16666)/256; //定时16.6ms 灯闪亮
TL0=(65536-16666)%256;
IE=0x82;
TR0=1;
while(1);
}
if(k1==1)&&( k2==1) //开关k2 K1同时打开时 灯长灭
led=0;
}
//------------------------------------------------------------
// T0中断函数 主控制灯闪烁 16.6ms
//-----------------------------------------------------------
void led() interrupt 1
{
TH0=(65536-16666)/256;
TL0=(65536-16666)%256;
if=( ++T_Count== 1 )
{
LED = !LED;
T_Count=0;
}
}
//--------------------------------------------
// 延时函数
//-----------------------
void delay(unint x ms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=120;j>0;j--)
}
------解决思路----------------------
lz的这个代码还是很蛋疼的
#include <REG51.H>
#define uchar unsigned char
#define uint unsigned unit
sbit led = P1^1;
sbit k1 = P3^5;
sbit k2 = P3^7;
uchar T_Count=0;
led = 0;
void delay(unint x ms)
void led() interrupt 1
//声明一个函数必须使用;结束,另外,void led() interrupt 1可以不用声明
void main()
{
if( k1==0)&&( k2==1)//一上电就检测开关,这是不合适的,上电要要做的主要是初始化函数的设置
{
delay(5);
{if(k1==0)&&(k2==1) //开关k1 关闭时候 开关2打开时 灯常亮
led = 1;
while(!k1);
}
}
if(k1==1)&&( k2==0) //开关k2 关闭 开关K1打开时 灯闪亮 频率60Hz//如果条件不成立,就不要主循环了???
{
TMOD == 0x01; //定时器0 工作模式1
TH0=(65536-16666)/256; //定时16.6ms 灯闪亮 //这个时间值得闪烁你是看不出来的,电灯是50hz的,你能看出它在闪吗?
TL0=(65536-16666)%256;
IE=0x82;
TR0=1;
while(1);
}
if(k1==1)&&( k2==1) //开关k2 K1同时打开时 灯长灭
led=0;
//如果运行到这个地方,你的程序就跑飞了 ,因为没有后续代码
}
//------------------------------------------------------------
// T0中断函数 主控制灯闪烁 16.6ms
//-----------------------------------------------------------
void led() interrupt 1
{
TH0=(65536-16666)/256;
TL0=(65536-16666)%256;
if=( ++T_Count== 1 )//楼主自己发明的语法?
{
LED = !LED;
T_Count=0;
}
}
//--------------------------------------------
// 延时函数
//-----------------------
void delay(unint x ms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=120;j>0;j--)
}
------解决思路----------------------
楼主C语言不过关呀,单片机基本的软件结构都没搞清楚。

------解决思路----------------------
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit led=P1^1;
sbit k1=P3^5;
sbit k2=P3^7;
void delay(uint x)
{
uchar i,j;
while(x--)
{
i=11;j=190;
do
{
while(--j);
}while(--i);
}
}
void timer0(void)
{
TMOD=0x00;
TH0=(65536-16666)/256;
TL0=(65536-16666)%256;
EA=1;
ET0=0;
TR0=0;
}
void int_timer0(void)interrupt 1
{
TH0=(65536-16666)/256;
TL0=(65536-16666)%256;
led=~led;
}
void main(void)
{
timer0();
while(1)
{
if((k1==0)&&(k2==1))
{
delay(1);
if((k1==0)&&(k2==1))
{
led=1;
}
while(k1==0);
}
if((k1==1)&&(k2==0))
{
delay(1);
if((k1==1)&&(k2==0))
{
TR0=1;
ET0=1;
}
while(k2==0);
}
if((k1==1)&&(k2==1))
{
delay(1);
if((k1==1)&&(k2==1))
{
led=0;
}
}
}
}