『求助』用51单片机定时器实现99秒表倒计时

如题所述

K1 EQU P1.0
K2 EQU P1.1
K3 EQU P1.2
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
    MOV TMOD,#01H
    MOV TH0,#HIGH(65536-10000)
    MOV TL0,#LOW(65536-10000)
    SETB ET0
SETB TR0
    SETB EA
MOV R0,#9
MOV R1,#9
MOV R2,#0
MOV R3,#99
CLR 00H
CLR 01H
LOOP:
JB K1,LP01
JNB K1,$
CLR 01H
INC R3
CJNE R3,#100,LOOP0
MOV R3,#0
SJMP LOOP0
LP01:
JB K2,LP02
JNB K2,$
CLR 01H
CJNE R3,#0,LP011
MOV R3,#99
SJMP LOOP0
LP011:
DEC R3
SJMP LOOP0
LP02:
JB K3,LOOP
JNB K3,$
SETB 01H
SJMP LOOP
LOOP0:
MOV A,R3
MOV B,#10
DIV AB
MOV R0,B
MOV R1,A
SJMP LOOP
T0ISR:
    CLR TR0
    MOV TH0,#HIGH(65536-10000)
    MOV TL0,#LOW(65536-10000)
    SETB TR0
MOV DPTR,#TABLE
T0C:
CPL 00H
JB 00H,T001
MOV P3,#0FDH
MOV A,R1
MOVC A,@A+DPTR
MOV P2,A
SJMP T002
T001:
MOV P3,#0FEH
MOV A,R0
MOVC A,@A+DPTR
MOV P2,A
T002:
JNB 01H,T0E
INC R2
MOV A,R2
CJNE A,#100,T0E
MOV R2,#0
MOV A,R0
JZ T003
DEC R0
SJMP T0E
T003:
MOV A,R1
JZ T004
DEC R1
MOV R0,#9
T0E:
RETI
T004:
CLR 01H
MOV R4,#16
T005:
CPL P0.0
LCALL DELAY
DJNZ R4,T005
RETI
DELAY:
MOV R6,#200
DLY:
MOV R7,#250
DJNZ R7,$
DJNZ R6,DLY
RET
TABLE:      ; å…±é˜´æžæ•°ç ç®¡æ˜¾ç¤ºä»£ç è¡¨
    DB    3FH,06H,5BH,4FH,66H ;01234
    DB    6DH,7DH,07H,7FH,6FH ;56789

END
温馨提示:内容为网友见解,仅供参考
无其他回答

『求助』用51单片机定时器实现99秒表倒计时
#01H MOV TH0,#HIGH(65536-10000) MOV TL0,#LOW(65536-10000) SETB ET0SETB TR0 SETB EAMOV R0,#9MOV R1,#9MOV R2,#0MOV R3,#99CLR 00HCLR 01HLOOP:JB K1,LP01JNB

基于51单片机的999倒计时C语言程序。
uchar dispbuf[4],dispcount;\/\/开辟四个显示缓冲区 void ledinit()\/***初始化子函数,定时器0刷新显示内容***\/ { TMOD|=0x01; \/\/ 定时器0方式1 TH0=(65536-5000)\/256; \/\/定时器16位模式 TL0=(65536-5000)%256; \/\/溢出时间:5ms TR0=1; \/\/开启定时器0 ET0=1; \/\/使能定时器0...

51单片机怎么用三个按键控制分别为时钟,秒表,倒计时
用k1选择3个功能,按一下切换一个功能。在时钟状态下,用k2选择调节位,用于调时,分别选小时的十位,个位,分的十位,个位,开始计时这5个状态。k3调节位加一,只能按加一调节了。在秒表状态下,k2为计时和停止切换。k3为清0。在倒计时状态下,k2和k3作用与秒表相同。倒计时初始值只好固定的。

基于51单片机,lcd1602怎么显示倒计时秒表? - 知乎
基于单片机的数字秒表设计,核心使用51系列的STC89C52单片机,结合LCD12864显示模块、语音播报模块及输入模块,实现功能如下:系统中控部分由STC89C52单片机负责,它接收输入信息并处理,控制输出。输入模块包括三个部分:DS1302时钟模块,用于获取时间、实现计时与倒计时;四个独立按键,用于设置时间、倒计时时间、控...

怎么把51单片机计时器60秒一进改为99秒一进,并把最小值从1秒改为0.01秒...
秒表功能(百分之一秒单位)。单位时间是 0.01s=10ms,定时器最大定时时间应为 10ms。每次中断,10ms 计数器+1 最大是 99.99秒的话,最好是拆分成 整数 99,跟 小数 99,分别用 2个变量存储(uchar足够),每当 10ms 变量 加满 100,秒 变量就加 1。显示时,记得 带上 中间的小数点。

怎样用51单片机实现累加计时和倒计时,并用六个共阴极数码管显示出来。用...
没有定时器的不过有数字钟的你可以参考下 其中可有有用的摘要本题给出基于单片机的数字中的设计,设计由单片机作为核心控制器,通过频率计数实现计时功能,将实时时间经由单片机输出到显示设备——数码管上显示出来,并通过键盘来实现启动、停止、复位和调整时间的功能。关键词: 单片机、数字钟、AT89S52、LED 1 引言在单片...

51单片机00.00~99.99秒表,K1开始和暂停,K2清零
\/\/开启总中断 ET0 = 1; \/\/开启定时器0中断 TR0 = 1; \/\/开启定时器0计数while(1){if(!K1) \/\/判断K1键{delay(10); \/\/按键去抖if(!K1){flag=~flag;while(!K1); \/\/等待按键弹起}}if(!K2) \/\/判断K2键{delay(10); \/\/按键去抖if(!K2){num=0;}}}void Time...

51单片机 秒表设计
\/\/ 51单片机 秒表,显示时间为0000—9999秒,启动、停止,(停止后再次启动复位)include<reg52.h> define uint unsigned int define uchar unsigned char uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};uchar bai,shi;uint...

51单片机的秒表计时器设计,求大神帮忙设计电路图和C语言程序!!_百度知...
这个程序可以实现秒的计时,按键控制开始、暂停、清零功能,更多功能自己在看清程序的基础上进行改进。include <reg51.H>sbit P3_5 =P3^5;unsigned char code dispcode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0x00};unsigned char...

51单片机数字秒表的程序 1、能实现0.0到9.9的计数 2、使用数码管显示计...
sbit LED1=P2^0;sbit LED2=P2^1;sbit LED3=P2^2;sbit LED4=P2^3;sbit P3_5 =P3^5;unsigned char keycnt;unsigned char Tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsigned int counet,second,msecond,minute;void delay(unsigned int m){ unsigned char s...

相似回答