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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3532|回復: 0
收起左側

分享在Keil C51中遇到的一個小bug的解決過程

[復制鏈接]
ID:100029 發(fā)表于 2015-12-22 18:55 | 顯示全部樓層 |閱讀模式
用Keil C51編寫一個遍歷LED多段數(shù)碼管的所有管腳的程序,想使用sprintf函數(shù)把實際運行時的數(shù)值顯示出來,結果遇到一個很奇怪的問題,就是顯示的數(shù)值并不是參數(shù)的實際數(shù)值。程序如下:

#include "stc15.h"
#include "stdio.h"

char myBuf[50];
void main(void)
{
    unsigned char i1,i2,i3;        //這個定義導致的sprintf出錯,并且移位操作也顯得異常。
    unsigned int tp;
   
    for (tp=0; tp<4096;tp++) {
        sprintf(myBuf, "nP=%#x:", tp);
        SendString(myBuf);     //通過串口把數(shù)值顯示出來。
       //P2.0-P2.4
        i1 = tp & 0x1F;
        P2 &= 0xE0;
        P2 |= i1;
        sprintf(myBuf, "P2=%#x:", i1);
        SendString(myBuf);

        //P4.5-P4.7
        P4 &= 0x1F;
        i2 = ((tp>>5) & 0x7)<<5;
        P4 |= i2;
        sprintf(myBuf, "P4=%#x: ", i2);
        SendString(myBuf);
      
        //P3.4-P3.7   
        P3 &= 0x0F;
        i3 = (tp>>8)<<4;
        P3 |= i3;
        sprintf(myBuf, "P3=%#x\r\n", i3);
        SendString(myBuf);
      
        delay(4000);
    }
}
以上的運行結果,nP, P2,P3,P4都是0xFFFF類似的格式,而不是所期望的0xFF。如下所示:
Test Uart at 115200.
nP=0x0:P2=0x0:P4=0x0: P3=0x0
nP=0x1:P2=0x101:P4=0x1: P3=0x1
nP=0x2:P2=0x202:P4=0x2: P3=0x2
nP=0x3:P2=0x303:P4=0x3: P3=0x3
nP=0x4:P2=0x404:P4=0x4: P3=0x4
nP=0x5:P2=0x505:P4=0x5: P3=0x5
......
......
nP=0x1d7:P2=0x17d7:P4=0x6d7: P3=0x1d7
nP=0x1d8:P2=0x18d8:P4=0x6d8: P3=0x1d8
nP=0x1d9:P2=0x19d9:P4=0x6d9: P3=0x1d9
nP=0x1da:P2=0x1ada:P4=0x6da: P3=0x1da
nP=0x1db:P2=0x1bdb:P4=0x6db: P3=0x1db
這個問題折騰了將近1天的時間,最后發(fā)現(xiàn)把i1,i2,i3的定義由unsigned char修改為unsigned int,這個問題就消失了。究其原因,是因為sprintf函數(shù)中的x變量是整數(shù)型的,在C51中把unsigned char變量發(fā)送時,就出現(xiàn)了錯誤。

具體原因不清楚,算不算Keil C51編譯器的Bug呢?這里用的是Keil C51 9.54a。


回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲 自拍 另类 欧美 丝袜 | 先锋av资源在线 | 久久一区二区三区四区 | 在线亚洲精品 | 国产一区不卡 | 精品国产伦一区二区三区观看方式 | 久久久久久艹 | 伊人久久精品一区二区三区 | 国产小网站 | 操皮视频 | 欧美福利专区 | 日本三级视频 | 91 在线 | 日日日干干干 | 久久久久久成人 | 中文字幕高清免费日韩视频在线 | 欧美一级高潮片免费的 | 一级网站| 欧美一级二级视频 | 精品久久久久久久久久久久久久 | 成人欧美一区二区三区在线观看 | 一区二区三区在线免费观看 | 亚洲欧美一区二区三区国产精品 | 日韩网站在线观看 | 久久久天天 | 久久日韩粉嫩一区二区三区 | 日韩精品成人一区二区三区视频 | 成人免费激情视频 | 亚洲精品中文字幕在线观看 | 2022精品国偷自产免费观看 | 亚洲日日夜夜 | 精品久久香蕉国产线看观看亚洲 | 四虎影院一区二区 | 美女爽到呻吟久久久久 | 亚洲成色777777在线观看影院 | 久久天天 | 色婷婷亚洲一区二区三区 | 久久久久久久久久久久久久国产 | 91视频在线看 | www.久久精品| 欧美视频三区 |