关于1s的定时程序,该怎么处理

关于1s的定时程序
基于单片机的简易电子时钟设计
一 功能分析
1).时制式为24小时制。
2).采用LED数码管显示时、分,秒采用数字显示。
3).具有方便的时间调校功能。
4).计时稳定度高,可精确校正计时精度。
二 总体方案设计论证比较 
2.1 实现时钟计时的基本方法
利用MCS-51系列单片机的可编程定时/计数器、中断系统来实现时钟计数。
(1) 计数初值计算:
把定时器设为工作方式1,定时时间为50ms,则计数溢出20次即得时钟计时最小单位秒,而100次计数可用软件方法实现。
假设使用T/C0,方式1,50ms定时,fosc=12MHz。
则初值X满足(216-X)×1/12MHz×12μs =50000μs
X=15536→0011110010110000→3CB0H
(2) 采用中断方式进行溢出次数累计,计满20次为秒计时(1秒);
(3) 从秒到分和从分到时的计时是通过累加和数值比较实现。
2.2 电子钟的时间显示
电子钟的时钟时间在六位数码管上进行显示,因此,在内部RAM中设置显示缓冲区共8个单元。
LED8 LED7 LED6 LED5 LED4 LED3 LED2 LED1
37H 36H 35H 34H 33H 32H 31H 30H
时十位 时个位 分隔 分十位 分个位 分隔 秒十位 秒个位
2.3 电子钟的时间调整
电子钟设置3个按键通过程序控制来完成电子钟的时间调整。
A键调整时;
B键调整分;
C键复位
六 程序清单
  ORG 0000H
  MOV 30H,#1 设置时钟的起始时间12.00.00,分配显示数据内存
  MOV 31H,#2  
  MOV 32H,#0
  MOV 33H,#0
  MOV 34H,#0
  MOV 35H,#0



  MOV TMOD,#01 启动计数器
XS0: SETB TR0 使 TRO位置1
  MOV TH0,#00H 计数器置零
  MOV TL0,#00H

xs:
、、、、、、;(显示程序)
  

P1000: JNB P1.1,P1000 为0则 转移到P1000,P1.1是调整“时”,的按键
  MOV A,31H 时个位数据到A
  CJNE A,#9,JIA10000 与 9进行比较,大于9就转移到JIA10000  
  MOV 31H,#0 时的个位清零
   
  MOV A,30H 时十位数据到A
  CJNE A,#2,JIA100000 与2进行比较,大于5就转移到JIA100000  
  MOV 30H,#0 时的十位清零
  AJMP XS0 转移到 XSO
JIA100000:  
  INC 30H 加1
  AJMP XS0 跳转到 XS0
JIA10000:
  CJNE A,#3,JIAJIA 与3进行比较,大于则转移到JIAJIA
  MOV A,30H 将时的十位放到 A
  CJNE A,#02,JIAJIA 与2进行比较,大于则转移到JIAJIA
  MOV 30H,#0 时段清零
  MOV 31H,#0
  AJMP XS0 跳转到XSO
JIAJIA:
  INC 31H 加一
  AJMP XS0 
JIA1000:INC 32H
  AJMP XS0
JIA100: INC 33H
  AJMP XS0  
JIA10: INC 34H
  AJMP XS0
JIA1: INC 35H
  AJMP XS0
  RET 返回
、、、、、、、



很急,大家请看,每次跳转到XS0,SX0是一个定时程序,请问我怎么把XSO改成1S的定时程序,并可以实现如原来程序中的调用?我编了个T0工作在方式1的定时程序,(晶振频率为12MHZ),每隔0.1s中断一次,循环10次完成定时。然而,这个定时程序由几个子程序组成,我无法实现整个模块的调用。。请问各位高手,我怎么解决?

------解决方案--------------------
1)定时程序是自己走的,每到1秒,产生个标志;你调用定时程序干什么? 它没有理由被调用啊?
2)你其实是想调用延时1秒的程序吗?如果是这样,可以增加一个计数器,并利用这个计数器来判断1秒延时是否已到;