数字时钟kell 程序

数字时钟kell 程序,第1张

软件是要硬件支持的     下面有个图参考

程序可能要调试一下      你是 高手这个应该没什么问题吧。。。

LED   BIT  P3.7       指示灯

TT0   EQU  09H

TT1   EQU  0AH

TT2   EQU  0BH        位定义

XIAN0 EQU  50H

XIAN1 EQU  51H

XIAN2 EQU  52H

XIAN3 EQU  53H        显存定义

FEN   EQU  54H        分存定义

SHI   EQU  55H        时存定义

ZHI   EQU  57H        按钮暂存内容定义

FLASH BIT  30H        闪烁标志位定义

SBIAO BIT  31H        定时器工作两种状态的标志位

KEY   BIT  32H        正常工作时屏蔽“加键”标志位

ORG 0000H

LJMP MAIN

ORG 000BH

LJMP NIEDS0

ORG 0050H

MAIN:

MOV SP,#60H

MOV ZHI,#00   按钮初始值

MOV R7,#10

MOV R6,#2

MOV R5,#10

MOV R4,#2

MOV XIAN0,#0

MOV XIAN1,#0

MOV XIAN2,#0

MOV XIAN3,#0

MOV R0,#FEN

MOV FEN,#0

MOV SHI,#0

MOV TMOD,#01H

MOV TH0,#3CH

MOV TL0,#0B0H

SETB FLASH     开机显示不闪

SETB SBIAO     开机定时器正常工作

SETB LED

CLR KEY        初始屏蔽加键

SETB TR0

SETB ET0

SETB EA

NIEXQ:

LCALL DISP

LCALL KEYHAND

LJMP NIEXQ

NIEDS0:

PUSH ACC

PUSH PSW

JNB SBIAO,DSSS   判断是正常工作还是闪烁标志位取反

DJNZ R5,NIEOUT

MOV R5,#10

CPL LED          指示灯1S闪烁,因为是取反,所以要500MS取反一次

DJNZ R4,NIEOUT

MOV R4,#2

MOV A,FEN

INC A

MOV FEN,A

CJNE A,#60,NIEOUT

MOV FEN,#0

MOV A,SHI

INC A

MOV SHI,A

CJNE A,#24,NIEOUT

MOV SHI,#0

AJMP NIEOUT

DSSS:

DJNZ R7,NIEOUT

MOV R7,#10

CPL FLASH         进入调整状态,标志位取反,显示中判断

CPL LED           指示灯在调整时也闪烁

DJNZ R6,NIEOUT

MOV R6,#2

NIEOUT:

MOV TH0,#3CH

MOV TL0,#0B0H

POP PSW

POP ACC

RETI

DISP:

LCALL PAND        判断子程序,为了达到调整时闪烁

CLR  P3.3

SETB P3.2

SETB P3.1

SETB P3.0         直接对独立指定位CLR/SETB是为了不影响到P3.7指示灯的闪烁

MOV A,XIAN0

LCALL CHAB        查段码

CLR  P3.2

SETB P3.3

SETB P3.1

SETB P3.0         直接对独立指定位CLR/SETB是为了不影响到P3.7指示灯的闪烁

MOV A,XIAN1

LCALL CHAB        查段码

CLR  P3.1

SETB P3.2

SETB P3.3

SETB P3.0         直接对独立指定位CLR/SETB是为了不影响到P3.7指示灯的闪烁

MOV A,XIAN2

LCALL CHAB        查段码

CLR  P3.0

SETB P3.1

SETB P3.2

SETB P3.3         直接对独立指定位CLR/SETB是为了不影响到P3.7指示灯的闪烁

MOV A,XIAN3

LCALL CHAB        查段码

RET

CHAB:

MOV DPTR,#TAB

MOVC A,@A+DPTR

MOV P1,A

LCALL DELAY

MOV P1,#0FFH

RET

PAND:                     判断是否闪烁???

MOV A,R0

CJNE A,#FEN,PPS

JNB FLASH,FFS

LCALL DIVDIV

RET

FFS:

MOV XIAN1,#10

MOV XIAN0,#10

RET

PPS:

JNB FLASH,SSS

LCALL DIVDIV

RET

SSS:

MOV XIAN2,#10

MOV XIAN3,#10

RET

DIVDIV:                    分``时分解

MOV A,FEN

MOV B,#10

DIV AB

MOV XIAN1,A

MOV XIAN0,B

MOV A,SHI

MOV B,#10

DIV AB

MOV XIAN3,A

MOV XIAN2,B

RET

KEYHAND:                   按键扫描子程序

LCALL KAP

JZ NOKEY

PUSH P1            暂存P1状态!!

LCALL DISP

POP  P1

LCALL KAP

JZ NOKEY

MOV A,P1

JNB ACC.0,K1

JNB ACC.1,K2

NOKEY:

RET

KAP:                       通用型KAP

MOV A,P1

ORL A,#0FCH

CPL A

RET

DENDAI:                    等待键d起

PUSH P1

LCALL DISP

POP  P1

LCALL KAP

JNZ DENDAI

RET

K1:

LCALL DENDAI

MOV A,ZHI

INC A

MOV ZHI,A

CJNE A,#1,KTF

CLR SBIAO          按第一次时开启定时器中FLASH标志位取反``

SETB KEY           取消屏蔽

RET

KTF:

CJNE A,#2,KKAI

MOV R0,#SHI        按第二次属调时

RET

KKAI:

CJNE A,#3,K1OUT

MOV ZHI,#0

MOV R0,#FEN        恢复初始状态``调分

SETB SBIAO         开启定时1S工作

SETB FLASH         判断PAND子程序中用到

CLR KEY            屏蔽K2键

K1OUT :

RET

K2:

JNB KEY,K2OUT      是否屏蔽

LCALL DENDAI

MOV A,R0

CJNE A,#FEN,KKS    是否调分

MOV A,FEN

INC A

MOV FEN,A

CJNE A,#60,K2OUT

MOV FEN,#0

RET

KKS:                       不是调分``一定是调时

MOV A,SHI

INC A

MOV SHI,A

CJNE A,#24,K2OUT

MOV SHI,#0

K2OUT:

RET

DELAY:

MOV TT1,#02

DEE1:

MOV TT2,#0FFH

DJNZ TT2,$

DJNZ TT1,DEE1

RET

TAB:

DB 0FH,1FH,2FH,3FH,4FH,5FH,6FH,7FH,8FH,9FH,0FFH

END

keil5设置中文的方法如下:

电脑:华为笔记本。

系统:Windows10专业版2004。

工具:Keil uVision 5.18 MDK版。

1、在开始菜单栏找到Keil5快捷方式,点击打开keil5设置中文

2、进入Keil5主界面,点击菜单栏的“Edit”keil5设置中文。

3、在d出的列表中选择最后面的那个“Configuration”,进入配置keil5设置中文。

4、在d出的“Configuration”对话框中找到Edit页,并切换,找到Encodingkeil5设置中文。

5、点击“Encoding”右侧文本框的箭头,找到Chinese GB2312(Simplified),也就是简体中文编码keil5设置中文。

6、配置完毕有点“Ok”,回到程序编辑界面,可以看到之前显示为问号的汉字总算出来了keil5设置中文。

我的百度云盘下载链接(永久免费使用),我用的就是这个,c语言、汇编语言都完美支持,windows各版本系统都支持,含有汉化包和安装说明(不汉化为原版更好),满意请采纳,谢谢!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11723582.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存