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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

[求助]高手們幫我看看程序哪里出了問題,時間不準

[復制鏈接]
跳轉到指定樓層
樓主
ID:40110 發表于 2012-5-12 13:25 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

///利用動態掃描和定時器1在數碼管上顯示出從765432開始以1/10秒的速度往下遞減直至765398并保持顯示此數
//,與此同時利用定時器0以500MS速度進行流水燈從上至下移動,當數碼管上數減到停止時
//,實驗板上流水燈也停止然后全部開始閃爍,3秒后(用T0定時)流水燈全部關閉
//、數碼管上顯示出“HELLO”。到此保持住。

 //以上的是題目

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code TAB[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};///數碼管顯示的數字
uchar code TA[]={0xfe,0xfd,0xfb,0xf7};///選擇第幾個數碼管亮
uchar code TAB1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};///流水燈
uchar code TAB2[]={0x76,0x79,0x3f,0x38};///顯示HELO
uchar i;
uint j,n,k,m,f;
int a,b,c,d,x;
void delay();
void xiajieduan();
void helo();
void main()
{
  i=0;j=0;k=0;n=0;
  TMOD=0x22;
  TL0=0X47;//定時0.2毫秒
  TH0=0x47;
  TR0=1;                 
  ET0=1;
  TL1=0X47;//定時0.2毫秒
  TH1=0x47;
  TR1=1;                 
  ET1=1;
  EA=1;
  a=2;b=3;c=4;d=5;
 while(1)
 {

  if(d==5&&c==3&&b==9&&a==8)//當達到指定數字時
   {
    TR1=0;k=0;
    xiajieduan();
   }
       P2=0XFF;
       if(j==0)P0=TAB[a];
       if(j==1)P0=TAB;
       if(j==2)P0=TAB[c];
       if(j==3)P0=TAB[d];
       P2=TA[j];//數碼管顯示
       j++;
       if(j>=4)j=0;

   if(k>=2500)//流水燈
   {
     k=0;f++;
     if(f==8)f=0;
     P1=TAB1[f];
   }
   
 }
}
void jishi0() interrupt 1
{

  k++;
  if(k==15000){P1=0XFF;helo();}
}
void jishi1() interrupt 3
{
  n++;
  if(n==1000){n=0;a--;}//計時器向下遞減的轉化
  if(a==-1){b--;a=9;}
  if(b==-1){c--;b=9;}
  if(c==-1){d--;c=9;}
  if(d==-1){a=9;b=9;c=9;d=9;}

}
void delay()
{  for(x=0;x<5000;x++)

    {
       P2=0XFF;
       if(j==0)P0=TAB[a];
       if(j==1)P0=TAB;
       if(j==2)P0=TAB[c];
       if(j==3)P0=TAB[d];
       P2=TA[j];//數碼管顯示
       j++;
       if(j>=4)j=0;
   }
}
void xiajieduan()
{
  while(1)
  {
   P1=0X00;
  delay();
   P1=0xff;
  delay();
  }
}

void helo()
{
  while(1)
 {
  
    P2=0XFF;
      
      if(j==0)P0=TAB2[3];
      if(j==1)P0=TAB2[2];
      if(j==2)P0=TAB2[1];
      if(j==3)P0=TAB2[0];
      P2=TA[j];//數碼管顯示
      j++;
      if(j>=4)j=0;
 }
}

///利用動態掃描和定時器1在數碼管上顯示出從765432開始以1/10秒的速度往下遞減直至765398并保持顯示此數
//,與此同時利用定時器0以500MS速度進行流水燈從上至下移動,當數碼管上數減到停止時
//,實驗板上流水燈也停止然后全部開始閃爍,3秒后(用T0定時)流水燈全部關閉
//、數碼管上顯示出“HELLO”。到此保持住。

 

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

使用道具 舉報

沙發
ID:40110 發表于 2012-5-12 13:26 | 只看該作者

晶振用的是11.0592M

回復

使用道具 舉報

板凳
ID:7485 發表于 2012-5-12 21:50 | 只看該作者
定時器初裝值不對。這樣有50多毫秒了。應該是:TH0=(65536-200)/256;TL0=(65536-200) MOD 256;   括號里的減數就是你需要的微秒數。這是12M晶振的值。11.0592的你自己換算一下。
回復

使用道具 舉報

地板
ID:40110 發表于 2012-5-12 23:42 | 只看該作者

不是啊,我用方式2的8位重裝計時,初值用軟件計算的,應該不會錯吧

不過非常感謝你的回復!

回復

使用道具 舉報

5#
ID:7485 發表于 2012-5-14 19:41 | 只看該作者

手工計算了一下,0x47是對的。但是有小數,被舍去了。10進制的71.68,,取71(0x47)。不會因此不準吧?

 

你現在是怎么“不準”?

[此貼子已經被作者于2012-5-14 19:53:54編輯過]
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本不卡视频在线播放 | 91精品国产一区二区在线观看 | wwwxxx日本在线观看 | 久久免费精品 | 国产精品久久久久久久一区二区 | 久热精品在线观看视频 | 成人av免费| 精品96久久久久久中文字幕无 | 91久久综合亚洲鲁鲁五月天 | 中文字幕在线播放第一页 | 久久国产精品91 | 色婷婷av一区二区三区软件 | 国产欧美精品在线观看 | 日韩欧美电影在线 | 开操网| 97起碰| 亚洲精品一区中文字幕乱码 | 日韩免费视频一区二区 | 九九久久精品视频 | 自拍视频网站 | 国产福利91精品 | 欧美成人a | 国产精品久久久久aaaa | 欧美一区二区三区大片 | 国产日韩欧美中文字幕 | 福利国产 | 在线观看视频91 | 国产精品网址 | 成人久久 | 日韩一区二区精品 | 久久免费视频在线 | 视频一区在线观看 | 伊人久久综合 | 欧美日本韩国一区二区三区 | 网络毛片 | 日本在线小视频 | 国产黄色av电影 | 在线亚洲欧美 | 日韩第一区| 国产精品欧美一区二区三区不卡 | 欧美日韩一区二区在线播放 |