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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4458|回復(fù): 9
打印 上一主題 下一主題
收起左側(cè)

我想通過單片機(jī)定時(shí)器中斷來實(shí)現(xiàn)led的流水燈,可是程序出了點(diǎn)問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:474631 發(fā)表于 2019-2-3 23:06 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
目的是使led從左到右然后再從右到左 可是我的代碼只能實(shí)現(xiàn)一次從左到右然后就沒有l(wèi)ed亮(燈8個(gè))
我的思路是通過余數(shù)判斷是否移位到邊界然后轉(zhuǎn)向 我在草稿紙上也算過了發(fā)現(xiàn)沒什么問題啊 可是就是實(shí)現(xiàn)不了 求大神幫忙修改一下

單片機(jī)源程序:
#include "reg51.h"
typedef unsigned char u8;
typedef unsigned int u16;
#define led P0
u16 j=0;
void time()
{
        TMOD=0x01;
        TH0=0xfc;TL0=0x12;ET0=1;
        TR0=1;EA=1;
}
void main()
{
        u8 dat=0x01,k=0,i=0;
        time();
        while(1)
        { led=dat;
                if(j==500)
                {
                        j=0;
                        if(i/2==1)
                        {
                                dat=dat>>1;
                        }
                        if(i/2==0)
                        {
                                dat=dat<<1;
                        }
                        k++;
                        if(k%7==0&&k!=0)
                        i++;
          }
        }
}
void time0() interrupt 1
{
        TH0=0xfc;TL0=0x12;
        j++;
}

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

使用道具 舉報(bào)

沙發(fā)
ID:474631 發(fā)表于 2019-2-3 23:17 | 只看該作者
找到問題根源了。。。我把取余號寫成除號了。。還有應(yīng)該是k=7的時(shí)候才轉(zhuǎn)向。。。
回復(fù)

使用道具 舉報(bào)

板凳
ID:474631 發(fā)表于 2019-2-3 23:22 | 只看該作者
額 不過我還有一個(gè)問題 我這個(gè)i和k都是有上限的 如何讓他無限的流水?我這個(gè)程序當(dāng)i k其中一個(gè)大于65535的時(shí)候應(yīng)該就gg了
回復(fù)

使用道具 舉報(bào)

地板
ID:472242 發(fā)表于 2019-2-4 04:37 | 只看該作者
日本人孫笑川 發(fā)表于 2019-2-3 23:22
額 不過我還有一個(gè)問題 我這個(gè)i和k都是有上限的 如何讓他無限的流水?我這個(gè)程序當(dāng)i k其中一個(gè)大于65535的 ...

定時(shí)器的值是TH0=0xfc;T L0=0x12;同你i,k沒關(guān)系,而卻上限是255(typedef unsigned char u8),就算你最終到255,也會現(xiàn)重新從0開始運(yùn)行

評分

參與人數(shù) 2黑幣 +27 收起 理由
#include51.h + 15
站著說話不腰疼 + 12

查看全部評分

回復(fù)

使用道具 舉報(bào)

5#
ID:474677 發(fā)表于 2019-2-4 10:04 | 只看該作者
shuisheng60 發(fā)表于 2019-2-4 04:37
定時(shí)器的值是TH0=0xfc;T L0=0x12;同你i,k沒關(guān)系,而卻上限是255(typedef unsigned char u8),就算你最終到2 ...

樓主的定時(shí)中斷是用于控制流水燈的跑動間隔時(shí)間,跟循環(huán)次數(shù)沒有關(guān)系,樓主的意思應(yīng)該是實(shí)現(xiàn)無限循環(huán)
回復(fù)

使用道具 舉報(bào)

6#
ID:474677 發(fā)表于 2019-2-4 10:08 | 只看該作者
日本人孫笑川 發(fā)表于 2019-2-3 23:22
額 不過我還有一個(gè)問題 我這個(gè)i和k都是有上限的 如何讓他無限的流水?我這個(gè)程序當(dāng)i k其中一個(gè)大于65535的 ...

要實(shí)現(xiàn)無限循環(huán)就只不需要編寫這么復(fù)雜,while(1)主循環(huán)體就是一個(gè)無限循環(huán),你只需要包括一個(gè)從左到右再從右到左的單循環(huán)體就能實(shí)現(xiàn)了。
回復(fù)

使用道具 舉報(bào)

7#
ID:474677 發(fā)表于 2019-2-4 10:16 | 只看該作者
本帖最后由 iofree 于 2019-2-4 11:37 編輯

回帖審核時(shí)間太長了,主體循環(huán)這樣寫應(yīng)該就可以了,還要增加一個(gè)延時(shí)函數(shù):void delay()
這個(gè)延時(shí)函數(shù)不細(xì)寫了,自己定制吧
while(1)
{
  for(i=0;i<8;i++){
    led=dat;
    dat<<=1;    delay();
  }
  for(i=0;i<8;i++){
    led=dat;
    dat>>=1;
    delay();
  }
}
希望能實(shí)現(xiàn)你的要求,祝你成功

回復(fù)

使用道具 舉報(bào)

8#
ID:474631 發(fā)表于 2019-2-5 22:58 | 只看該作者
iofree 發(fā)表于 2019-2-4 10:16
回帖審核時(shí)間太長了,主體循環(huán)這樣寫應(yīng)該就可以了,還要增加一個(gè)延時(shí)函數(shù):void delay()
這個(gè)延時(shí)函數(shù)不細(xì) ...

牛b 謝謝老哥
回復(fù)

使用道具 舉報(bào)

9#
ID:401113 發(fā)表于 2019-2-9 00:34 | 只看該作者
iofree 發(fā)表于 2019-2-4 10:16
回帖審核時(shí)間太長了,主體循環(huán)這樣寫應(yīng)該就可以了,還要增加一個(gè)延時(shí)函數(shù):void delay()
這個(gè)延時(shí)函數(shù)不細(xì) ...

我覺得的這樣寫不行,<<會把前面的數(shù)據(jù)擠掉,后面的補(bǔ)0(>>同理),循環(huán)8次dat的值就成了0x00,這樣燈就不亮了。
回復(fù)

使用道具 舉報(bào)

10#
ID:401113 發(fā)表于 2019-2-9 00:48 | 只看該作者
iofree 發(fā)表于 2019-2-4 10:16
回帖審核時(shí)間太長了,主體循環(huán)這樣寫應(yīng)該就可以了,還要增加一個(gè)延時(shí)函數(shù):void delay()
這個(gè)延時(shí)函數(shù)不細(xì) ...

這個(gè)可以,我試過很多遍了
        while(1)
        {
                    led=dat;
                  while(j!=500);
                  j=0;       
                  for(i=0;i<7;i++)
                  {
                       
                    dat<<=1;
                    led=dat;
                        while(j!=500);
                        j=0;
                  }
                  for(i=0;i<7;i++)
                  {
                    
                    dat>>=1;
                        led=dat;
                        while(j!=500);
                        j=0;
              }
        }
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产aⅴ成人精品无吗 亚洲精品久久久一区二区三区 | 国产区在线 | 国产精品一级 | 久草视频网站 | 亚洲视频免费在线 | 精彩视频一区二区三区 | 国产一区 | 国产精品久久久久久久午夜片 | 日韩在线中文字幕 | 日本久久综合 | 国产亚洲精品美女久久久久久久久久 | 麻豆久久| 精品国产乱码久久久久久丨区2区 | 人人九九精 | 亚洲不卡视频 | 日日干日日操 | 成人在线观看免费 | 天天射网站 | 国产精品免费大片 | 亚洲欧洲色视频 | 欧州一区| 日韩在线视频播放 | 国产一区二区精品 | 国产成人亚洲精品 | 1级黄色大片 | 欧美一级欧美一级在线播放 | 中文字幕的av | 亚洲成人一区二区在线 | 欧美性生活一区二区三区 | 看羞羞视频免费 | 国产精品99久久久久久动医院 | 99tv| 欧美成人精品二区三区99精品 | 日本精品久久久一区二区三区 | 欧美美女被c | 亚洲精品成人 | 观看av | 91影院在线观看 | 黑人巨大精品欧美一区二区免费 | 欧洲一区二区三区 | 亚洲精品99 |