99秒马表设计

发布者:SereneWhisper最新更新时间:2011-02-27 手机看文章 扫描二维码
随时随地手机看文章
             实验任务

(1.       开始时,显示“00”,第1次按下SP1后就开始计时。

(2.       2次按SP1后,计时停止。

(3.       3次按SP1后,计时归零。

2.           电路原理图

4.17.1

3.           系统板上硬件连线

(1.       把“单片机系统”区域中的P0.0/AD0P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个ah端口上;要求:P0.0/AD0对应着aP0.1/AD1对应着b……P0.7/AD7对应着h

(2.       把“单片机系统”区域中的P2.0/A8P2.7/A15端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个ah端口上;要求:P2.0/A8对应着aP2.1/A9对应着b……P2.7/A15对应着h

(3.       把“单片机系统“区域中的P3.5/T1用导线连接到”独立式键盘“区域中的SP1端口上;

4.           程序框

T0中断服务程序框

 

 

 

 

 

 

 

 

 

 

 

 


4.17.2

5.           汇编源程序

TCNTA            EQU 30H

TCNTB           EQU 31H

SEC       EQU 32H

KEYCNT          EQU 33H

SP1       BIT P3.5

        ORG 00H

        LJMP START

           ORG 0BH

        LJMP INT_T0

START:    MOV KEYCNT,#00H

        MOV SEC,#00H

        MOV A,SEC

        MOV B,#10

        DIV AB

        MOV DPTR,#TABLE

        MOVC A,@A+DPTR

        MOV P0,A

        MOV A,B

        MOV DPTR,#TABLE

        MOVC A,@A+DPTR

        MOV P2,A

        MOV TMOD,#02H

        SETB ET0

        SETB EA

WT:       JB SP1,WT

        LCALL DELY10MS

        JB SP1,WT

        INC KEYCNT

        MOV A,KEYCNT

        CJNE A,#01H,KN1

        SETB TR0

        MOV TH0,#06H

        MOV TL0,#06H

        MOV TCNTA,#00H

        MOV TCNTB,#00H

        LJMP DKN

KN1:      CJNE A,#02H,KN2

        CLR TR0

        LJMP DKN

KN2:      CJNE A,#03H,DKN

        MOV SEC,#00H

        MOV A,SEC

        MOV B,#10

           DIV AB

        MOV DPTR,#TABLE

        MOVC A,@A+DPTR

        MOV P0,A

        MOV A,B

        MOV DPTR,#TABLE

        MOVC A,@A+DPTR

        MOV P2,A

        MOV KEYCNT,#00H

DKN:    JNB SP1,$

        LJMP WT

DELY10MS:

           MOV R6,#20

D1:        MOV R7,#248

        DJNZ R7,$

        DJNZ R6,D1

        RET

INT_T0:

        INC TCNTA

        MOV A,TCNTA

        CJNE A,#100,NEXT

        MOV TCNTA,#00H

        INC TCNTB

        MOV A,TCNTB

        CJNE A,#4,NEXT

        MOV TCNTB,#00H

        INC SEC

        MOV A,SEC

        CJNE A,#100,DONE

        MOV SEC,#00H

DONE:             MOV A,SEC

        MOV B,#10

        DIV AB

        MOV DPTR,#TABLE

        MOVC A,@A+DPTR

        MOV P0,A

        MOV A,B

        MOV DPTR,#TABLE

        MOVC A,@A+DPTR

        MOV P2,A

NEXT:   RETI

TABLE:  DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

        END

6.           C语言源程序

#include

 

unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,

                               0x66,0x6d,0x7d,0x07,

                               0x7f,0x6f,0x77,0x7c,

                               0x39,0x5e,0x79,0x71,0x00};

unsigned char second;

unsigned char keycnt;

unsigned int tcnt;

 

void main(void)

{

  unsigned char i,j;

 

  TMOD=0x02;

  ET0=1;

  EA=1;

  second=0;

  P0=dispcode[second/10];

  P2=dispcode[second%10];

  while(1)

    {

      if(P3_5==0)

        {

          for(i=20;i>0;i--)

          for(j=248;j>0;j--);

          if(P3_5==0)

            {

              keycnt++;

              switch(keycnt)

                {

                  case 1:

                    TH0=0x06;

                    TL0=0x06;

                    TR0=1;

                    break;

                  case 2:

                    TR0=0;

                    break;

                  case 3:

                    keycnt=0;

                    second=0;

                    P0=dispcode[second/10];

                    P2=dispcode[second%10];

                    break;

                }

              while(P3_5==0);

            }

        }

    }

}

 

void t0(void) interrupt 1 using 0

{

  tcnt++;

  if(tcnt==400)

    {

      tcnt=0;

      second++;

      if(second==100)

        {

          second=0;

        }

      P0=dispcode[second/10];

      P2=dispcode[second%10];

    }

}

引用地址: 99秒马表设计

上一篇:定时计数器T0作定时应用技术(二)
下一篇:嘀、嘀、……”报警声

小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved