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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

51單片機(jī)進(jìn)行位移運(yùn)算,為什么數(shù)據(jù)會(huì)異常?

[復(fù)制鏈接]
回帖獎(jiǎng)勵(lì) 10 黑幣 回復(fù)本帖可獲得 10 黑幣獎(jiǎng)勵(lì)! 每人限 1 次
ID:1043477 發(fā)表于 2022-10-13 16:48 | 顯示全部樓層 |閱讀模式
程序如下
#include "RX8F103.h"
#include "intrins.h"
#include <stdio.h>




#define BSWAP_16(x) \
    (uint16_t)((((uint16_t)(x) & 0x00ff) << 8) | \
                  (((uint16_t)(x) & 0xff00) >> 8) \
                         )
                        
#define BSWAP_32(x) \
    (uint32_t)((((uint32_t)(x) & 0xff000000) >> 24) | \
                  (((uint32_t)(x) & 0x00ff0000) >> 8) | \
                          (((uint32_t)(x) & 0x0000ff00) << 8) | \
                          (((uint32_t)(x) & 0x000000ff) << 24) \
                         )










//從串口發(fā)送一個(gè)字符
void EUart0_SendOneChar(char c)
{
        ES0=0;                                //發(fā)送數(shù)據(jù)時(shí)關(guān)串口中斷
        TI0=0;                                //清TI位
        S0BUF = c;                //將待發(fā)送字符放入串口數(shù)據(jù)緩沖寄存器,并開始傳輸。
        while(!TI0);        //等待傳送結(jié)束。當(dāng)字符發(fā)送結(jié)束后由硬件置位請(qǐng)求中斷,
                                                                //此時(shí)while循環(huán)結(jié)束,而串口中斷處理函數(shù)需等到ES重新置1后才可能響應(yīng)。
        TI0=0;                                //軟件清TI位,亦可在中斷處理函數(shù)中清0
        ES0 = 1;                        //開串口中斷
}


void EUart0_SendString(char *st)
{
        while(*st)
        {
                EUart0_SendOneChar(*st++);
        }
}


unsigned char x[50] ={0x1e,0x00,0x00,0x00,0xca,0xfb,0x5f,0xf8,0x8f,0x00,0x1a,0x00,0x02,0xcf,0x81,
                      0xdb,0xff,0xe7,0xc8,0x00,0x20,0x00,0x01,0x5e,0x46,0xf5,0x71,0xd1,0x50,0x00,
                      0x21,0x00,0x01,0xa9,0xe1,0xfc,0xdf,0xc0,0x85,0x00,0x23,0x00,0x02,0xc8,0x44,
                      0xd7,0xf5,0xe9,0x47,0x00};




void main(void)
{         long a1=8;
          long a2=0x8f;
        int a3;


  int i = 48;
  int* p = &i;
  char c = 0;


        unsigned char* iKeyP = x;
        CLKCON |= 0x1F;                                //默認(rèn)所有時(shí)鐘打開
        RSTPORTEN = 1;                                //使能復(fù)位功能


        UART0PORTEN = 1;                        //串口端口使能
        S0CON = 0x50;                                        //SCON: Mode 1, 8-bit UART, Enable Rcvr
        S0RELH = 0x03;                                //S0RELH + S0RELL  構(gòu)成波特率設(shè)置S0REL[9:0]
        S0RELL = 0xF7;                                //Baud rate  = SYSCK/(16×(1024-S0REL))  SYSCK跟CLKDIV寄存器有關(guān)  波特率為115200
        ES0 = 1;                                                        //允許串口中斷位
//        EUart0_SendString("RX8F103 IIC Slave Init! V2.0\r\n");
        printf("a1==0x%x\r\n",a1);
        a1 = ((a1) << (9));
        a2 = (a2)+(128);
        a3 = *((short*)(iKeyP + (8)));
        a3=BSWAP_16(a3);
          while(1)
        {
                printf("Hello RX8F103 UART0\r\n");
                printf("a1==0x%x\r\n",a1);
                printf("a2==0x%x\r\n",a2);
                printf("a3==0x%x\r\n",a3);
                }
}


char putchar (char c)
{
        EUart0_SendOneChar(c);
        return c;
}


第一個(gè)問題問題在于這個(gè)語句a1 = ((a1)) << (9);printf("a1==0x%x\r\n",a1);
long型數(shù)據(jù)是四位的,定義a1=8,按照二進(jìn)制就是0000 0000 0000 0000 0000 0000 0000 1000
左移九位就是0000 0000 0000 0000 0001 0000 0000 0000
輸出的數(shù)不應(yīng)該是0x1000么,為什么輸出的是0x0
第二個(gè)問題,是a2 = (a2)+(128);已經(jīng)定義a2=0x8f,進(jìn)行運(yùn)算a2應(yīng)該等于0x10f,但是打印出來是90

以下是打印結(jié)果
Hello RX8F103 UART0
a1==0x0
a2==0x90
a3==0x8f



回復(fù)

使用道具 舉報(bào)

ID:526108 發(fā)表于 2022-10-13 17:31 | 顯示全部樓層
printf("a1==0x%lx\r\n",a1);
回復(fù)

使用道具 舉報(bào)

ID:1043477 發(fā)表于 2022-10-13 17:44 | 顯示全部樓層

好的,這樣打印就對(duì)了,大佬再請(qǐng)教一下,現(xiàn)在我做加法運(yùn)算為什么會(huì)出錯(cuò) a2 = (a2)+(128);,之前已經(jīng)讀出來a2=0x8f,如果進(jìn)行a2=a2+128的運(yùn)算,應(yīng)該是a2=0x10f,但是現(xiàn)在打印出來的是a2=0x90
回復(fù)

使用道具 舉報(bào)

ID:384109 發(fā)表于 2022-10-13 20:35 | 顯示全部樓層
第二個(gè)問題的答案同第一個(gè)問題
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久综合久| 玖玖爱365 | 成人黄色av网址 | 精品久久久网站 | 欧美日韩精品一区二区三区视频 | 日本一区二区三区视频在线 | av在线免费观看网站 | 亚洲免费在线 | 成人在线观看免费 | 国产粉嫩尤物极品99综合精品 | 日本精品视频在线观看 | 99综合| 国产精品视频在 | 免费看国产一级特黄aaaa大片 | 欧美美女爱爱视频 | 视频一区在线观看 | 丁香婷婷久久久综合精品国产 | 日韩精品极品视频在线观看免费 | 中文字幕 欧美 日韩 | 久久久久国产精品一区三寸 | 亚洲第一区久久 | 亚洲精品乱码久久久久久久久久 | 欧美一区二区三区国产 | 丁香五月网久久综合 | 色综合色综合网色综合 | 免费看国产一级特黄aaaa大片 | 日韩免费福利视频 | 亚洲日本欧美 | 成人国产精品色哟哟 | 在线欧美亚洲 | 做a视频在线观看 | 久久偷人 | 亚洲一区二区三区免费视频 | 成人精品国产一区二区4080 | 91一区二区三区在线观看 | 日本韩国电影免费观看 | 亚洲 欧美 另类 综合 偷拍 | 午夜成人免费视频 | 亚洲免费一区 | 欧美一区二区在线播放 | 国产成人精品免费视频大全最热 |