欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3441|回復(fù): 4
收起左側(cè)

求思路 利用單片機(jī)中斷控制,根據(jù)按鍵次數(shù),實(shí)現(xiàn)4個LED燈顯示按鍵次數(shù)的二進(jìn)制數(shù)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

ID:875095 發(fā)表于 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;
}
回復(fù)

使用道具 舉報(bào)

ID:161164 發(fā)表于 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.                 }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表