打印

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

[复制链接]
1561|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
十年砍柴|  楼主 | 2010-8-20 19:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:岂能尽如人意,但求无愧于心!

0

主题

11

帖子

1

粉丝