zoukankan      html  css  js  c++  java
  • 需要思考问题汇总

    1、中断定时1ms,那么一秒刷新一次应该是for(i<=1000)还是(i<999)?

    2.

    直接P1 等于一个值,P1^0对应的是这个值的二进制最低位还是最高位?

    最低

     3、下边代码为何能使小灯和一个数码管同时亮

    #include<reg52.h>
    //控制数码亮还是小灯亮
    sbit P20 = P2^0;
    sbit P21 = P2^1;
    sbit P22 = P2^2;
    
    sbit ENLED = P1^1;
    
    unsigned char T0RH = 0;
    unsigned char T0RL = 0;
    
    bit flagls =1;
    
    unsigned char code LedChar[] = {
        0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
        0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E
    };
    
    unsigned char LedBuff[7] = {
        0xFF, 0xFF,    0xFF, 0xFF, 0xFF, 0xFF ,0xff
        //0x11,0x12,0x14,0x24,0x12,0x44
    }; //最后一位控制小灯
    
    
    void ConfigTimer0(unsigned int ms);
    void LedScan();
    void TrafficLight();
    
    void main()
    {    int i;
        ENLED = 0;
        //EA = 1;
    
        P20 = 1;
        P21 = 0;
        P22 = 1;
        //P0 = 127;
    
        ConfigTimer0(1);
    //    while(1)
    //    {
    //        //if(flagls == 1)
    //        if(flagls)
    //        {
    //           flagls=0;
    //           TrafficLight() ;
    //        }
    //    }
    
    //测试代码
            i=0;
              P2 = (P2&0xF8)|(~(i+1));
            P0 = 0x00;//LedBuff[i];
    
    }

     电路图如下

     

     找问题:

     1 #include<reg52.h>
     2 //控制数码亮还是小灯亮
     3 sbit P20 = P2^0;
     4 sbit P21 = P2^1;
     5 sbit P22 = P2^2;
     6 
     7 sbit ENLED = P1^1;
     8 
     9 //unsigned char T0RH = 0;    //////////////////
    10 //unsigned char T0RL = 0;     /////////////
    11 
    12 //bit flagls =1;        ////////////////////
    13 //
    14 //unsigned char code LedChar[] = {
    15 //    0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
    16 //    0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E
    17 //};
    18 //
    19 //unsigned char LedBuff[7] = {
    20 //    0xFF, 0xFF,    0xFF, 0xFF, 0xFF, 0xFF ,0xff
    21 //    //0x11,0x12,0x14,0x24,0x12,0x44
    22 //}; //最后一位控制小灯
    23 
    24 
    25 //void ConfigTimer0(unsigned int ms);
    26 //void LedScan();
    27 //void TrafficLight();
    28 
    29 void main()
    30 {    int i;
    31     ENLED = 0;
    32     //EA = 1;
    33 
    34 //    P20 = 1;
    35 //    P21 = 0;
    36 //    P22 = 1;
    37     //P0 = 127;
    38 
    39     //ConfigTimer0(1);
    40 //    while(1)
    41 //    {
    42 //        //if(flagls == 1)
    43 //        if(flagls)
    44 //        {
    45 //           flagls=0;
    46 //           TrafficLight() ;
    47 //        }
    48 //    }
    49 
    50 //测试代码
    51         i=0;
    52           P2 = (P2&0xF8)|(~(i+1));
    53         P0 = 0x00;//LedBuff[i];
    54 
    55 }

    此时只有小灯亮;

    如若不讲34、35、36代码注释,则小灯和一个数码管亮。

    但是不管只有小灯亮还是数码管和小灯一起亮,显示亮度都比较暗,为了方便观看代码,下边将注释删掉

     1 #include<reg52.h>
     2 //控制数码亮还是小灯亮
     3 sbit P20 = P2^0;
     4 sbit P21 = P2^1;
     5 sbit P22 = P2^2;
     6 
     7 sbit ENLED = P1^1;
     8 
     9 
    10 
    11 void main()
    12 {    int i;
    13     ENLED = 0;
    14 
    15 
    16     P20 = 1;
    17     P21 = 0;
    18     P22 = 1;
    19 
    20         i=0;
    21           P2 = (P2&0xF8)|(~(i+1));
    22         P0 = 0x00;//LedBuff[i];
    23 
    24 }

    接下来查找是那行代码影响了数码管,经测试是第17行,P21不注释则小灯和一个数码管亮。注释则只有小灯亮;

    接下来分析代码

    P2 = (P2&0xF8)|(~(i+1));

    0xF8二进制为1111 1000

    与P2进行与操作,高五位不变,低三位置零

    i=0,则i+1=1,二进制为0x0000 0001

    进行非运算得二进制1111 1110

    1111 1000与1111 1110进行或运算得

    1111 1110,低三维为110,即P2^0 = 0, P2^1 = 1, P2^2 = 1.

    查询三八译码器转换值

     只有Y6输出低电平,即正常情况只有小灯会亮

    分析失败!!!!!!!!!!!!!!!!

    ----------------------------------------------------分割线-------------------------------------------------------

    问题解决,大佬说因为没加while,百度了下

     不加的话,一直循环执行整个程序,所以会出现这种情况

  • 相关阅读:
    sqli-labs 第四关
    sqli-labs 第三关
    sqli-labs 第二关
    sqli-labs 第一关
    Buuctf-misc-假如给我三天光明
    Buuctf-misc-另外一个世界
    Buuctf-misc-FLAG
    量化投资_合成数据
    量化投资_止盈止损在策略中的有效性(改编)
    量化投资_金融数据信息处理的新维度(A New Dimension to Deal Data Information of Finance)【论文/时海涛】
  • 原文地址:https://www.cnblogs.com/hgyzm/p/14469491.html
Copyright © 2011-2022 走看看