头像-269546

oh_耗子

  • 北京市
  • 单片机、嵌入式
  • 消费电子

个人成就

获得 126 次赞

帮助过332人

下边的计算中为什么?

tmd = 11095200 / 12tmd =  (tmd * 2ms) / 1000tmd = 65532 - tmd在计算中,为什么要让频率乘以时间在除以1000

三极管的钳位钳位二极管

想给三极管加一个钳位二极管,可以用那种好一点

在单片机中减半的程序怎么写

在写程序的时候想把得到的数值减一半怎么写合理

TTL的3V去拉高TTL的5v这个可行性高吗

想通过蓝牙模块去复位AVR但是一个是3v,另一个是5V这个想法可以吗,做产品不是玩

1117-5芯片的地线做板子的时候忘记链接

1117-5的地悬空会有什么后果现在使用没有发现问题

ad17的和谐软件谁有

谁有A17的和谐软件,能分享一下链接吗

P1 = (P1 & 0XF0) | i

#include<reg51.h>sbit keyout1 = P2^7;sbit keyout2 = P2^6;sbit keyout3 = P2^5;sbit keyout4 = P2^4;sbit keyin1 = P2^3;sbit keyin2 = P2^2;sbit keyin3 = P2^1;sbit keyin4 = P2^0;unsigned char code LED[] = {0xfc 0x60 0xda 0xf2 0x66 0xb9 0xbe 0xe0                              0xfe 0xf6 0xee 0xfe 0x9c 0xfc 0x9e 0x8E};unsigned char code keymap[4][4] = {{ 0x31 0x32 0x33 0x26 } //Êý×Ö¼ü1¡¢Êý×Ö¼ü2¡¢Êý×Ö¼ü3¡¢ÏòÉϼü                                   { 0x34 0x35 0x36 0x25 } //Êý×Ö¼ü4¡¢Êý×Ö¼ü5¡¢Êý×Ö¼ü6¡¢Ïò×ó¼ü                                   { 0x37 0x38 0x39 0x28 } //Êý×Ö¼ü7¡¢Êý×Ö¼ü8¡¢Êý×Ö¼ü9¡¢Ïòϼü                                   { 0x30 0x1B 0x0D 0x27 }  //Êý×Ö¼ü0¡¢ESC¼ü¡¢  »Ø³µ¼ü¡¢ ÏòÓÒ¼ü                                  };unsigned char keysta[4][4] = {{1111}{1111}{1111}{1111}};unsigned char Ledbuf[] = {0x00 0x00 0x00 0x00 0x000x000x000x00}; //ÊýÂë¹Ü¿ª¹ØÏû³ý¹íÓ°void ShowNumber(unsigned long num);void keyaction(unsigned char keycode);void keydriver();void keyscan();void ledscan();int main(){    TMOD &= 0XF0;    TMOD |= 0X01;    TH0 = 0XFC;    TL0 = 0X18;    EA = 1;    ET0 = 1;    TR0 = 1;    Ledbuf[0] = LED[0];        while(1)    {      keydriver();    }}void ShowNumber(unsigned long num){  signed int a;    unsigned char buf[8];        for(a = 0; a < 8; a++)    {      buf[a] = num % 10;        num = num / 10;    }    for(a = 8; a >= 1; a--)    {      if(buf[a] == 0)        {          Ledbuf[a] = 0x00;        }        else        {          break;        }        for(; a >= 0; a--)        {           Ledbuf [a]= LED[buf[a]];        }    }}void keyaction(unsigned char keycode){  static unsigned char add;    static unsigned char result;        if((keycode >= 0x30) && (keycode <= 0x39))    {      add = (add * 10) + (keycode - 0x30);  //°Ñ¼üÅÌÂë±ä³É        ShowNumber(add);    }    else if(keycode == 0x26)    {      result += add;    add = 0;    ShowNumber(result);            }    else if(keycode == 0x0d)    {      result += add;        add = 0;        ShowNumber(result);    }    else if(keycode == 0x1d)    {      result =0;        add = 0;        ShowNumber(add);    }}void keydriver(){    unsigned char j i;  unsigned char backup[4][4] = {{1111}{1111}{1111}{1111}};        for(i = 0; i < 4; i++)     for(j = 0; j < 4; j++)      {          if(keysta[i][j] != backup[i][j])            {              if(backup == 0)                {                    keyaction(keymap[i][j]);                }                backup[i][j] = keysta[i][j];            }            //backup[i][j] = keysta[i][j];        }}void keyscan(){    unsigned char i;    unsigned char keyout = 0;     static unsigned char keybuf[4][4] = {{0xff 0xff 0xff 0xff}                                         {0xff 0xff 0xff 0xff}                                         {0xff 0xff 0xff 0xff}                                         {0xff 0xff 0xff 0xff}                                        };        //¾ØÕó°´¼üɨÃ軺³å    //½«Ò»ÐÐËĸö°´¼üÖµÒÆÈ뻺³åÇø£¬Íê³ÉÏû¶¶    keybuf[keyout][0] = (keybuf[keyout][0] << 1) | keyin1;        keybuf[keyout][1] = (keybuf[keyout][1] << 1) | keyin2;        keybuf[keyout][2] = (keybuf[keyout][2] << 1) | keyin3;        keybuf[keyout][3] = (keybuf[keyout][3] << 1) | keyin4;                                                                    for(i = 0; i < 4; i++)                                                              //ÿÐÐËĸö°´¼üËùÒÔÑ­»·ËĴΠ       {          if((keybuf[keyout][i] & 0x0f) == 0x00)  //Á¬ÐøËÄ´ÎɨÃèÖµ¶¼ÊÇÁ㣬ËùÒÔ°´Ï            {              keysta[keyout][i] = 0;            }            else if((keybuf[keyout][i] & 0x0f) == 0x0f)            {              keysta[keyout][i] = 1;            }        }        keyout++;         //ÏÂÒ»ÐÐɨÃè        keyout &= 0x03;  // ÖØпªÊ¼Ò»´ÎɨÃè                switch(keyout)        {          case 0: keyout4 = 1; keyout1 = 0; break;            case 1: keyout1 = 1; keyout2 = 0; break;            case 2: keyout2 = 1; keyout3 = 0; break;            case 3: keyout3 = 1; keyout4 = 0; break;            default: break;            }}void ledscan(){  static unsigned char i = 0;        P0 = 0x00; //ÏûÒþ        //P1 = (P1 & 0XF0) | i;    P1 = 0XF0;    P0 = Ledbuf[i];    if(i < 8)    {      i++;    }    else    {      i = 0;    }}void InterruptTimer0() interrupt 1 //½øÈëÖжÏ1ms£¬Íê³É¼üÅ̵ÄɨÃèºÍÊýÂë¹ÜÏÔʾ{  TH0 = 0XFC;    TL0 = 0X18;        keyscan();  ledscan();}为什么C51和C52执行上面的程序是两种结果

正点原子发布的飞行器悟空

昨天正点原子发布会,有一个飞行器悟空,大家感觉怎么样