依次点击开始——程序——文件工具——winhex16位编辑器,
在打开的winhex编辑器主界面中,点击左上方的文件,在d出的选项列表中就可以新建或者打开文件,当然还有其它选项,
选择新建项时,会d出文件属性设置窗口,先选择单位,有Bytes、KB、MB、GB四种,再设置参数大小,完成设置后,点击“确定”按钮即可,
随即我们就可以在新建16进制编辑文件,完成16进制编辑 *** 作后,点击文件——另存为,保存文件,
关闭工具时,如果当前文件未保存,会有一个提示是否保存的窗口,若需要保存,点击“是”按钮,否则点击“否”按钮。
实用单片机电子钟的制作6位数字钟。***************************************************************************
* SXJ1974@163.COM (51C51 TEST WEB) www.8951.COM *
* CREATE BY: 石学军 www.51C51.COM 更多例程请登陆网站 *
***************************************************************************
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP TIME
ORG 0300H
MAIN: MOV 20H,#00H
MOV 21H,#00H
MOV 22H,#00H
MOV 23H,#00H
MOV IP,#02H IP,IE初始化
MOV IE,#82H
MOV TMOD,#01H 设定定时器工作方式?
MOV TL0,#0B0H
MOV TH0,#3CH
SETB TR0 启动定时?
MOV SP,#40H 重设堆栈指针
NEXT: LCALL DISP 调用显示子程序?
LCALL KEY 调用按键检测子程序
JZ NEXT
LCALL ANKEY 调用按键处理子程序
SJMP NEXT 重新循环
NOP
NOP
NOP
中断处理程序: TIME: PUSH ACC 保护现场
PUSH PSW
MOV TL0,#0B4H 赋定时初值
MOV TH0,#3CH
INC 20H
MOV A,20H
CJNE A,#20,RETI1
MOV 20H,#00H 一秒钟时间到
MOV A,21H
ADD A,#01H
DA A
MOV 21H,A
CJNE A,#60H,RETI1
MOV 21H,#00H 一分钟时间到
MOV A,22H
ADD A,#01H
DA A
MOV 22H,A
CJNE A,#60H,RETI1
MOV 22H,#00H 一小时时间到
MOV A,23H
ADD A,#01H
DA A
MOV 23H,A
CJNE A,#24H,RETI1
MOV 23H,#00H 到时间达到24小时,清零.
RETI1: POP PSW 恢复现场
POP ACC
RETI 中断返回?
NOP
NOP
显示子程序
DISP: ANL 2FH,#10H 处理小数点
MOV A,21H 处理秒21H-->2DH,2EH
ANL A,#0FH
ORL A,2FH
MOV 2FH,A
MOV A,21H
ANL A,#0F0H
SWAP A
MOV 2EH,A
ANL 2DH,#10H
MOV A,22H 处理分钟22H-->2CH,2DH
ANL A,#0FH
ORL A,2DH
MOV 2DH,A
MOV A,22H
ANL A,#0F0H
SWAP A
MOV 2CH,A
ANL 2BH,#10H
MOV A,23H 处理小时23H-->2AH,2BH
ANL A,#0FH
ORL A,2BH
MOV 2BH,A
MOV A,23H
ANL A,#0F0H
SWAP A
MOV 2AH,A
MOV R0,#2FH 显示偏移量
MOV R3,#06H
MOV DPTR,#TABLE
MOV A,#0BFH
LOOP1: MOV B,A
MOV P2,A
MOV A,@R0
MOVC A,@A+DPTR
MOV P0,A 送显示
MOV R2,#80H 延时
DJNZ R2,$
DEC R0
MOV A,B
RR A
DJNZ R3,LOOP1 循环显示
RET
TABLE: DB 28H,7EH,0A2H,62H,74H,61H,21H 不带小数点
DB 7AH,20H,60H,00,00,00,00,00,00
DB 8H,5EH,82H,42H,54H,41H,1H,5AH 带小数点
DB 00H,40H,00,00,00,00,00,00
NOP
NOP
按键判断程序
KEY: MOV P3,#0FFH
MOV A,P3
CPL A
ANL A,#3CH
JZ RETX 无键按下则返回
LCALL DISP
LCALL DISP
MOV A,P3
CPL A
ANL A,#3CH
JZ RETX 键盘去抖动。
MOV R6,A 将键值存入R6。
LOOP2: LCALL DISP
MOV A,P3
CPL A
ANL A,#3CH
JNZ LOOP2 等待键释放
MOV A,R6
RETX: RET
NOP
NOP
按键处理子程序
ANKEY: CLR EA 关中断
LX: MOV A,R6
JB ACC.2,L1 是功能键转L1
JB ACC.3,L2 是确认键转L2
JB ACC.4,L3 是减1键转L3
JNB ACC.5,L12 不是增1键,转L12
JB 2BH.4,L6 判断使哪一位(时、分、秒)的值加1
JB 2DH.4,L8
JB 2FH.4,L9
L12: LCALL DISP
LCALL DISP
LCALL KEY 判断有无键按下。
JZ L12
LJMP LX
L2: MOV 25H,#00H 确认键处理程序
CLR 2BH.4
CLR 2DH.4
CLR 2FH.4
SETB EA
RET
L3: JB 2BH.4,L61 增一键处理程序
JB 2DH.4,L81
JB 2FH.4,L91
AJMP L12
L1: MOV A,25H 功能键处理程序
JZ LB1
JB ACC.0,LB2
JB ACC.1,LB3
JNB ACC.2,L12
LB1: MOV 25H,#01H 25H单元是标志位,(25H)=01H调节时单元的值
SETB 2BH.4
CLR 2DH.4
CLR 2FH.4
AJMP L12
LB3: MOV 25H,#04H 25H单元是标志位,(25H)=01H调节秒单元的值
SETB 2FH.4
CLR 2DH.4
CLR 2BH.4
AJMP L12
LB2: MOV 25H,#02H 25H单元是标志位,(25H)=01H调节分单元的值
SETB 2DH.4
CLR 2BH.4
CLR 2FH.4
AJMP L12
L61: AJMP L611
L81: AJMP L811
L91: AJMP L911
L6: MOV A,23H 时加一
ADD A,#01H
DA A
MOV 23H,A
CJNE A,#24H,L15
L15: JC L112
MOV 23H,#00H
L112: AJMP L12
L8: MOV A,22H 分加一
ADD A,#01H
DA A
MOV 22H,A
CJNE A,#60H,L16
L16: JC L112
MOV 22H,#00H
AJMP L12
L9: MOV A,21H 秒加一
ADD A,#01H
DA A
MOV 21H,A
CJNE A,#60H,L17
L17: JC L112
MOV 21H,#00H
AJMP L12
L611: MOV A,23H 时减一
ADD A,#99H
DA A
MOV 23H,A
CJNE A,#99H,L112
MOV 23H,#23H
AJMP L12
L811: MOV A,22H 分减一
ADD A,#99H
DA A
MOV 22H,A
CJNE A,#99H,L112
MOV 22H,#59H
AJMP L12
L911: MOV A,21H 秒减一
ADD A,#99H
DA A
MOV 21H,A
CJNE A,#99H,L112
MOV 21H,#59H
AJMP L12
NOP
NOP
END
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)