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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2838|回復: 7
打印 上一主題 下一主題
收起左側

關于C語言&運算的問題

[復制鏈接]
跳轉到指定樓層
樓主
我的代碼如下:

sbit COW_1641 = P0^0;

unsigned char temp=0x7E;

printf("  temp  = 0x%X \n",  temp);

COW_1641=temp&0x80;

printf(" COW_1641 = 0x%X \n",COW_1641);


temp<<=1;

printf("temp <<1  = 0x%X \n",temp);

現在輸出的結果是:
temp  = 0x7E00
COW_1641 = 0x7E00
temp <<1  = 0xFC00

我的問題是COW_1641輸出的值為什么是0X7E,經過&運算后不應該是0x00嗎?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:332214 發表于 2021-5-14 17:44 | 只看該作者
不知道你那邊啥問題 0x80是P0的指針地址,你聲明的COW_1641其實地址是0x81,你后面的操作 是想給這個引腳置高 還是 置低?或者你想對P0所有管腳移位操作?
回復

使用道具 舉報

板凳
ID:908996 發表于 2021-5-14 23:53 | 只看該作者
啊哈哈123 發表于 2021-5-14 17:44
不知道你那邊啥問題 0x80是P0的指針地址,你聲明的COW_1641其實地址是0x81,你后面的操作 是想給這個引腳置 ...

我的電路圖如下:


8*8的行共陽點陣,74ls164驅動行,74hc154驅動列。164得到數據后,154導通,該列指定的led亮。目前給的數據是0x7e,就是一行里中間6個led亮,兩邊的led不亮。
代碼如下:

#include <reg52.h>
#include <intrins.h>
#include <stdio.h>

#define ITM_Port8(n)    (*((volatile unsigned char *)(0xE0000000+4*n)))
#define ITM_Port16(n)    (*((volatile unsigned short*)(0xE0000000+4*n)))
#define ITM_Port32(n)    (*((volatile unsigned long *)(0xE0000000+4*n)))

#define DEMCR       (*((volatile unsigned long *)(0xE000EDFC)))
#define TRCENA       0x01000000

char putchar(char s)
{
    SBUF=s;
   while(TI==0)
   {
      _nop_();
   }
   TI=0;

}

sbit COW_1641 = P0^0;  
//sbit COW_1642 = P0^2;
sbit CLK_1641 = P0^1;  
sbit CLK_1642 = P0^3;
sbit CLE_1641 = P0^2;

unsigned char colcount[16]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

unsigned char code image[8] = {0x00,0x00,0x7E,0x50,0x50,0x50,0x00,0x00};

unsigned char i = 0;   //動態掃描的索引
unsigned int cnt = 0;  //記錄 T0 中斷次數
unsigned char flag1s = 0;  //1 秒定時標志


void delay(unsigned int delay){
        unsigned char i;
        for(;delay>0;delay--)
                for(i=0;i<150;i++);
}


void main(){
        unsigned long sec = 0;  //記錄經過的秒數


    TMOD = 0x01;  //設置 T0 為模式 1
    TH0  = 0xFC;  //為 T0 賦初值 0xFC67,定時 1ms
    TL0  = 0x67;
    ET0  = 1;     //使能 T0 中斷
    TR0  = 1;     //啟動 T0
        while ( 1 ) {


        }
}

/* 定時器 0 中斷服務函數 */
void InterruptTimer0() interrupt 1 {
        unsigned int col,coldata,speed;
        unsigned char temp;
    TH0 = 0xFC;  //重新加載初值
    TL0 = 0x67;

    //以下代碼完成數碼管動態掃描刷新
    for (col=0;col<8;col++){
                P2=col;
                //temp=image[col];
                temp=0x7E;
                printf("col = %u  temp 1 = 0x%X \n", col, temp);
                for(coldata=0;coldata<8;coldata++){
                       printf("coldata = %u  temp&0x80 = 0x%X \n",coldata,temp);
                       CLK_1641 = 0;
                       COW_1641=temp&0x80;
                       printf("coldata = %u  COW_1641 = 0x%X \n",coldata,COW_1641);
                       CLK_1641 = 1;
                       temp<<=1;
                       printf("temp <<1  = 0x%X \n",temp);
               }
        }
}


代碼都是網上找的現成的例子。然后再proteus里一步一步運行的時候,顯示的效果是一行里有兩個相鄰的led不亮,而且這兩個不亮的led在這行里的位置是隨機的,還沒有找到規律,運行效果我截圖了。

于是我就在程序里用printf輸出幾個值,看看是哪里的問題。現在的沒有找到問題的原因。我的問題如下:
1、這樣的運行效果代碼哪里有問題,該如何修改?
2、還有就是我原來的問題,COW_1641=temp&0x01運算之后,printf函數輸出COW_1641應該是什么值?


LED3.jpg (378.03 KB, 下載次數: 77)

LED3.jpg

LED3_1.jpg (192.08 KB, 下載次數: 72)

LED3_1.jpg

LED3_2.jpg (191.17 KB, 下載次數: 78)

LED3_2.jpg

LED3_3.jpg (191.03 KB, 下載次數: 74)

LED3_3.jpg
回復

使用道具 舉報

地板
ID:230742 發表于 2021-5-15 00:11 | 只看該作者
不明白你是想做什么。
sbit COW_1641 = P0^0;    是定義單片機的一個引腳。
就算是用這個引腳去計算,也要先讀一下這個引腳的狀態啊,是高,還是底啊。
比如 NEW=COW_1641;
在用NEW去計算啊。
不明白你是研究C語言編程,還是研究單片機編程的。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

5#
ID:917199 發表于 2021-5-15 14:58 | 只看該作者
如附圖
回復

使用道具 舉報

6#
ID:822755 發表于 2021-5-15 15:16 | 只看該作者
因為C51有些特殊,格式化要用%b來修飾char類型
printf("col = %u  temp 1 = 0x%bX \n", col, temp);
回復

使用道具 舉報

7#
ID:908996 發表于 2021-5-15 16:07 | 只看該作者
KongQuan 發表于 2021-5-15 15:16
因為C51有些特殊,格式化要用%b來修飾char類型
printf("col = %u  temp 1 = 0x%bX \n", col, temp);

加了%b參數后,輸出的值就是正常的值了,謝謝!

我設計的效果是一行中間6個led亮,兩邊的兩個led不亮,程序運行起來如前面截圖所示,那么各位能否幫我看看代碼哪里有問題,要怎么改?  謝謝!!
回復

使用道具 舉報

8#
ID:919834 發表于 2021-5-15 17:30 | 只看該作者
&運算就是這樣。11為1 01 為0  
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产成人精品一区二 | www.欧美| 久久福利电影 | 91精品国产91久久久久久最新 | 欧美韩一区二区三区 | 91精品国产91久久久久久最新 | 美女视频黄色的 | 日韩av成人在线 | 国产精品久久久久久久午夜 | 一区二区三区在线播放视频 | 国产精品美女久久久久久免费 | 欧美激情精品久久久久久变态 | 免费成人高清 | 国产精品久久久久久久白浊 | 国产精彩视频在线观看 | 国产乱码久久久久久 | 成人国产免费视频 | h视频免费在线观看 | 欧美一区免费 | 在线不卡视频 | 欧美日韩1区2区3区 欧美久久一区 | 中文字幕免费观看 | 日韩欧美第一页 | 欧美日本亚洲 | 99re热精品视频国产免费 | 在线一区二区国产 | 日韩三区在线观看 | 日本精品一区二区三区在线观看视频 | 一级看片免费视频囗交动图 | 国产激情视频网站 | 久久久国产一区二区三区四区小说 | 超碰97免费在线 | 国精日本亚洲欧州国产中文久久 | 久久久.com| 亚洲毛片在线观看 | 中文字幕日韩一区 | 中文字幕亚洲免费 | 免费黄色的视频 | 久久久高清 | 国产精品乱码一区二三区小蝌蚪 | 亚洲欧美一区二区三区在线 |