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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

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

[復制鏈接]
跳轉到指定樓層
樓主
各位大神,這樣的描述對不對,總感覺怪怪的,感謝指點一下.
  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
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
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;
                }
    }
}
回復

使用道具 舉報

板凳
ID:1109793 發表于 2024-3-2 07:17 | 只看該作者
devcang 發表于 2024-3-1 23:37
#inclde"STC8GXXXX.H"

sbit LED = P1^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之間循環  
    }  
}
請注意,上述代碼只是一個示例,你可能需要根據你的具體硬件和需求進行修改。
回復

使用道具 舉報

5#
ID:1110945 發表于 2024-3-2 11:09 | 只看該作者
波浪號“~”是按位取反,無論是1位,8位,還是32位,運算后每一位都會變成
和之前相反的數字,之前是1就會變成0,之前是0就會變成1。
回復

使用道具 舉報

6#
ID:34149 發表于 2024-3-2 13:40 | 只看該作者
文心一言這么厲害嗎?
看不出來有什么漏洞。
如何使用這個用這個超級智能的工具呢 ?
好想讓她幫我寫代碼
回復

使用道具 舉報

7#
ID:883242 發表于 2024-3-2 15:34 | 只看該作者
為什么不編譯一下呢?
回復

使用道具 舉報

8#
ID:1102070 發表于 2024-3-6 12:49 來自手機 | 只看該作者
這樣表達也是可以的。反過來一般情況下。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕 视频一区 | 国产精品无码专区在线观看 | 国产精品久久久久999 | 免费在线一区二区 | 国产午夜精品久久久久免费视高清 | 欧美成人一区二区三区 | 国产高清在线 | 欧美久久一区 | 激情欧美日韩一区二区 | 看a网站| 欧美成人一区二区三区片免费 | 色一级| 欧美性a视频 | 国产一区免费视频 | 国产欧美日韩综合精品一区二区 | 欧美日韩中文字幕在线 | 综合久 | 亚洲欧美视频一区二区 | 久久久国产一区二区三区 | .国产精品成人自产拍在线观看6 | 日本一区二区高清不卡 | 国产精品视频一二三 | 国产成人精品一区二区三区四区 | 国产精品国产a | 天天色综网| 成人精品一区二区三区中文字幕 | 日韩欧美一级精品久久 | 欧美精品v国产精品v日韩精品 | 色播视频在线观看 | 一级做a| 色偷偷888欧美精品久久久 | 手机看片在线播放 | 一级毛片免费看 | 国产福利资源在线 | 日韩中文一区 | 日韩欧美1区2区 | 精品国产乱码久久久久久蜜柚 | 亚洲国产精品久久人人爱 | 欧美在线视频二区 | 久久99精品久久久97夜夜嗨 | 日韩精品免费 |