当前位置: 代码迷 >> 单片机 >> 麻烦大家帮忙看一下这个程序 多谢诶菜鸟
  详细解决方案

麻烦大家帮忙看一下这个程序 多谢诶菜鸟

热度:168   发布时间:2016-04-28 14:42:35.0
麻烦大家帮忙看一下这个程序 谢谢诶初学者
#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;
}
}
}
}
  相关解决方案