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

標題: 單片機程序問題 請問,這樣的表達有沒有問題? [打印本頁]

作者: 木示    時間: 2024-3-1 19:32
標題: 單片機程序問題 請問,這樣的表達有沒有問題?
各位大神,這樣的描述對不對,總感覺怪怪的,感謝指點一下.
  1. #inclde"STC8GXXXX.H"

  2.   sbit P1^1=LED;  燈具
  3.         sbit P1^2=SW;   開關
  4.         
  5. void main()
  6. {
  7.     P0M0 = 0x00; P0M1 = 0x00;
  8.     P1M0 = 0x00; P1M1 = 0x00;
  9.     P2M0 = 0x00; P2M1 = 0x00;
  10.     P3M0 = 0x00; P3M1 = 0x00;
  11.     P4M0 = 0x00; P4M1 = 0x00;
  12.     P5M0 = 0x00; P5M1 = 0x00;
  13.     P6M0 = 0x00; P6M1 = 0x00;
  14.     P7M0 = 0x00; P7M1 = 0x00;

  15.         
  16.         
  17.     while (1)
  18.     {
  19.         if (LED == 0xff)  // 燈亮時,開關關閉
  20.         {
  21.             SW = 0x00;   // 設置P5口輸出為高電平
  22.         }
  23.         else
  24.         {
  25.            LED = 0x00;     // 燈不亮
  26.                                          SW =0xff;      //  開關開啟
  27.         }
  28.                         
  29.                                 。。。。。
  30.                                 
  31.                 switch(num)
  32.                         {
  33.                                         case 1:SW=~SW;LED=~LED;break;
  34.                                         case 2:;break;
  35.                                         case 3:;break;
  36.                                         case 4:;break;
  37.                                         case 5:;break;
  38.     }
  39. }
復制代碼



復制代碼


1.png (21.51 KB, 下載次數: 93)

1.png

1709292043548.jpg (3.81 MB, 下載次數: 99)

1709292043548.jpg

作者: devcang    時間: 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;
                }
    }
}
作者: xiaobendan001    時間: 2024-3-2 07:17
devcang 發表于 2024-3-1 23:37
#inclde"STC8GXXXX.H"

sbit LED = P1^1;        //燈具

~也不是位操作,我還沒試過用在位操作會怎樣
作者: taotie    時間: 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之間循環  
    }  
}
請注意,上述代碼只是一個示例,你可能需要根據你的具體硬件和需求進行修改。
作者: 明日之星8    時間: 2024-3-2 11:09
波浪號“~”是按位取反,無論是1位,8位,還是32位,運算后每一位都會變成
和之前相反的數字,之前是1就會變成0,之前是0就會變成1。
作者: dyx811    時間: 2024-3-2 13:40
文心一言這么厲害嗎?
看不出來有什么漏洞。
如何使用這個用這個超級智能的工具呢 ?
好想讓她幫我寫代碼
作者: Hephaestus    時間: 2024-3-2 15:34
為什么不編譯一下呢?
作者: nxplpcexpresso    時間: 2024-3-6 12:49
這樣表達也是可以的。反過來一般情況下。




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 91免费入口 | 久久亚洲一区二区三区四区 | 欧美综合视频 | 久久久久亚洲av毛片大全 | 欧美日本亚洲 | 在线精品一区二区 | 国产综合精品一区二区三区 | 欧产日产国产精品视频 | 国产日韩精品视频 | 欧美一级久久 | 国产精品99久久久久久久久久久久 | 欧美日韩高清在线观看 | 国产欧美在线视频 | 亚洲午夜精品久久久久久app | 精品一区二区三区四区外站 | 精品99久久久久久 | 日韩欧美国产精品一区二区 | 91色视频在线观看 | 永久www成人看片 | 午夜久草| 亚洲成人久久久 | 亚洲一二三区不卡 | 国产精品久久久久久久久久久久久久 | 国产丝袜一区二区三区免费视频 | www.青青草 | 2023亚洲天堂 | 国产精品久久欧美久久一区 | 日本精品一区二区三区在线观看视频 | 亚洲欧美日韩中文字幕一区二区三区 | 中文字幕第49页 | 久久久福利 | 久久久久久国产 | 国产一区二区三区四区五区加勒比 | 99精品亚洲国产精品久久不卡 | 免费日韩av | 亚洲精品www. | 国产精品黄色 | 无码日韩精品一区二区免费 | 国内久久精品 | 欧美极品一区二区 | 欧美成人h版在线观看 |