久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2396|回復: 7
打印 上一主題 下一主題
收起左側

大神幫我看一下我的程序,我是初學者 謝謝

[復制鏈接]
跳轉到指定樓層
樓主
ID:65605 發表于 2014-11-10 22:21 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
/*這是用外部中斷下降沿 第1次在3秒內達5次以上 點亮Green_LED 和 LED5 ,如果少以5次Red_LED程序停止 . 第2.3次依次 */
#include <reg52.h>
#define   uchar unsigned char
#define   uint unsigned int
uchar counter1;
uchar JDQ1,JDQ2,JDQ3;
sbit Green_LED =P0^0;
sbit Green_LED1 =P0^1;
sbit Green_LED2 =P0^2;
sbit Red_LED   =P0^3;
sbit    LED5   =P1^0;
sbit    LED6   =P1^1;
sbit    LED7   =P1^2;
sbit    LED8   =P1^3;
void Delay_1ms(unsigned int Time)
{
  unsigned int x, y;      
  for(x = Time; x > 0; x--)               
   for(y = 120; y > 0; y--);
}
void timer1_init()
{
     TMOD |= 0x10;
     TMOD &= 0xdf;  
     TH0 = (65536-50000)/256;
     TL0 = (65536-50000)%256;
     TR0 = 1; //啟動定時器0
  TF0=0;
}
void interrupter_init()
{
    ET0 = 1; //開定時器0中斷
            
    EX0=1; //開外部中斷0  
EA=1;  //開總中斷      
    IT0=1; //下降沿觸發
//IE0=0;
PX0=1;
// TCON |=0X01;         
}
main()
{
     timer1_init();
     interrupter_init();
  Red_LED =1;
     Green_LED =1;
     Green_LED1 = 1;
     Green_LED2 =1;
  LED5  = 1;
  LED6  = 1;
  LED7  = 1;
  LED8  = 1;
  JDQ1=0;
  JDQ2=0;
  JDQ3=0;
     while(1);
}      
void ISR_Key(void) interrupt 0
{
   counter1++;
  }
void interrupt_timer1() interrupt 1
{
       uint sec;
       uchar counter;
    TF0=0;
       TH0 = (65536-50000)/256;
       TL0 = (65536-50000)%256;
   
       counter++;
       if(counter ==20)
       {
         counter = 0;
   if(JDQ2==0)
         sec++;      
           if ((sec<30)&&(counter1>=5))
       {
           Green_LED=0;
           LED5 =0;
   
           
      }
   if ((sec<30)&&(counter1>=5)&&(JDQ1 ==1))
          { JDQ1=2;
            Green_LED1 =0;
            LED6 = 0;
         
            }  
   
     if ((sec<30)&&(counter1>=5)&&(JDQ1 ==3))
         { JDQ1=4;
           Green_LED2 =0;
           LED7 = 0;
   
         }
   if ((sec>=30)&&(counter1<5))
   {
            Red_LED=0;
      }
         if (sec>=40)
   { sec=0;counter1=0;
            JDQ1=1;
   if (JDQ2==2)
    {
        JDQ1=3;
    }
   if(JDQ1==4)
   {
     JDQ1=0;
     JDQ2=1;
     LED8  =0;
      
   }
   }
       }
                                 
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:65605 發表于 2014-11-10 23:58 來自手機 | 只看該作者
大神快幫幫忙
回復

使用道具 舉報

板凳
ID:66032 發表于 2014-11-11 09:03 | 只看該作者
這個代碼2個星期前我幫另一個人寫過, 請在帖子里找一下
回復

使用道具 舉報

地板
ID:65605 發表于 2014-11-11 09:14 來自手機 | 只看該作者
找不到
回復

使用道具 舉報

5#
ID:65605 發表于 2014-11-11 09:52 來自手機 | 只看該作者
看一下我的錯在哪里
回復

使用道具 舉報

6#
ID:66032 發表于 2014-11-11 11:25 | 只看該作者
//用一個外部中斷做按5次的鍵,一個定時器來判斷3秒溢出, 如果定時器在3秒內按了5次, 外部中斷重新賦初值,這樣防止定時器在3秒溢出,綠燈亮。反之,定時器溢出將使得紅燈亮, 用12M crystal 和數碼管+38譯碼器

#include <reg52.h>
#define   uchar unsigned char
#define   uint unsigned int

code uchar number[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

uchar a[6];

sbit ENLED = P1^4;
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit Green_LED =P2^0;
sbit Red_LED   =P2^1;

void timer1_init()
{
    TMOD |= 0x10;
    TMOD &= 0xdf;  
    TH1   = 0x3C;
    TL1   = 0xB0;
    TR1   = 1;
}
void interrupter_init()
{
   ET1 = 1;
   EA=1;          //諾ÖÖD¶Ï¿a
   EX0=1;         //ía2¿ÖD¶Ï0¿a
   IT0=1;         //±ßÑØ′¥·¢
}
void Scanning_Numerical_LED(void)
{
      static uchar j = 0;
        switch(j)
       {
        case 0: ADDR0 = 0;ADDR1 = 0;ADDR2 = 0;j++;P0 = number[a[0]];break;
        case 1: ADDR0 = 1;ADDR1 = 0;ADDR2 = 0;j++;P0 = number[a[1]];break;
        case 2: ADDR0 = 0;ADDR1 = 1;ADDR2 = 0;j++;P0 = number[a[2]];break;
        case 3: ADDR0 = 1;ADDR1 = 1;ADDR2 = 0;j++;P0 = number[a[3]];break;
        case 4: ADDR0 = 0;ADDR1 = 0;ADDR2 = 1;j++;P0 = number[a[4]];break;
        case 5: ADDR0 = 1;ADDR1 = 0;ADDR2 = 1;j = 0;P0 = number[a[5]];break;
        default: break;
            }
   
}

main()
{
    ENLED = 0; ADDR3 = 1;
    timer1_init();
    interrupter_init();
    while(1)
    {
       Scanning_Numerical_LED();
    }
   
}

void ISR_Key(void) interrupt 0 using 1

{
  uchar counter1;
  counter1++;
  TR1=1;
  if (counter1==5)
    {
      counter1=0;
      TH1 = 0x3C;  //50 ms setting;
      TL1 = 0xB0;
    }

}

void interrupt_timer1() interrupt 3
{
      uint sec;
      uchar counter;
      TH1 = 0x3C;  //50 ms setting;
      TL1 = 0xB0;
      counter++;
      if(counter ==20)
      {
        counter = 0;
        sec++;
        if (sec>=3)
        {
           Red_LED=1;
           TR1=0; 停定時器1;
          }
        else Green_LED=1;
        if (sec==10)
            sec=0;

        a[0] = sec%10;
        a[1] = sec/10;
        //a[2] = sec/100%10;
     //   a[3] = sec/1000%10;
        //a[4] = sec/10000%10;
      // a[5] = sec/100000%10;
      }
                                         
}
回復

使用道具 舉報

7#
ID:65605 發表于 2014-11-11 20:51 來自手機 | 只看該作者
我這個程序要實現在3秒內外部中斷沿進入5次以上同時用一個IO口接開關按下綠燈亮,如果不管哪一個不成立就紅燈亮
回復

使用道具 舉報

8#
ID:19715 發表于 2014-11-11 21:03 | 只看該作者
用一個定時器就可以,不用外中斷做按鍵。
這樣按鍵可以用任意IO,
多少個按鍵都可以

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久婷婷二区次 | 国产精品夜间视频香蕉 | 亚洲精品一区二区二区 | 婷婷色国产偷v国产偷v小说 | 亚洲综合色网 | 欧美午夜精品理论片a级按摩 | 欧美三级在线 | 国产999精品久久久 日本视频一区二区三区 | 久久久久国产精品一区二区 | 国产成人免费观看 | 中文字幕在线一区 | 久久精品毛片 | 91久久精品一区二区二区 | 97在线播放 | 国产精品一区二区不卡 | 欧美在线视频网 | 激情欧美一区二区三区 | 亚洲成av人片在线观看 | 男人天堂99| 91最新在线视频 | 中文字幕成人av | 日韩精品一区二区三区视频播放 | 一区二区三区电影在线观看 | 久久久99精品免费观看 | 亚洲aⅴ | 九色.com| 国产精品区一区二区三区 | 欧美在线一二三 | 国产亚洲一区二区三区 | 黄色在线免费观看 | 91精品在线播放 | 国产一区免费 | 国产人成精品一区二区三 | 久久99精品视频 | 欧美视频一级 | 亚洲 精品 综合 精品 自拍 | 国产精品99久久久精品免费观看 | 亚洲一区二区日韩 | 日日干夜夜操 | 成人av一区 | 国产成人精品免高潮在线观看 |