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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機(jī)不同的io口怎樣用十六進(jìn)制賦值?

  [復(fù)制鏈接]
ID:198189 發(fā)表于 2020-4-3 02:01 | 顯示全部樓層 |閱讀模式
如:p1.0 p2.4 p3.3 p3.6 整合成一個如下用:mn(0xff)。
本人新手,希望大佬您的指點,鄙人不勝感激!

評分

參與人數(shù) 1黑幣 +5 收起 理由
hack2800 + 5

查看全部評分

回復(fù)

使用道具 舉報

ID:235200 發(fā)表于 2020-4-3 08:21 | 顯示全部樓層
把各IO口的低位排右,8根IO口線依次為高電平為1,低電平為0排好,如11110100,按第4位轉(zhuǎn)換成十六進(jìn)制就行,上述排列為F4
回復(fù)

使用道具 舉報

ID:470332 發(fā)表于 2020-4-3 08:29 | 顯示全部樓層
你把十六進(jìn)制賦值對應(yīng)的位提取出來,然后分別賦值給那些IO口,約定好哪個位對應(yīng)那個IO口
回復(fù)

使用道具 舉報

ID:601639 發(fā)表于 2020-4-3 08:52 | 顯示全部樓層
不行吧,都不是一組口
回復(fù)

使用道具 舉報

ID:478073 發(fā)表于 2020-4-3 09:18 | 顯示全部樓層
用位域,具體你上網(wǎng)上參考一下別人的代碼,用到的基本知識是結(jié)構(gòu)體與共用體
回復(fù)

使用道具 舉報

ID:695749 發(fā)表于 2020-4-3 09:20 | 顯示全部樓層
可以打開Keil編程的#include<reg51.h>就可以看到以下內(nèi)容:
/*  BYTE Register  */
sfr P0   = 0x80;
sfr P1   = 0x90;
sfr P2   = 0xA0;
sfr P3   = 0xB0;根據(jù)以上這個,可以確定你提出的問題,謝謝分享!
回復(fù)

使用道具 舉報

ID:478073 發(fā)表于 2020-4-3 09:54 | 顯示全部樓層
還是給你看看是行徑 回事,如下:

#include <stdio.h>

//下面是你要整合的I/O口
/*
#define  SEG1 p1.0
#define  SEG2 p2.4
#define  SEG2 p3.3
#define  SEG2 p3.6
.................
*/
#define  uint unsigned  int
union test{
    uint reg;
    struct {
        uint SEG1:1;
        uint SEG2:1;
        uint SEG3:1;
        uint SEG4:1;
        uint SEG5:1;
        uint SEG6:1;
        uint SEG7:1;
        uint SEG8:1;


    }bits;
};


int main(void)
{
    union test mytest;

    mytest.reg = 0x3a;//這里是你要放的數(shù)據(jù),可以在C編譯器上改變數(shù)據(jù)看執(zhí)行結(jié)果


    printf("SEG1=%x\n", mytest.bits.SEG1);
    printf("SEG2=%x\n", mytest.bits.SEG2);
    printf("SEG3=%x\n", mytest.bits.SEG3);
    printf("SEG4=%x\n", mytest.bits.SEG4);
    printf("SEG5=%x\n", mytest.bits.SEG5);
    printf("SEG6=%x\n", mytest.bits.SEG6);
    printf("SEG7=%x\n", mytest.bits.SEG7);
    printf("SEG8=%x\n", mytest.bits.SEG8);



    return 0;
}

回復(fù)

使用道具 舉報

ID:198189 發(fā)表于 2020-4-3 17:23 | 顯示全部樓層
謝謝各位大佬指點。
回復(fù)

使用道具 舉報

ID:352458 發(fā)表于 2020-4-3 18:26 | 顯示全部樓層
七樓說的挺好的,結(jié)構(gòu)體與共用體就行
回復(fù)

使用道具 舉報

ID:890348 發(fā)表于 2021-3-10 14:48 | 顯示全部樓層
各位大佬,我按照7樓的操作去給IO口賦值,可以實現(xiàn)聯(lián)合體里的數(shù)據(jù)改變,但是IO口沒有相應(yīng)的變化
1615358837(1).png
1615358802(1).png
回復(fù)

使用道具 舉報

ID:890348 發(fā)表于 2021-3-10 14:51 | 顯示全部樓層
各位大佬,我按照7樓大佬的操作去做,對聯(lián)合體的color賦值,最后的結(jié)果并沒有完成對IO的賦值,只有結(jié)構(gòu)體里的變量改變,請問是哪里有問題嗎
#define   LED5_P                P24
#define   LED4_P                P25
#define   LED3_P                P26
#define   LED2_P                P01
#define   LED1_P                P27
#define   LED_R                 P03
#define   LED_G                 P02
#define   LED_B                 P00
typedef union {
        u16 color;
        struct {
                u16 LED1_P:1;//低位
                u16 LED2_P:1;
                u16 LED3_P:1;
                u16 LED4_P:1;
                u16 LED5_P:1;
                u16 LED_R:1;
                u16 LED_G:1;
                u16 LED_B:1;//高位
        }bits;
}led_rgb_t;

extern led_rgb_t  led_rgb;
回復(fù)

使用道具 舉報

ID:368599 發(fā)表于 2021-5-29 22:49 | 顯示全部樓層
青YU 發(fā)表于 2021-3-10 14:51
各位大佬,我按照7樓大佬的操作去做,對聯(lián)合體的color賦值,最后的結(jié)果并沒有完成對IO的賦值,只有結(jié)構(gòu)體里 ...

怎么樣?解決沒?
回復(fù)

使用道具 舉報

ID:975927 發(fā)表于 2021-11-9 19:46 | 顯示全部樓層
青YU 發(fā)表于 2021-3-10 14:51
各位大佬,我按照7樓大佬的操作去做,對聯(lián)合體的color賦值,最后的結(jié)果并沒有完成對IO的賦值,只有結(jié)構(gòu)體里 ...

我也是這個問題,有好的解決方法嗎
回復(fù)

使用道具 舉報

ID:624769 發(fā)表于 2021-11-9 20:39 | 顯示全部樓層
1027669350 發(fā)表于 2021-11-9 19:46
我也是這個問題,有好的解決方法嗎

又是你???……,  說了沒有好方法,不管是聯(lián)合體也好,函數(shù)也好,說到底,到最后實施的時候,還是要分別對每個IO進(jìn)行賦值,你看了單片機(jī)輸入輸出結(jié)構(gòu),對總線的定義有了理解,就不會這么問了。
回復(fù)

使用道具 舉報

ID:161164 發(fā)表于 2021-11-10 09:35 | 顯示全部樓層
1027669350 發(fā)表于 2021-11-9 19:46
我也是這個問題,有好的解決方法嗎

void IO_out(uchar dat)
{
  P34=dat&0x80;
  P30=dat&0x40;
  P12=dat&0x20;
  P10=dat&0x10;
  P30=dat&0x08;
  P33=dat&0x04;
  P13=dat&0x02;
  P11=dat&0x01;
}

評分

參與人數(shù) 1黑幣 +10 收起 理由
hack2800 + 10

查看全部評分

回復(fù)

使用道具 舉報

ID:57657 發(fā)表于 2021-11-10 14:11 | 顯示全部樓層
單片機(jī)、不管是什么數(shù)字芯片只能處理二進(jìn)制,十六進(jìn)制是編譯器的寫法。
回復(fù)

使用道具 舉報

ID:114301 發(fā)表于 2023-6-23 14:40 | 顯示全部樓層
lkc8210 發(fā)表于 2021-11-10 09:35
void IO_out(uchar dat)
{
  P34=dat&0x80;

感謝分享!
回復(fù)

使用道具 舉報

ID:1034262 發(fā)表于 2023-6-23 16:55 | 顯示全部樓層
位操作,一位一位傳輸。
回復(fù)

使用道具 舉報

ID:965189 發(fā)表于 2023-6-24 04:20 來自手機(jī) | 顯示全部樓層
樓主想對端口重組
回復(fù)

使用道具 舉報

ID:53813 發(fā)表于 2024-12-19 08:57 | 顯示全部樓層
lkc8210 發(fā)表于 2021-11-10 09:35
void IO_out(uchar dat)
{
  P34=dat&0x80;

AI 修復(fù)了下
void IO_out(uchar dat) {
    // 假設(shè)P34、P30、P33、P12、P10、P13、P11是單片機(jī)上的引腳
    // 這里使用位與運(yùn)算和位掩碼來確定每個引腳的狀態(tài)
    P34 = (dat & 0x80) ? 1 : 0; // 如果dat的最高位是1,則P34=1;否則P34=0
    P30 = (dat & 0x40) ? 1 : 0; // 如果dat的次高位是1,則P30=1(注意這里修改了原代碼中的重復(fù)錯誤)
    P12 = (dat & 0x20) ? 1 : 0;
    P10 = (dat & 0x10) ? 1 : 0;
    // 修正了P30的重復(fù)使用,改為P31(假設(shè)存在P31引腳)
    P31 = (dat & 0x08) ? 1 : 0;
    P33 = (dat & 0x04) ? 1 : 0;
    P13 = (dat & 0x02) ? 1 : 0;
    P11 = (dat & 0x01) ? 1 : 0; // 如果dat的最低位是1,則P11=1;否則P11=0
}
回復(fù)

使用道具 舉報

ID:192020 發(fā)表于 2024-12-19 10:00 | 顯示全部樓層
三極管一樣的人 發(fā)表于 2024-12-19 08:57
AI 修復(fù)了下
void IO_out(uchar dat) {
    // 假設(shè)P34、P30、P33、P12、P10、P13、P11是單片機(jī)上的引 ...

條件運(yùn)算符不用也行,可以試一下,結(jié)果一樣的
回復(fù)

使用道具 舉報

ID:92781 發(fā)表于 2024-12-19 11:35 | 顯示全部樓層
void mn(uchar dat)//從dat的低位到高位依次給io賦值
{
p10= dat & 1 ;
p24= (dat & (1 << 1))>>1 ;
p33= (dat & (1 << 2))>>2 ;
p36= (dat & (1 << 3))>>3 ;
}
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 啪啪网页 | 日韩中文av在线 | 看片国产| 精品一区二区三区不卡 | 狠狠色综合欧美激情 | 国产www成人 | 成人日b视频 | www国产亚洲精品久久网站 | 中文字幕高清免费日韩视频在线 | 一级看片| 九九导航 | 日韩精品免费视频 | 精品久久久久久国产 | 亚洲国产精品日韩av不卡在线 | 午夜视频在线免费观看 | 极品在线 | 国产精品视屏 | 亚洲欧美日韩一区 | 欧美久久一区二区三区 | 欧美理伦片在线播放 | av手机在线播放 | 欧美一区精品 | 午夜一级大片 | 久久国产精品视频 | www.av在线| 国产精品永久免费观看 | 中文在线一区二区 | 91欧美精品成人综合在线观看 | 人人干人人看 | 亚洲欧美日本国产 | 免费国产视频在线观看 | 欧美一卡二卡在线观看 | 国产色播av在线 | 毛片久久久 | 视频一区在线播放 | 成人精品一区二区 | 亚洲h视频 | 丁香五月缴情综合网 | 综合九九 | 国产一区二区精品在线观看 | 日本免费网 |