標(biāo)題: 初學(xué)單片機,請問一個延時的問題 [打印本頁]

作者: 51老鷹    時間: 2022-8-8 10:31
標(biāo)題: 初學(xué)單片機,請問一個延時的問題
#include <STC11F.h>
#define uint unsigned int
#define uchar unsigned char
#include "intrins.h"

sbit ge=P3^5;
sbit shi=P3^4;                        
sbit bai=P3^3;



uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,
                    0x92,0x82,0xf8,0x80,0x90,};  

uint num;
                                                                                                               
void delay(uint);
       
void main(void)
{

              uint i;

        while(1)
        {

                {
                                                                                                P3=0xff;
                                                                              P1=0xff;
                                                                              delay(2);
                                                                              bai=0;
                        P1=table[num/100];
                                                                              delay(15);

                                                                       
                }

                {
                        P3=0xff;
                                                                              P1=0xff;
                                                                              delay(2);
                                                                              shi=0;
                                                                                                P1=table[num/10%10];//送個位段碼                     
                                                                              delay(15);
                                                                             

                }
                                                                {
                        P3=0xff;
                                                                              P1=0xff;
                                                                              delay(2);
                                                                              ge=0;
                                                                                                P1=table[num%10];                     
                                                                              delay(15);
                                                                             

                }
                                                                i++;
                if(i==100)                   //大概是1秒
                {      
                        i=0;
                        num++;
                        if(num>1000)
                        {
                                num=0;
                        }
                }

                delay(1);                //延時約1ms,以此控制主循環(huán)周期
        }
}
void delay(uint xms)  //延時函數(shù)
{                                               
        uint i,j;
        for(i=xms;i>0;i--)
                for(j=110;j>0;j--);
}


作者: 51老鷹    時間: 2022-8-9 13:39
不會編輯,下文沒接上,我重新試試
作者: 51老鷹    時間: 2022-8-9 13:40
初學(xué)51,只學(xué)到了延時函數(shù)階段,這個是我按照我的理解寫的一個三位數(shù)碼管999倒計時,其中自增加部分是是抄前輩的,

                                                        i++;
                if(i==100)                   //大概是1秒
                {      
                        i=0;
                        num++;
                        if(num>1000)
                        {
                                num=0;
                        }

就是這一段有點不能理解,i==100是如何延時的,按我的理解這個要寫成
{
num=0,num<1000,num++;
delay(1000);
if(num=1000);
num=0;
}
每一秒鐘num自加一,直到滿1000,然后歸0.
作者: 墨魚腌肉    時間: 2022-8-10 16:55
這個i要進(jìn)這個函數(shù)void delay(uint xms)  //延時函數(shù);
void delay()  //延時函數(shù)
{                                               
        uint i,j;
        for(i=100;i>0;i--)
                for(j=110;j>0;j--);
}
這樣去理解
作者: lkc8210    時間: 2022-8-10 17:54
看代碼不能斷章取義
你的代碼可以簡化為

  1. while(1)
  2. {
  3.         i++;
  4.         if(i==100)                   //大概是1秒
  5.         {
  6.                 i=0;
  7.                 num++;
  8.         }
  9.         delay(1);//延時約1ms,以此控制主循環(huán)周期<<<<<<<<<<<<<<<<<<<<<<<<<<<
  10. }
復(fù)制代碼

這樣看的出如何延時的吧?


作者: 51老鷹    時間: 2022-10-22 17:04
感謝兩位老師的指點,是我理解片面了,要從總局來看這個。再次感謝兩位老師。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1