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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

C51單片機注解處的書寫合理不?

[復制鏈接]
跳轉到指定樓層
樓主
ID:483865 發表于 2021-1-17 19:48 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
單片機源程序如下:
#include<reg52.h>

sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
sbit ADDR2 = P1^2;
sbit ADDR1 = P1^1;
sbit ADDR0 = P1^0;

bit flag500ms = 0;
unsigned char T0RH = 0;
unsigned char T0RL = 0;

void ConfigTimer0(unsigned int ms);

void main()
{
        unsigned char i = 0;
        unsigned char LedBuf[8] = {0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
        EA = 1;
        ConfigTimer0(10);
        ENLED = 0;
        ADDR3 = 1;
        ADDR2 = 1;
        ADDR1 = 1;
        ADDR0 = 0;
        while(1)
        {
                if(flag500ms == 1)
                {
                        flag500ms = 0;
                        P0 = LedBuf[i++];        //這里合理不?
                }
        }
}

void ConfigTimer0(unsigned int ms)
{
        unsigned long tmp;
        tmp = 11059200/12;
        tmp = (tmp * ms)/1000;
        tmp = 65536 - tmp;
        tmp = tmp + 12;
        T0RH = (unsigned char)(tmp >> 4);
        T0RL = (unsigned char)tmp;
        TMOD &= 0xF0;
        TMOD |= 0x01;
        TH0 = T0RL;
        TL0 = T0RL;
        ET0 = 1;
        TR0 = 1;
}

void interruptTimer0() interrupt 1
{
        static unsigned char tmr500ms = 0;
        TH0 = T0RH;
        TL0 = T0RL;
        tmr500ms++;
        if(tmr500ms >= 50)
        {
                tmr500ms = 0;
                flag500ms = 1;
        }

}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:68468 發表于 2021-1-17 20:23 | 只看該作者
注解處問題不大吧,但LedBuf[]數組只有8個,i累加超過7以后就.......

評分

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

查看全部評分

回復

使用道具 舉報

板凳
ID:483865 發表于 2021-1-17 20:35 | 只看該作者
wysh_2004 發表于 2021-1-17 20:23
注解處問題不大吧,但LedBuf[]數組只有8個,i累加超過7以后就.......

代碼是我參考師傅的代碼編的,在開發板上跑正常。讓我自己懷疑這個i值,要不要加歸零的語句。
回復

使用道具 舉報

地板
ID:415064 發表于 2021-1-17 21:30 | 只看該作者
這個EA是什么我沒看懂啊,可以看下內存EA 或者ENLED 的地址,大概率LedBuf后面的地址是ENLED或者是沒有用賦過初值的。也就是i到7之后就去了LedBuf[8],而LedBuf[8]在內存的值恰好是0.所以說此時i=0;也就解釋了為什么程序可以正常運行
如果你在 unsigned char LedBuf[8] = {0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F}后,EA = 1前加一句 unsigned char j = 7;這樣就會一直為LedBuf[7],但是程序沒有卡死的
回復

使用道具 舉報

5#
ID:483865 發表于 2021-1-18 08:03 | 只看該作者
謝謝你的回復,這樣改代碼能跑是巧合。我改用數碼管顯示,發現這樣的錯誤了。
回復

使用道具 舉報

6#
ID:592807 發表于 2021-1-18 08:55 | 只看該作者
你的  i 是哪來的?聲明了沒有?哪種類型?超出數組范圍怎么處理?
回復

使用道具 舉報

7#
ID:367934 發表于 2021-1-18 09:09 | 只看該作者
要是循環必須歸零,否則會超出數組范圍。可以在判斷哪里加一個條件,
回復

使用道具 舉報

8#
ID:483865 發表于 2021-1-18 14:46 | 只看該作者
適得府君書 發表于 2021-1-18 09:09
要是循環必須歸零,否則會超出數組范圍。可以在判斷哪里加一個條件,

嗯,明白了。謝謝。
回復

使用道具 舉報

9#
ID:872416 發表于 2021-1-18 14:55 來自手機 | 只看該作者
i循環8次后重新賦值0
回復

使用道具 舉報

10#
ID:878845 發表于 2021-1-19 13:44 | 只看該作者
只是書寫規范問題,實際這里運行沒問題,但寫軟件來說防呆是必要的,否則以后出什么事還是要回來找的
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 综合国产| 成人在线看片 | 国产情侣久久 | 日韩精品av一区二区三区 | 成人在线观看亚洲 | 欧美一区二区免费电影 | 最新高清无码专区 | 欧美8一10sex性hd | 日韩一| 午夜在线影院 | 激情三区 | 黄色免费看 | 国产午夜亚洲精品不卡 | 午夜视频免费在线观看 | 午夜免费视频 | 精品国产一区二区三区久久狼黑人 | 精久久 | 日韩综合在线 | 亚州成人 | 久久久123 | 亚洲天堂精品一区 | 日韩在线播放一区 | 精品一区久久 | 羞羞涩涩在线观看 | av香蕉| 日本成人综合 | 日本黄色大片免费 | 色综合天天天天做夜夜夜夜做 | 亚洲日日夜夜 | 亚洲精品一区二区在线观看 | 亚洲欧美视频一区 | 精品久久99 | 在线免费观看a级片 | 欧美一区二区三区在线播放 | 国产玖玖 | 一区二区三区四区不卡 | 激情91 | 最新国产精品视频 | 欧美高清性xxxxhd | 日韩精品av| 国产高清在线精品 |