欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 在實(shí)踐中關(guān)于單片機(jī)晶振與計(jì)時(shí)器問(wèn)題的困惑 [打印本頁(yè)]

作者: cheng51    時(shí)間: 2019-1-19 11:30
標(biāo)題: 在實(shí)踐中關(guān)于單片機(jī)晶振與計(jì)時(shí)器問(wèn)題的困惑
來(lái)51hei論壇有些時(shí)間了,想自己動(dòng)手做點(diǎn)什么,就焊了個(gè)stc11f02e單片機(jī)的最小系統(tǒng),使用外接12Mhz晶振。但是在實(shí)際應(yīng)用時(shí)有些困惑。使用11f02e的1T工作模式,晶振使用12Mhz的,寫(xiě)了個(gè)5分鐘的倒計(jì)時(shí)程序,外接數(shù)碼管顯示。
    1T工作模式:
    12Mhz晶振
    一個(gè)機(jī)器周期為1/12000000s
    定時(shí)器最大值為:65536   
    工作60000次
    60000/12000000 = 0.005s
    TH0 = (65536-60000)/255 = 0x15;
    TL0 = (65536-60000)%255 = 0xb5
    1s = 1/0.005 = 200(次)

計(jì)算出循環(huán)200次為1秒,但是實(shí)際測(cè)出來(lái)需要循環(huán)1600次才是1秒。不知道時(shí)哪里出錯(cuò)了,請(qǐng)老師指正。
由于沒(méi)有畫(huà)電路圖,直接焊的洞洞板,如果分析需要我待會(huì)兒手繪一張電路圖。

附上源碼:
#include <stc11f02e.h>
unsigned char code ledTable[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char ledBuffer[] = {0xff,0xff,0xff,0xff};

unsigned char p = 0;    //顯示位數(shù)指示標(biāo)志
unsigned int time = 300;    //倒計(jì)時(shí)300秒

sbit A1 = P3^2;    //數(shù)碼管第一位
sbit A2 = P3^3;    //數(shù)碼管第二位
sbit A3 = P3^4;    //數(shù)碼管第三位
sbit A4 = P3^5;    //數(shù)碼管第四位
sbit led = P3^7;    //計(jì)時(shí)完成時(shí)點(diǎn)亮小燈

void init();
void display();
void delay();

unsigned cnt = 0;
void main(void)
{
    init();
    while(1)
    {   
        if((time/600) == 0)
        {
            ledBuffer[0] = 0xff;    //小于10分鐘,首位不亮
        }
        else
        {
            ledBuffer[0] = ledTable[(time/60)/10];
        }
        
        ledBuffer[1] = ledTable[(time/60)%10] & 0x7f;    //小數(shù)點(diǎn)
        ledBuffer[2] = ledTable[(time%60)/10];
        ledBuffer[3] = ledTable[(time%60)%10];   
        display();
    }
}


void init()
{
    AUXR |= 0x80;    //1T工作模式
    TMOD &= 0xf0;    //選擇計(jì)時(shí)模式
   
    EA = 1;
    ET0 = 1;
   
    TF0 = 0;
    TR0 = 1;
   
    TL0 = 0xb5;
    TH0 = 0x15;
   
    led = 0;    //led燈默認(rèn)關(guān)閉
}

void display()
{
    P1 = 0xff;
    switch(p)
    {
        case(0):A1=0;A2=1;A3=1;A4=1;P1=ledBuffer[0];p++;break;
        case(1):A1=1;A2=0;A3=1;A4=1;P1=ledBuffer[1];p++;break;
        case(2):A1=1;A2=1;A3=0;A4=1;P1=ledBuffer[2];p++;break;
        case(3):A1=1;A2=1;A3=1;A4=0;P1=ledBuffer[3];p=0;break;
        default:break;
    }
    delay();
}
   

void delay()    //給led燈一個(gè)過(guò)渡時(shí)間
{
    unsigned char i,j;
    for(i=0;i<110;i++)
    {
        for(j=0;j<10;j++);
    }
}

void timeUp() interrupt 1
{
    TL0 = 0xb5;
    TH0 = 0x15;
   
    cnt++;
   
    if(cnt==1600)    //經(jīng)實(shí)測(cè)1600個(gè)循環(huán)才等于1秒
    {
        cnt = 0;    //經(jīng)過(guò)1s秒置零
        time--;        //時(shí)間減少1秒
        if(time==0)    //如果計(jì)時(shí)完成
        {   
            TR0 = 0;    //計(jì)數(shù)器運(yùn)行標(biāo)志位置零,停止計(jì)時(shí)
            time = 0;    //及時(shí)完成顯示函數(shù)顯示0.00
            delay();    //給點(diǎn)亮led燈一個(gè)過(guò)渡時(shí)間,減小瞬間電流
            led = 1;    //led小燈常量,標(biāo)志計(jì)時(shí)完成
            
        }
    }
}

貼上實(shí)物圖:

index.jpg (104.93 KB, 下載次數(shù): 50)

正在運(yùn)行中

正在運(yùn)行中

index2.jpg (105.57 KB, 下載次數(shù): 39)

最小系統(tǒng)

最小系統(tǒng)

index3.jpg (95.98 KB, 下載次數(shù): 32)

整體

整體

index4.jpg (78.37 KB, 下載次數(shù): 30)

計(jì)時(shí)結(jié)束,點(diǎn)亮小燈

計(jì)時(shí)結(jié)束,點(diǎn)亮小燈

作者: yzwzfyz    時(shí)間: 2019-1-19 16:15
1、T0有幾種工作模式,分別代表什么意思?(提示:TMOD的B1B0位,你用的是什么模式?)
2、TH0TL0=15B5H=5557,它與65536的差是多少?(好在不是主要問(wèn)題)
作者: wulin    時(shí)間: 2019-1-19 20:06
你的定時(shí)器初始化程序錯(cuò)誤,給你一個(gè)示例。
void Timer0Init()                //5毫秒@12.000MHz
{
        AUXR |= 0x80;                //定時(shí)器時(shí)鐘1T模式
        TMOD &= 0xF0;                //設(shè)置定時(shí)器模式1
        TMOD |= 0x01;                //設(shè)置定時(shí)器模式1
        TL0 = 0xA0;                //設(shè)置定時(shí)初值
        TH0 = 0x15;                //設(shè)置定時(shí)初值
        TR0 = 1;                        //定時(shí)器0開(kāi)始計(jì)時(shí)
        EA = 1;                        //開(kāi)總中斷
        ET0 = 1;                        //開(kāi)T1中斷
}
作者: cheng51    時(shí)間: 2019-1-20 00:48
yzwzfyz 發(fā)表于 2019-1-19 16:15
1、T0有幾種工作模式,分別代表什么意思?(提示:TMOD的B1B0位,你用的是什么模式?)
2、TH0TL0=15B5H=5 ...

謝謝,我去查查手冊(cè)。老師,關(guān)于初值我這樣算具體錯(cuò)在哪里了。
作者: cheng51    時(shí)間: 2019-1-20 00:49
wulin 發(fā)表于 2019-1-19 20:06
你的定時(shí)器初始化程序錯(cuò)誤,給你一個(gè)示例。
void Timer0Init()                //5毫秒@12.000MHz
{

謝謝老師,確實(shí)是定時(shí)器模式這里錯(cuò)了。




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