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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3210|回復: 4
收起左側

求思路 利用單片機中斷控制,根據按鍵次數,實現4個LED燈顯示按鍵次數的二進制數

[復制鏈接]
ID:872767 發表于 2021-9-7 16:01 | 顯示全部樓層 |閱讀模式
利用中斷控制,根據按鍵次數,實現4個LED燈顯示按鍵次數的二進制數,選擇任意連續的四個led燈進行顯示(按下一次,4個led的狀態為0001,即最后一個燈亮,按下二次,四個led燈狀態0010,即倒數第二個燈亮。……按下第16次重復按下第1次的顯示狀態,依次類推。
回復

使用道具 舉報

ID:624769 發表于 2021-9-11 17:27 | 顯示全部樓層
4個燈,P10~P13的話, 變量temp 記錄 按鍵次數, 然后,直接  P1 = temp; 不就好了? 沒看看出有啥難的地方啊……
回復

使用道具 舉報

ID:875095 發表于 2021-9-12 12:44 | 顯示全部樓層
定義一個全局變量,比如說x,按一次按鍵進一次中斷,x++;比如用的是51的P1.0~P1.3, 先清一下零,然后再把x賦給P1.
回復

使用道具 舉報

ID:875095 發表于 2021-9-12 13:34 | 顯示全部樓層
51試一下:
#include "reg52.h"
unsigned char x=1;
unsigned char i,j;
sbit NT0 = P3^2;
void delay_ms(unsigned char nms)
{
        for(i = nms;i>0;i--)
        {
                for(j = 110;j>0;j--);
        }
}
void main()
{
        EA = 1;
        EX0 = 1;
        P1 = 0xff;       
        while(1);
}

void ex0_interrupt() interrupt 0
{
                if(x<16)
        {
                P1 &= 0xF0;
                P1 |= ~x;
                if(NT0 == 0)
                {
                        delay_ms(10);
                        if(NT0 == 0)
                        {
                                x= x << 1;
                                while(NT0 == 0);
                        }
                }               
        }
        else x = 1;
}
回復

使用道具 舉報

ID:161164 發表于 2021-9-12 16:13 | 顯示全部樓層
  1. #include "reg51.h"

  2. typedef         unsigned char        u8;  //0 to 255
  3. typedef         unsigned int        u16;  //0 to 65535

  4. sbit P32 = P3^2;
  5. bit INT0_Flag;
  6. u8 delay_INT0;
  7. u8 LED;
  8. //External interrupt0 service routine
  9. void exint0() interrupt 0           //(location at 0003H)
  10. {
  11.         INT0_Flag = 1;
  12. }

  13. void main()
  14. {
  15.     IT0 = 1;                        //set INT0 int type (1:Falling 0:Low level)
  16.     EX0 = 1;                        //enable INT0 interrupt
  17.     EA = 1;                         //open global interrupt switch
  18.     while (1)
  19.                 {
  20.                         if(INT0_Flag)
  21.                         {
  22.                                 if(!P32)
  23.                                 {
  24.                                         if(delay_INT0<0xFF)delay_INT0++;
  25.                                         if(delay_INT0==250)
  26.                                         {
  27.                                                 LED++;
  28.                                         }
  29.                                 }else{
  30.                                                 delay_INT0 = 0;
  31.                                                 INT0_Flag = 0;
  32.                                 }
  33.                         }
  34.                         P1 = ~(LED & 0x0F);
  35.                 }
復制代碼
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩欧美专区 | 国产欧美在线观看 | 黄网在线观看 | 免费同性女女aaa免费网站 | 欧美日韩在线播放 | 在线观看日韩精品视频 | 国产韩国精品一区二区三区 | 东京久久| 国产精品久久a | 91av视频 | 欧美成人精品 | 亚洲视频免费在线看 | 在线中文字幕视频 | 精品乱码久久久久 | 成人一区二区三区在线观看 | 精品美女 | www.日日干 | 久色网| 国产电影一区二区 | 九九综合九九 | 91美女在线观看 | 亚洲国产免费 | 久久99这里只有精品 | 91p在线观看 | 在线黄色影院 | 成人亚洲精品 | 国产福利在线视频 | 亚洲欧美国产视频 | 男人天堂网址 | 久久亚洲一区二区 | 中文字幕免费在线 | 在线视频国产一区 | av天天干 | 色婷婷av777 av免费网站在线 | 亚洲精品丝袜日韩 | 中文字幕av一区 | 一区二区三区四区在线播放 | 中文字幕在线三区 | 男人的天堂中文字幕 | 亚洲网站在线观看 | 精品日韩在线 |