;写了几天的代码,不是这些,这些只是代码中还能用的那些,写了几天的是那输入的程序。
;一个小小键盘居然写了几天,发现根本就没有用。是不是它耍我。
;一个小小的键盘,居然占了80%的代码
;居然写了那么多都是没用的代码
;这个时钟用定时器来计时,参数还没修正,这参数是单纯振荡1s的参数,我的晶振用的是11.0592M的,中断子程序和显示子程序的时间还没算上,每秒都有1-2ms的误差这误差不小,1天可能差半个钟了
;发现位的操作有待进一步学习
SEC DATA 100H ;秒
MIN DATA 101H ;分
HOUR DATA 102H ;时
JS DATA 103H ;定时器循环参数
MING DATA 104H ;分钟个位
MINS DATA 105H ;分针十位
HOURG DATA 106H ;时针个位
HOURS DATA 107H ;时针十位
ORG 0000H
AJMP MAIN
ORG 000BH ;计时中断入口
AJMP TIME
;********************************主程序,初始化************************************
ORG 0030H
MAIN: MOV SP,60H
MOV TMOD,#00010001B
SETB TR0
MOV JS,#014H
MOV TH0,#04BH ;计时延时参数
MOV TL0,#06AH
SETB ET0
SETB EA
MOV SEC,#0H
MOV MIN,#0H
MOV HOUR,#0H
ACALL DISPLAY
SJMP $
;********************************时间中断,判断时间********************************
TIME: MOV TH0,#04BH ;键盘扫描延时参数
MOV TL0,#06AH
DJNZ JS,ING ;等待1s开始计时
MOV JS,#014H
INC SEC ;加1s,时,分,秒进位
MOV A,SEC
CJNE A,#60,ING1
MOV SEC,#0H
INC MIN
MOV A,MIN
CJNE A,#60,ING2
MOV MIN,#0H
INC HOUR
MOV A,HOUR
CJNE A,#24,ING
MOV HOUR,#00H
ING1: NOP ;空指令,统一时间
NOP
NOP
NOP
NOP
NOP
ING2: NOP ;空指令,统一时间
NOP
NOP
NOP
NOP
NOP
ACALL DISPLAY
ING: RETI
;***************************LED显示子程序*************************************
DISPLAY:MOV A,MIN ;显示分钟,十位个位分离显示
MOV B,#10
DIV AB
MOV DPTR,#NUM
MOVC A,@A+DPTR
MOV P1,A
MOV A,B
MOVC A,@A+DPTR
MOV P0,A
MOV A,HOUR ;显示小时,十位个位分离显示
MOV B,#10
DIV AB
MOV DPTR,#NUM
MOVC A,@A+DPTR
MOV P3,A
MOV A,B
MOVC A,@A+DPTR
MOV P2,A
MOV A,SEC
JB ACC.0,ENTER
CLR P2.7
ENTER: RET
ORG 115H
NUM: DB 0C0H,0F9H,0A4H,0B0H,99H
DB 92H,82H,0F8H,80H,90H
END
用户1353393 2008-3-14 15:58
用户1445525 2008-1-27 23:47
JB ACC.0,ENTER
错了吧。。。。