新闻  |   论坛  |   博客  |   在线研讨会
51单片机系列之五:定时器与计数器
十年砍柴 | 2010-07-09 20:50:26    阅读:1085   发布文章

51单片机系列之五:定时器与计数器

一、     设计任务

1、如图1,单片机的P2口接上数码管显示十位,P3口接上数码管显示个位。设计00----59计数器,采用软件延时的方式。

2如图2,单片机的P2口接上数码管显示十位,P3口接上数码管显示个位,按键接在P0.0上。设计00----99计数器,每按下一次按键,数码管的计数值加一。

3、如图3,单片机的P2口接上数码管显示十位,P3口接上数码管显示个位。设计00----59计数器,采用定时/计数器T0

4、如图4,单片机的P1口接上数码管显示十位,P3口接上数码管显示个位,设计60----00计数器,采用定时器T1

二、电路原理图

          160s计数器,软件延时

         200----99计数器,每按下一次按键,计数加一

        300----59计数器,定时器T0

        460----00计数器,采用定时器T1

三、     设计程序

// 软件延时的方式设计60s计数器

      ORG 00H

START:MOV DPTR,#TABLE

      MOV R0,#00H

  S1: MOV P3,#00H

      MOV P2,#00H

  S2: MOV R1,#10

      MOV A,R0

      MOV B,R1

      DIV AB

      MOVC A,@A+DPTR

      MOV P2,A

      MOV A,B

      MOVC A,@A+DPTR

      MOV P3,A

      LCALL DELAY

      INC R0

      CJNE R0,#60,S2

      MOV R0,#00H

      LJMP S1

DELAY:MOV R5,#100

   D1:MOV R6,#20

   D2:MOV R7,#248

      DJNZ R7,$

      DJNZ R6,D2

      DJNZ R5,D1

      RET

TABLE:DB 3FH,06H,5BH,4FH,66H

      DB 6DH,7DH,07H,7FH,6FH

      END   

//0——99计数器,按键按下数码管数字加一

     ORG 00H

      SJMP START

START:MOV DPTR,#TABLE

      MOV R0,#00H

      MOV P2,#00H

      MOV P3,#00H

   S1:INC R0

      CJNE R0,#100,S2

      MOV R0,#00H

   S2:JB P0.0,$

      LCALL DELAY

      JB P0.0,S2

   S3:MOV A,R0

      MOV B,#10

      DIV AB

      MOVC A,@A+DPTR

      MOV P2,A

      MOV A,B

      MOVC A,@A+DPTR

      MOV P3,A

      JB P0.0,S1

      LJMP S3

DELAY:MOV R5,#20

  D1: MOV R6,#250

      DJNZ R6,$

      DJNZ R5,D1

      RET

TABLE:DB 3FH,06H,5BH,4FH,66H

      DB 6DH,7DH,07H,7FH,6FH

      END

//定时/计数器T0计数60s

SECOND   EQU 30H

COUNT    EQU 31H

       ORG 00H

       LJMP START

       ORG 0BH

       LJMP INT_T0

START: MOV SECOND,#00H

       MOV COUNT,#00H

       MOV DPTR,#TABLE

       MOV P2,#00H

       MOV P3,#00H

       MOV TMOD,#01H

       MOV TH0,#(65536-5000)/256

       MOV TL0,#(65536-5000)MOD 256

       SETB TR0

       MOV IE,#82H

       LJMP $

INT_T0:MOV TH0,#(65536-5000)/256

       MOV TL0,#(65536-5000)MOD 256

       INC COUNT

       MOV A,COUNT

       CJNE A,#20,L2

       INC SECOND

       MOV A,SECOND

       CJNE A,#60,L1

       MOV SECOND,#00H

   L1: MOV A,SECOND

       MOV B,#10

       DIV AB

       MOVC A,@A+DPTR

       MOV P2,A

       MOV A,B

       MOVC A,@A+DPTR

       MOV P3,A

   L2: RETI

TABLE:DB 3FH,06H,5BH,4FH,66H

      DB 6DH,7DH,07H,7FH,6FH

      END

//定时器T1设计60计数

           ORG      0

         SJMP START

         ORG 1BH

         SJMP T1S

         ORG 30H

START: MOV R2,#60

       MOV R4,#20

         MOV IE,#88H

         MOV TMOD,#10H

         MOV TH1,#3CH

         MOV TL1,#0B0H

         SETB TR1

         MOV A,R2

         MOV B,#10

         DIV AB

         ACALL SEG7

         MOV P1,A

         MOV A,B

         ACALL SEG7

         MOV P2,A

         SJMP $

T1S:   MOV TH1,#3CH

       MOV TL1,#0B0H

         DJNZ R4,T1S0

         MOV R4,#20

         DJNZ R2,T1S1

         CLR TR1

         SJMP T1S1

T1S0:  RETI

T1S1:  MOV A,R2

       MOV B,#10

       DIV AB

       ACALL SEG7

       MOV P1,A

       MOV A,B

       ACALL SEG7

       MOV P2,A

       RETI

SEG7:  INC A

       MOVC A,@A+PC

       RET

       DB 0C0H,0F9H,0A4H,0B0H

       DB 99H,92H,82H,0F8H

       DB 80H,90H,88H,83H

       DB 0C6H,0A1H,86H,8EH

END

 

          

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客