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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機延時10秒 具體表現在哪?只知道5秒

  [復制鏈接]
跳轉到指定樓層
樓主
ID:242160 發表于 2017-12-10 14:20 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include "reg52.h"                        
#include<intrins.h>               

typedef unsigned int u16;         
typedef unsigned char u8;

sbit beep=P1^5;         
sbit a=P2^0 ;        
sbit LSA=P2^2;        
sbit LSB=P2^3;
sbit LSC=P2^4;
u8 code smgduan[10]={
        0x3f,   //0
        0x06,          //1
        0x5b,        //2
        0x4f,        //3
        0x66,        //4
        0x6d,          //5
        0x7d,        //6
        0x07,        //7
        0x7f,        //8
        0x6f,        //9

        };           

void delay(u16 i)
{
        while(i--);                  //延時函數,i=1時,大約延時10us
}
void main()
{        
   u16 L0=0,L1=0,L2=0,L3=0,d,n=0,w=0;
        
        TMOD|=0X01;                //  01定時  04計數  選擇為定時器0模式,工作方式1,僅用TR0打開啟動。

        TH0=0X3C;                //給定時器賦初值,定時1ms   
        TL0=0XB0;                                                     
        
        TR0=1;                        //打開定時器

         if(w==0)
        {        
                delay(100);
                if(a==1)
                {
              L0++;
                 while(1)
       {
           if(L0==10)
                {
                        L0=0;
                        L1++;
                }
                if(L1==10)                                                         
                {
                        L1=0;
                        L2++;
                }
                if(L2==10)
                {
                        L2=0;
                        L3++;
                }
                if(L3==10)
                {
                    L3=0;
                        L0=0;L1=0;L2=0;
                }
                for(d=0;d<4;d++)
                {
                        switch(d)         
                        {
                                case(0):
                                        LSA=0;LSB=0;LSC=0;P0=smgduan[L0]; break;//顯示第0位
                                case(1):
                                        LSA=1;LSB=0;LSC=0;P0=smgduan[L1]; break;//顯示第1位
                                case(2):
                                        LSA=0;LSB=1;LSC=0;P0=smgduan[L2]; break;//顯示第2位
                                case(3):
                                        LSA=1;LSB=1;LSC=0;P0=smgduan[L3]; break;//顯示第3位
                        }
                        delay(100);
                        P0=0x00;           //消隱
                }
                if(a==1)
                delay(1000);                                                                       
                L0++;
        
        
                if(TF0==1)
        {
            TF0=0;        
                TH0=0X3C;              //重置定時常數
                TL0=0XB0;
                n++;
                if(n>200)
                {
                  n=0;
                  w=1;
                }
                if(w==1)
                a=0;
    }
               
        }
        }               
        }
                }  


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

使用道具 舉報

沙發
ID:259775 發表于 2017-12-10 15:23 | 只看該作者
有一個delay(1000),即10ms
回復

使用道具 舉報

板凳
ID:259790 發表于 2017-12-10 15:58 | 只看該作者
delay(1000);           代表1秒,類推
回復

使用道具 舉報

地板
ID:242160 發表于 2017-12-10 16:15 | 只看該作者
qzqwood 發表于 2017-12-10 15:23
有一個delay(1000),即10ms

delay(100)循環的是那些程序,delay(1000)循環的是那些?
回復

使用道具 舉報

5#
ID:259822 發表于 2017-12-10 17:20 | 只看該作者
可以采用單片機內部 nop();函數延時 比較精確
回復

使用道具 舉報

6#
ID:258555 發表于 2017-12-11 00:13 | 只看該作者
delay(1000),即10ms
回復

使用道具 舉報

7#
ID:242160 發表于 2017-12-11 14:25 | 只看該作者
鵝城不再35 發表于 2017-12-10 17:20
可以采用單片機內部 nop();函數延時 比較精確

一個_nop()是幾秒?
回復

使用道具 舉報

8#
ID:111634 發表于 2017-12-11 22:22 | 只看該作者
先學理論,打基礎,否則,問題多多,事倍功半。
回復

使用道具 舉報

9#
ID:260595 發表于 2017-12-12 12:46 | 只看該作者
太快看不到閃爍的過程
回復

使用道具 舉報

10#
ID:260626 發表于 2017-12-12 14:13 | 只看該作者
void delay(u16 i)
{
        while(i--);                  //延時函數,i=1時,大約延時10us
}
delay(1000)和delay(100);調用的就是上面的函數 循環的是while(i--)當你給的數不為0,就自減1,直到為零;期間每減一次就是10us,1000us=1ms 1000ms=1s,
回復

使用道具 舉報

11#
ID:260641 發表于 2017-12-12 14:15 來自手機 | 只看該作者
delay()就是延時函數
回復

使用道具 舉報

12#
ID:260871 發表于 2017-12-12 21:42 | 只看該作者
學匯編版編程可以了解更多單片機的原理
回復

使用道具 舉報

13#
ID:260871 發表于 2017-12-12 21:43 | 只看該作者
用keil仿真一下就知道
回復

使用道具 舉報

14#
ID:242160 發表于 2017-12-13 08:33 | 只看該作者
1597538246 發表于 2017-12-12 14:13
void delay(u16 i)
{
        while(i--);                  //延時函數,i=1時,大約延時10us

謝謝  懂了
回復

使用道具 舉報

15#
ID:261374 發表于 2017-12-14 08:12 | 只看該作者
看看匯編吧,直接用定時器,很容易實現
回復

使用道具 舉報

16#
ID:255861 發表于 2017-12-15 23:16 來自手機 | 只看該作者
樓上的樓上解釋的很明白了,執行while進行--,delay(1000),大約就是10ms,這個在時間你可以通過keil調試出來,編譯后,設置在delay前后設置斷點,首先復位,運行,delay前停了,看下sec中的時間,在運行,delay后停了,在看下sec中的時間,相減,就是delay(1000)的延時時間了,
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲综合一区二区三区 | 少妇精品久久久久久久久久 | 欧美精品一区二区在线观看 | 国产精品污www一区二区三区 | 国产成人jvid在线播放 | 高清av在线 | 免费三级av | 日韩1区| 亚洲精品乱码久久久久久按摩 | 亚洲一区av在线 | 91av视频在线观看 | 久久精品女人天堂av | 在线中文字幕av | 日韩小视频 | 亚洲国产视频一区 | 国产精品视频一区二区三区四区国 | av激情影院 | 国产99精品| 久久久www成人免费精品 | 国产欧美一区二区三区在线播放 | 毛片a区| 欧美成人高清视频 | 91亚洲精选| 国产成人精品久久二区二区91 | 久久在线视频 | 亚洲精品一区在线观看 | 91精品一区 | 亚洲免费网| 午夜激情一区 | 亚洲精品乱码8久久久久久日本 | 在线国产一区 | 免费精品 | 精品免费| 日本三级网址 | 午夜国产 | 日韩欧美一区二区三区 | 亚洲人成网站777色婷婷 | m豆传媒在线链接观看 | 国产精品欧美一区二区 | 综合国产 | 午夜精品一区二区三区在线视频 |