找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1886|回復(fù): 0
收起左側(cè)

未添加任務(wù)標(biāo)志時(shí)均正常工作,添加后數(shù)碼管無顯示

[復(fù)制鏈接]
ID:290002 發(fā)表于 2018-12-17 17:02 | 顯示全部樓層 |閱讀模式
本帖最后由 flaysim 于 2018-12-17 19:59 編輯

目前找不到原因,求正確回答,可提供完整的程序

發(fā)現(xiàn)一個(gè)非常有趣的東西,
void Interrupt_T0() interrupt 1
{
        uint8 i;    ->static uint8 i = 0;   這樣改一下居然顯示了?excuese me,郁悶,完全沒搞懂為什么會(huì)這樣
        
        TH0 = 0XFC;
        TL0 = 0x66;
        
        for(i = 0; i <TASK_NUM; i++)
        {
                if(TASK_Count[ i])               
{
TASK_Count[ i]--;                       
if(TASK_Count[ i] == 0)                       
{                                
TASK_Mark[ i] = 0x01;                        
}                }        }}


最終結(jié)果出來了:主要問題是我在讀取DS1302時(shí)鐘時(shí)讀了8位,多讀了1位. 在未加標(biāo)志位時(shí)運(yùn)行良好,但是加了之后不知道怎么的起了沖突,導(dǎo)致計(jì)數(shù)君0x01之后就變成了0xFF....
引以為戒吧
  1. #include <reg52.h>
  2. #include "Nixie_tube.h"
  3. #include "my_define.h"
  4. #include "ds1302.h"

  5. //void NT_display(uint8 wei,uint8 num);//例如.wei = 3,num = 7 ->點(diǎn)亮第三位的數(shù)碼管并在上面顯示7

  6. #define TASK_NUM (1)                        //任務(wù)數(shù)
  7. uint16 TASK_Count[TASK_NUM];        //任務(wù)計(jì)時(shí)數(shù)組
  8. uint8  TASK_Mark[TASK_NUM];                //任務(wù)標(biāo)志數(shù)組

  9. void Init_T0()
  10. {
  11.         EA = 1;
  12.         ET0 = 1;
  13.         TMOD &= 0xf0;
  14.         TMOD |= 0x01;
  15.         TH0 = 0XFC;
  16.         TL0 = 0x66;
  17.         TR0 = 1;
  18. }

  19. void Interrupt_T0() interrupt 1
  20. {
  21.         uint8 i;
  22.         
  23.         TH0 = 0XFC;
  24.         TL0 = 0x66;
  25.         
  26.         for(i = 0; i <TASK_NUM; i++)
  27.         {
  28.                 if(TASK_Count[i])
  29.                 {
  30.                         TASK_Count[i]--;
  31.                         if(TASK_Count[i] == 0)
  32.                         {
  33.                                 TASK_Mark[i] = 0x01;
  34.                         }
  35.                 }
  36.         }
  37. }

  38. void main()
  39. {
  40.         uint8 i;
  41.         SetTime_ds1302();                //設(shè)置DS1302初始值
  42.         Init_T0();
  43.         TASK_Count[0] = 15;                //計(jì)數(shù)15ms
  44.         TASK_Mark[0] = 0;                //標(biāo)志位清零
  45.         while(1)
  46.         {
  47.                 TR0 = 0;
  48.                 ReadTime_ds1302();                //從DS1302中讀數(shù)據(jù)
  49.                 TR0 = 1;
  50.                 timedata_Change();                //DS1302數(shù)據(jù)格式轉(zhuǎn)化
  51.                
  52.                 if(TASK_Mark[0] == 0x01)                //當(dāng)標(biāo)志位為1時(shí)
  53.                 {
  54.                         TASK_Count[0] = 15;                        //重新計(jì)數(shù)15ms
  55.                         TASK_Mark[0] = 0;                        //標(biāo)志位清零
  56.                         for(i = 0; i < 6; i++)                //數(shù)碼管顯示時(shí)分秒
  57.                         {        
  58.                                 NT_display(i,timedata_1wei[i]);        
  59.                                 delay(200);
  60.                         }                        
  61.                 }
  62.         }
  63. }
復(fù)制代碼


回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表