C51用2个按键分别控制2个秒表,按键可以实现复位,停止功能的程序

顺便来个por图

BZ EQU 30H;0.1s刷屏标志
KEYBZ EQU 31H;按键标志
LED1 EQU 32H
LED2 EQU 33H
LED3 EQU 34H
B20MS EQU 35H;20ms标志
;主程序
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0DS
ORG 0100H
MAIN: CLR TR0;关中断
MOV SP,#60H
LCALL DLY20MS
LCALL START;初始化
MOV P1,#0C0H;开始显示000
MOV P2,#0C0H
MOV P3,#0C0H
LCALL KEY1;按下第一次,启动
LOP: MOV R7,BZ
CJNE R7,#5AH,LOP;0.1秒刷屏一次
LCALL LEDDW;显示数值
; MOV BZ,#00H
MOV R6,KEYBZ;判断是否第三次按下
CJNE R6,#83H,LOP
KEYLOP: SETB P0.1
JB P0.1,KEYLOP
LCALL DLY20MS
JB P0.1,KEYLOP
KEYLOP1:SETB P0.1
JNB P0.1,KEYLOP1
LCALL DLY20MS
JNB P0.1,KEYLOP1
MOV KEYBZ,#00H
LJMP MAIN;调回起始000
;初始化
START: MOV LED1,#00H;秒的初值
MOV LED2,#00H
MOV LED3,#00H
MOV KEYBZ,#00H
MOV B20MS,#00
MOV BZ,#00H
MOV TMOD,#01H;定时器的初始化
MOV TH0,#0B1H;送20MS的初值
MOV TL0,#0E0H
SETB ET0
SETB EA
RET
;显示程序
LEDDW: MOV R5,LED1
CJNE R5,#0AH,XIANSHI
MOV LED1,#00H
INC LED2
MOV R5,LED2
CJNE R5,#0AH,XIANSHI
MOV LED2,#00H
INC LED3
MOV R5,LED3
CJNE R5,#0AH,XIANSHI
LJMP MAIN
RET
XIANSHI:MOV DPTR,#LEDTAB
MOV A,LED1
MOVC A,@A+DPTR
MOV P1,A;显示个位
MOV A,LED2
MOVC A,@A+DPTR
MOV P2,A;显示十位
MOV A,LED3
MOVC A,@A+DPTR
MOV P3,A;显示百位
RET
;定时器T0
T0DS: PUSH ACC;保护现场
PUSH PSW
; MOV BZ,#00H
MOV TH0,#0B1H;送20MS的初值
MOV TL0,#0E0H
INC B20MS
MOV R6,B20MS
CJNE R6,#5,T0DS1;每20MS检测一次键盘,每0.1S刷屏一次
MOV B20MS,#0
MOV BZ,#5AH;标志的赋值
INC LED1;秒加一
T0DS1: LCALL KEY;跳到按键程序
LOOP: POP PSW
POP ACC
RETI
;按键子程序
KEY: SETB P0.1
JB P0.1,LOP2
LCALL DLY20MS
JB P0.1,LOP2
LOP3: SETB P0.1
JNB P0.1,LOP3
LCALL DLY20MS
JNB P0.1,LOP3
MOV KEYBZ,#83H
CLR TR0
LOP2: RETI
KEY1: SETB P0.1
JB P0.1,KEY1
LCALL DLY20MS
JB P0.1,KEY1
KEY2: SETB P0.1
JNB P0.1,KEY2
LCALL DLY20MS
JNB P0.1,KEY2
SETB TR0
RET
;延时20MS子程序
DLY20MS:MOV R7,#2;延时20MS
DLY4: MOV R6,#20
DLY3: MOV R5,#250
DJNZ R5,$
DJNZ R6,DLY3
DJNZ R7,DLY4
RET
;数值表
LEDTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
温馨提示:内容为网友见解,仅供参考
无其他回答

C51用2个按键分别控制2个秒表,按键可以实现复位,停止功能的程序
KEYBZEQU31H;按键标志 LED1EQU32H LED2EQU33H LED3EQU34H B20MSEQU35H;20ms标志 ;主程序 ORG0000H LJMPMAIN ORG000BH LJMP T0DS ORG0100H MAIN:CLRTR0;关中断 MOVSP,#60H LCALLDLY20MS LCALLSTART;初始化 MOVP1,#0C0H;开始显示000 MOVP2,#0C0H MOVP3,#0C0H LCALLKEY1;按下第一次,启...

求篮球30秒倒计时器的设计和制作,数字电路课程设计,详细论文
(2)K2键:复位按钮(P3.3)。 按下K2键,不管计数器工作于什么状态,计数器立即复位到预置值 “30” ,在报警状态时按下K2键还可取消报警。 (3)K3键:暂停\/计时切换按钮(P3.4)。 当计数器处于计时状态时按下该键计数器暂停计时,数码管显示数字保持不变;当计数器处于暂停状态按下该键计数器将回到计时状态;初始...

4. 可任意启动\/停止的电子秒表设计
这个实现起来很简单,用晶振,C51芯片,七段数码管,5VDC电源,一个按键,导线,好像还要用译码器等~~你还是自己动脑思考一下吧!~

用c语言编写程序,用于c51单片机四位共阴数码管显示,显示分秒的计时器...
用c语言编写程序,用于c51单片机四位共阴数码管显示,显示分秒的计时器。用proteus做的时钟 可以显示年月日时分秒 可调整时间 有图 \/ includereg52.h

单片机C51程序问题,实现了秒表功能,但是为什么在256秒后就归0了??我...
uchar i=0; 数据类型,改成 uint

...5位显示设定温度;7、8位显示00-59秒表 每秒加1循环;
补充:2个按键key分别控制设定温度的“+”“-”;当实际温度大于设定温度时蜂鸣器响,蜂鸣器频率1000HZ;通过KEILC51软件操作,进行仿真请大神给出c语言程序,最好有实物连接图。。大... 补充:2个按键key分别控制设定温度的“+”“-”;当实际温度大于设定温度时蜂鸣器响,蜂鸣器频率1000HZ;通过KEIL C51软件操作,进行仿真...

交通灯的单片机设计
那还不自己好好做啊,这个作出来很有用啊,这个既不需要扩展口,真的很简单啊,好好做吧,给你个图看看吧,基本上就是这个电路就行了啊 程序也很简单,用定时器就好了啊,中断也用的到,加油啦,支持你,Myfriends!!!(这个图中用了8个LED,做交通灯再加上4个就行了,口也够)...

相似回答
大家正在搜