软件是要硬件支持的 下面有个图参考
程序可能要调试一下 你是 高手这个应该没什么问题吧。。。
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各版本系统都支持,含有汉化包和安装说明(不汉化为原版更好),满意请采纳,谢谢!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)