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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

單片機程序問題 請問,這樣的表達有沒有問題?

查看數: 1745 | 評論數: 7 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2024-3-1 19:32

正文摘要:

各位大神,這樣的描述對不對,總感覺怪怪的,感謝指點一下. #inclde"STC8GXXXX.H"   sbit P1^1=LED;  燈具         sbit P1^2=SW;   開關   &n ...

回復

ID:1102070 發表于 2024-3-6 12:49
這樣表達也是可以的。反過來一般情況下。
ID:883242 發表于 2024-3-2 15:34
為什么不編譯一下呢?
ID:34149 發表于 2024-3-2 13:40
文心一言這么厲害嗎?
看不出來有什么漏洞。
如何使用這個用這個超級智能的工具呢 ?
好想讓她幫我寫代碼
ID:1110945 發表于 2024-3-2 11:09
波浪號“~”是按位取反,無論是1位,8位,還是32位,運算后每一位都會變成
和之前相反的數字,之前是1就會變成0,之前是0就會變成1。
ID:342822 發表于 2024-3-2 10:52
文心一言人工智能對你的問題回復:
從你給出的代碼片段來看,存在幾個問題。以下是對這些問題的解釋和修正建議:

頭文件包含錯誤:

c
#inclde"STC8GXXXX.H"
這一行應該是:

c
#include "STC8GXXXX.H"
sbit定義錯誤:

c
sbit P1^1=LED;  燈具  
sbit P1^2=SW;   開關
sbit的定義方式可能不正確。通常,sbit`是用來定義單片機某個位地址上的單個位的,但具體定義方式依賴于你使用的單片機庫。正確的定義方式可能類似于:

c
sbit LED = P1^1;  // 定義P1.1為LED  
sbit SW = P1^2;   // 定義P1.2為SW
在main函數中定義變量:
在main函數中,你使用了num這個變量,但沒有定義它。你需要在使用之前定義它,例如:

c
unsigned char num = 0;
邏輯錯誤:
在while(1)循環中,你檢查了LED的值,但LED是一個sbit,它應該是一個位地址,不應該直接與0xff比較。你可能是想檢查P1的某個位來確定LED的狀態。
switch語句中未使用的變量:
在switch語句中,你使用了num變量,但在while(1)循環中并沒有修改它的值,這可能導致switch語句中的代碼永遠不會被執行。
邏輯混亂:
在while(1)循環中,你先檢查了LED的狀態,然后又設置了LED和SW的值。這種邏輯可能不是你想要的。
基于上述分析,以下是一個修改后的代碼示例:

c
#include "STC8GXXXX.H"  
  
sbit LED = P1^1;  // 定義P1.1為LED  
sbit SW = P1^2;   // 定義P1.2為SW  
  
void main()  
{  
    P0M0 = 0x00; P0M1 = 0x00;  
    P1M0 = 0x00; P1M1 = 0x00;  
    P2M0 = 0x00; P2M1 = 0x00;  
    P3M0 = 0x00; P3M1 = 0x00;  
    P4M0 = 0x00; P4M1 = 0x00;  
    P5M0 = 0x00; P5M1 = 0x00;  
    P6M0 = 0x00; P6M1 = 0x00;  
    P7M0 = 0x00; P7M1 = 0x00;  
  
    unsigned char num = 0; // 定義并初始化num變量  
  
    while (1)  
    {  
        if (SW == 0)  // 假設SW為0時表示開關關閉,LED亮  
        {  
            LED = 1;   // 設置LED亮  
        }  
        else  
        {  
            LED = 0;   // 設置LED滅  
        }  
  
        // 根據num的值執行相應的操作  
        switch(num)  
        {  
            case 1:  
                SW = ~SW; // 切換SW的狀態  
                LED = ~LED; // 切換LED的狀態  
                break;  
            // 其他case可以根據需要添加  
            default:  
                break;  
        }  
  
        // 可以根據需要修改num的值,例如:  
        // num = (num + 1) % 6; // 使num在1到5之間循環  
    }  
}
請注意,上述代碼只是一個示例,你可能需要根據你的具體硬件和需求進行修改。
ID:1109793 發表于 2024-3-2 07:17
devcang 發表于 2024-3-1 23:37
#inclde"STC8GXXXX.H"

sbit LED = P1^1;        //燈具

~也不是位操作,我還沒試過用在位操作會怎樣
ID:277550 發表于 2024-3-1 23:37
#inclde"STC8GXXXX.H"

sbit LED = P1^1;        //燈具
sbit SW  = P1^2;        //開關
   
void main(){
    P0M0 = 0x00; P0M1 = 0x00;
    P1M0 = 0x00; P1M1 = 0x00;
    P2M0 = 0x00; P2M1 = 0x00;
    P3M0 = 0x00; P3M1 = 0x00;
    P4M0 = 0x00; P4M1 = 0x00;
    P5M0 = 0x00; P5M1 = 0x00;
    P6M0 = 0x00; P6M1 = 0x00;
    P7M0 = 0x00; P7M1 = 0x00;

      
      
    while (1){
        if(LED == 1){        // 燈亮時,開關關閉
            SW = 0;                // 設置P5口輸出為高電平
        }else{
           LED = 1;                // 燈不亮
                        SW = 1;                // 開關開啟
        }
                // 。。。。。。。
                switch(num){
                        case 1:SW=~SW;LED=~LED;break;
                        case 2:;break;
                        case 3:;break;
                        case 4:;break;
                        case 5:;break;
                }
    }
}

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91精品国产91久久综合桃花 | 97日韩精品| 国产免费观看久久黄av片涩av | 国产1区在线 | 日韩一区二区在线视频 | 成年网站在线观看 | 亚洲精品一区av在线播放 | 国产视频一区在线 | 在线免费黄色小视频 | 久久久99精品免费观看 | 久久av网站 | 在线视频a | 日本激情视频网 | 亚洲欧美激情国产综合久久久 | 自拍视频国产 | 中文字幕爱爱视频 | 羞羞的视频免费在线观看 | 91高清视频在线观看 | 成人av播放 | 亚洲成人精品 | 狠狠色综合网站久久久久久久 | 精精国产视频 | 91久久精品国产91久久 | 9久9久9久女女女九九九一九 | 午夜影院操 | 91久久精品国产 | 亚洲一区二区三区在线免费观看 | 视频在线亚洲 | 欧美free性 | 日本视频免费 | 日韩av手机在线观看 | 午夜影院网站 | 久久久成 | 精品成人69xx.xyz | 在线观看国产视频 | 日韩一区二区三区在线 | 成人免费视频网站在线看 | 亚洲精品一区二区三区蜜桃久 | 精品欧美一区二区三区久久久 | 日韩欧美高清dvd碟片 | 欧美日韩综合一区 |