例题:一分钟倒计时器

发布时间:2015-01-03 00:52:49   来源:文档文库   
字号:

上传者:jdchen

例题:一分钟倒计时器

电路原理图:

参考程序:程序由初始化主程序、外部中断服务程序和定时器中断服务程序组成。

;***************************************************************************

; INT1第一次中断启动倒计时,从60秒开始自动计数减1,在右边两个数码管上显示,

; 当计数到零停止,并发出提示音;

; ITN1第二次中断停止倒计时,显示当前值,ITN1第三次中断开始新的一轮倒计时。

;***************************************************************************

;主程序

ORG 0000H

AJMP MAIN

ORG 000BH

AJMP TIM1

ORG 0013H

AJMP INT1S

ORG 0030H

MAIN: MOV SP,#0a0H

MOV 7aH,#06H;置显示缓冲区初值

MOV 7bH,#00H

MOV 7cH,#10H

MOV 7dH,#00H

MAIN1: MOV 70H,#60H; 计数器置初值

MOV TMOD,#01H

MOV TH0,#90H

MOV TL0,#58H

SETB IT1

SETB EA

SETB EX1

SETB ET0

MOV R4,#04

MOV R3,#00H

CLR 20H.0

CLR F0

WAIT:ACALL DISPLAY

MOV A,70H

ANL A,#0FH

MOV 7BH,A

MOV A,70H

SWAP A

ANL A,#0FH

MOV 7AH,A

MOV 7DH,R3

JNB F0,WAIT

CLR P3.6

MOV R4,#10

L2: MOV R5,#200

L1: CPL P3.7 ;产生短脉冲

ACALL DLAY

ACALL DLAY

DJNZ R5, L1

DJNZ R4, L2

MOV R4,#10

L4: MOV R5,#200

L3: CPL P3.7

ACALL DLAY

ACALL DLAY

MOV R7,#80

DJNZ R7,$

DJNZ R5, L3

DJNZ R4, L4

SETB P3.7

SETB EA

AJMP MAIN1

; ---------------------------------------------------

DLAY: MOV R7,#100

DL1: NOP

DJNZ R7,DL1

RET

;-----------------INT1中断程序--------------------------

INT1S: PUSH ACC

JB 20H.0,INT11

SETB TR0

SETB 20H.0

MOV 70H,#60H; 计数器置初值

MOV R3,#00H

SETB P3.6

SJMP REINT

INT11:

CLR TR0 ;2次中断

CLR 20H.0

MOV TH0,#90H

MOV TL0,#58H

CLR P3.6

REINT:

POP ACC

RETI

;-----------------定时器中断程序-------------------------

TIM1: PUSH ACC

MOV TH0,#90H

MOV TL0,#58H

CPL P1.2

DJNZ R4 ,RETT1

MOV R4,#4

MOV A,R3

JNZ TM1

MOV R3,#09

MOV A,70H

ADD A,#99H

DA A

MOV 70H,A

TM1: DJNZ R3,RETT1

MOV A,70H

ORL A,R3

JNZ RETT1

CLR TR0

SETB F0

CLR EA

RETT1: POP ACC

RETI

;------------显示子程序----------------

DISPLAY: MOV DPTR,#TABLE

DISPLAY1: MOV R0,#7AH

MOV R1,#0EFH

NEXTT: MOV A,@R0

MOVC A,@A+DPTR

MOV P0,A

MOV A,R1

MOV P2,A

LCALL DAY

INC R0

RL A

MOV R1,A

CJNE R1,#0FEH,NEXTT

RET

DAY:

MOV R6,#4

D1:

MOV R7,#248

DJNZ R7,$

DJNZ R6, D1

RET

TABLE: DB C0H ; 0

DB 0F9H ; 1

DB 0A4H ; 2

DB 0B0H ; 3

DB 99H ; 4

DB 92H ; 5

DB 82H ; 6

DB 0F8H ; 7

DB 80H ; 8

DB 90H ; 9

DB 88H ; A

DB 83H ; B

DB 0C6H ; C

DB 0A1H ; D

DB 86H ; E

DB 8EH ; F

DB 0BFH ; -.

DB 86H ; H

DB 8CH ;P

DB 07FH ; .

DB 0A3H ;o

DB 0FFH ; 全黑

END

参考C程序

------------------------------------------------*/

#include //包含头文件一般情况不需要改动头文件包含特殊功能寄存器的定义

code unsigned char tab[]=

{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

//共阴数码管 0-9

unsigned char Dis_Shiwei;//定义十位

unsigned char Dis_Gewei; //定义个位

sbit P37=P3^7;

sbit key=P3^3;

sbit P25=P2^5

sbit P24=P2^4;

/******************************************************************/

/* 延时函数 */

/******************************************************************/

void delay(unsigned int cnt)

{

while(--cnt);

}

/******************************************************************/

/* 主函数 */

/******************************************************************/

main()

{

While(!key);

TMOD |=0x01;//定时器设置 10ms in 12M crystal,工作在模式116位定时

TH0=0xd8;

TL0=0xf0;

IE= 0x82; //打开中断

TR0=1; //打开定时开关

while(1)

{

P0=Dis_Shiwei;//显示十位

P25=0;

delay(300); //短暂延时

P25=1;

P0=Dis_Gewei; //显示个位

P24=0;

delay(300);

P24=1;

}

}

/******************************************************************/

/* 定时器中断函数 */

/******************************************************************/

void tim(void) interrupt 1 using 1

{

static unsigned char second=99,count; //初值99

TH0=0xd8; //重新赋值

TL0=0xf0;

count++;

if (count==100)

{

count=0;

second--;//秒减1

if(second==0)

{ //这里添加定时到0的代码 ,可以是灯电路,继电器吸合等,或者执行一个程序

P37=0;

second=60; //减到0是重新赋值99

}

Dis_Shiwei=tab[second/10];//十位显示值处理

Dis_Gewei=tab[second%10]; //个位显示处理

}

}

调试步骤:

1)下载程序:接好通信线,运行STC程序。请参照“LK-51系列单片机实验、应用学习机使用说明

按照使用说明中提示的步骤,分别选择单片机型号、打开待下载的程序文件(.HEX文件)、选择通信口和通信波特率(可选38400);

下载程序,先关电源,点击Down Load/下载框,然后再接通电源(冷启动),在左下框中出现程序下载信息,并提示程序下载成功。

2)运行程序:开机运行程序,显示计数初始值。按下外部中断INT1键,第一次中断启动倒计时,从60秒开始自动计数减1,在右边两个数码管上显示。当计数到零停止,并发出提示音。

在计数过程按下中断INT1键,第二次中断停止倒计时,并显示当前值。第三次中断又开始新的一轮倒计时。

本文来源:https://www.2haoxitong.net/k/doc/9de7d73ffe4733687f21aa6d.html

《例题:一分钟倒计时器.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式