分享

成功做一只DS1302电子钟(走时飞快)

 盛世管 2010-11-23
新手啊,费了好多天时间,这个加上软件修正,初步完成的作品,不过走时很快,一小时快1分钟,,电路板布线不好干扰大,1302好像不太稳定,,,以后再完善,想要时间日期交替显示不知怎么做

32768晶振是从电子表上拆下来的,是没问题的,1小时快一分钟太离谱了,是哪里出了问题?布线到底要怎么样,1302和晶振后面并无多余布线啊
urrsu新上图




;6位数码管显示
;P0 为段码口、P2 为位码口
;晶振 11.0592M
;时钟芯片:DS1302
;************** DS1302 端口位定义 **************
  SCLK BIT  P1.0 ; 数据传送总线
IO  BIT  P1.1 ; 时钟控制总线
RST  BIT  P1.2 ; 复位总线
K2 EQU  P3.4   ;减1
K1 EQU  P3.5   ;+1
K3 EQU  P3.6   ;功能
BEEP   EQU  P3.7   ;蜂鸣器
T_CONU  EQU  22H   ;中断计数
SSZZ  EQU  32H  ;校时变量
TIME   EQU  50H   ;显示时间单元首地址
DATE   EQU  56H   ;显示日期单元首地址
;------------------------------------------------
ORG 0000H
AJMP MAIN
ORG  000BH
AJMP  INT_T0
ORG  0100H
;------------------------------------------------
MAIN:
BIJIAO DATA  30H ;分钟比较变量,用于判断分钟不等相等时计数器加1
JISHUQI DATA  31H ;校时计数变量,用于校时时间计数
MOV  SSZZ,#3;快多少秒?
MOV  BIJIAO,#0
MOV  JISHUQI,#0
MOV  TMOD,#01H ;T0,方式1
MOV  T_CONU,#0  ;中断次数
MOV  IE,#82H ;EA=1,ET0=1
MOV  A,#00H
MOV  R0,#40H ;从40H单元开始
MOV  R1,#40H ;清64个单元
M_CLEAR:  MOV  @R0,A
INC  R0
DJNZ  R1,M_CLEAR
MOV  7FH,#0AH ;送熄灭符
SETB   BEEP
LCALL  TIME_DELAY ;调显示延时
LCALL GET_TIME;比较年份小于10年就初始化
  mov a,#10
  cjne a,45H,BD
  ajmp MAIN1 ;10=45H
BD: jc MAIN1 ;10<45H
LCALL  SETDS1302 ;DS1302初始化
MAIN1:
LCALL  GET_TIME   ;从DS1302读数据程序
  LCALL AUTOJS;自动校时子程序
XD:  LCALL  CHULI ;实时时间数据处理
MOV  R0,#TIME ;显示时、分、秒
LCALL  DISP
MOV  R0,#TIME
LCALL  DISPLAY
LCALL  SET_KEY ;键功能程序
JB  K1,MAIN1
ACALL  BEEP_BL
MAIN2:
LCALL  CHULI ;日期数据处理
MOV  R0,#DATE
LCALL  DISP  ;显示年、月、日
MOV  R0,#DATE
LCALL  DISPLAY
JB  K1,MAIN2
ACALL  BEEP_BL
AJMP  MAIN1


;  LCALL  DS_CHULI ;定时时间数据处理
;  MOV  R0,#DS_DATA
;  LCALL  DS_SP  ;显示定时时间
; MOV  R0,#DS_DATA
; LCALL  DS_DISPLAY
; JB  K1,MAIN3
; ACALL  BEEP_BL
;AJMP  MAIN1
;--------------------------------------------
;中断服务子程序
;500MS对闪动标记取反一次
;--------------------------------------------
INT_T0:
PUSH  ACC
PUSH  PSW
MOV  TL0,#0
MOV  TH0,#4CH
INC  T_CONU
MOV  A,T_CONU
CJNE  A,#10,INT_END
MOV  T_CONU,#0
CPL  0AH ;取反0AH位
INT_END:
POP  PSW
POP  ACC
RETI
;--------------------------------------------
;DS1302 初始化子程序
; (R0)=数据  (R1)=地址
;--------------------------------------------
SETDS1302:
;初始化时间 -10年23:59:55
MOV 40H,#52H ;秒赋初值
MOV 41H,#59H ;分赋初值
MOV 42H,#23H ;时赋初值
MOV 43H,#21H ;日赋初值
MOV 44H,#03H ;月赋初值
MOV 46H,#01H ;星期赋初值
MOV 45H,#10H ;年赋初值
  CLR   RST   ;DS1302复位
  CLR   SCLK
  NOP
  NOP
  SETB  RST
MOV R1,#8EH  ;写保护控制命令字
MOV R0,#00H  ;允许写入
LCALL WRITE
MOV  R1,#80H ;写秒寄存器
MOV  R0,40H ;启动振荡器
LCALL WRITE
MOV  R1,#82H ;写分寄存器
MOV  R0,41H
LCALL WRITE
MOV  R1,#84H ;写时寄存器
MOV  R0,42H
LCALL WRITE
MOV  R1,#86H ;写日寄存器
MOV  R0,43H
LCALL WRITE
MOV  R1,#88H ;写月寄存器
MOV  R0,44H
LCALL WRITE
MOV  R1,#8AH ;写周寄存器
MOV  R0,46H
LCALL WRITE
MOV  R1,#8CH ;写年寄存器
MOV  R0,45H
LCALL WRITE
MOV  R1,#90H ;写充电寄存器
MOV  R0,#10100110B;一个二极管,4K电阻
LCALL WRITE
MOV  R1,#8EH ;写保护控制命令字
MOV  R0,#80H;禁示写入
LCALL WRITE
RET
;===============================================
;读时间、日期数据子程序
;存放单元 40H - 46H
;===============================================
GET_TIME:
MOV  R1,#81H ;读秒
LCALL  READ
MOV 40H,R0
MOV  R1,#83H ;读分
LCALL  READ
MOV 41H,R0
MOV  R1,#85H ;读时
LCALL  READ
MOV 42H,R0
MOV  R1,#87H ;读出日期
LCALL  READ
MOV 43H,R0
MOV  R1,#89H ;读出月份
LCALL  READ
MOV 44H,R0
MOV  R1,#8BH ;读出星期
LCALL  READ
MOV 46H,R0
MOV  R1,#8DH ;读出年
LCALL  READ
MOV 45H,R0
RET
;================================================
;写 DS1302 子程序
;================================================
WRITE:
CLR  SCLK
NOP
NOP
SETB  RST
NOP
MOV  A,R1
MOV  R2,#08H
WRI_01:
RRC  A   ;传输地址到DS1302
NOP
NOP
CLR  SCLK
NOP
NOP
MOV  IO,C
NOP
NOP
SETB  SCLK
NOP
NOP
DJNZ  R2,WRI_01
CLR  SCLK
NOP
NOP
MOV  A,R0
MOV  R2,#08H
WRI_02:
RRC  A  ;传输数据到DS1302
NOP
CLR  SCLK
NOP
NOP
MOV  IO,C
NOP
NOP
SETB  SCLK
NOP
NOP
DJNZ  R2,WRI_02
CLR  SCLK
NOP
NOP
CLR  RST
NOP
NOP
RET
;=================================================
;读 DS1302 子程序
;=================================================
READ:
CLR   SCLK
NOP
NOP
SETB  RST
NOP
NOP
MOV  A,R1
MOV  R2,#08H
READ_01:
RRC  A
NOP  ;先传输地址到DS1302
MOV  IO,C
NOP
NOP
SETB  SCLK
NOP
NOP
CLR  SCLK
NOP
NOP
DJNZ  R2,READ_01
NOP
NOP
SETB  IO
CLR  A
CLR  C
MOV  R2,#08H
READ_02:
CLR  SCLK
NOP
NOP
MOV  C,IO
NOP
NOP
RRC  A   ;再从DS1302接收数据
NOP
NOP
SETB  SCLK
NOP
NOP
DJNZ  R2,READ_02
MOV  R0,A
CLR  RST
RET
;==============================================
;实时时间、日期数据处理子程序,40H-50~51H   70H~~
;==============================================
CHULI:
MOV A,40H  ;处理秒数据
ANL A,#0FH
MOV 50H,A
MOV 70H,A
MOV A,40H
ANL A,#0F0H
SWAP A
MOV 51H,A
MOV 71H,A
;---------------------------------------------
MOV A,41H  ;处理分数据
ANL A,#0FH
MOV 52H,A
MOV 72H,A
MOV A,41H
ANL A,#0F0H
SWAP A
MOV 53H,A
MOV 73H,A
;---------------------------------------------
MOV A,42H  ;处理时数据
ANL A,#0FH
MOV 54H,A
MOV 74H,A
MOV A,42H
ANL A,#0F0H
SWAP A
MOV 55H,A
MOV 75H,A
;----------------------------------------------
MOV A,43H  ;处理日数据
ANL A,#0FH
MOV 56H,A
MOV 76H,A
MOV A,43H
ANL A,#0F0H
SWAP A
MOV 57H,A
MOV 77H,A
;---------------------------------------------
MOV A,44H  ;处理月数据
ANL A,#0FH
MOV 58H,A
MOV 78H,A
MOV A,44H
ANL A,#0F0H
SWAP A
MOV 59H,A
MOV 79H,A
;---------------------------------------------
MOV A,45H  ;处理年数据
ANL A,#0FH
MOV 5AH,A
MOV  7AH,A
MOV A,45H
ANL A,#0F0H
SWAP A
MOV 5BH,A
MOV 7BH,A
;----------------------------------------------
MOV A,46H  ;处理周数据
MOV 5CH,A
MOV 7CH,A
RET
; MOV R5,#6 ;6个地址放年月日时分秒
; MOV R0,#50H;拆放在首 50H
; MOV R1,#40H ;实时数据首在40H
;******
; MOV A,@R1
; ANL A,#0FH;秒位
; MOV @R0,A
; MOV A,@R1
;ANL A,#0F0H;10秒位
;SWAP A
;inc R0
; MOV @R0,A
; inc R0
; inc R1
;*****
;djnz R5,CHAN
; MOV A,46H  ;处理周数据
; MOV 5CH,A
; MOV 7CH,A
;*********
;---------------------------------------------
;

;=============================================
;实时时间、日期查表取数子程序
;=============================================
DISP: ;MOV  R0,#TIME; MOV  R0,#DATA
MOV R3,#06H
DISP1: MOV A,@R0
MOV DPTR,#TAB_NU
MOVC A,@A+DPTR
MOV @R0,A
INC R0
DJNZ R3,DISP1
RET
;====================================================
;时间、日期显示子程序
;====================================================
DISPLAY:
;**********************
; 显示数据在#TIME单元内,用六位LED共阳数码管显示,P0口输出段码数据,P2
口作扫描控制,每个LED数码管亮1MS时间再逐位循环。
;**********************
;
MOV R5,#0FEH ;扫描控制字初值
PLAY:
MOV  P0,@R0 ;扫描字放入p0
MOV  A,R5
MOV  P2,A   ;数码显示
LCALL DELAY;显示1MS
INC R0 ;指向下一地址
JNB ACC.5,ENDOUT ;ACC.5=0时一次显示结束
RL A ;A中数据循环左移
MOV R5,A ;放回R5内
AJMP PLAY ;跳回PLAY循环
ENDOUT: SETB P2.5 ;一次显示结束,P2口复位
MOV P0,#0FFH ;P0口复位
RET ;子程序返回
DELAY:
MOV  R4,#0AH
  L15: MOV  R5,#64H
  L16: DJNZ  R5,L16
DJNZ  R4,L15
RET
;***************************
DISP11:
MOV DPTR,#TAB_NU
MOVC A,@A+DPTR
mov p0,a
clr p2.0
Lcall DELAY1ms
setb p2.0
RET
;******************************************************
SET_KEY:           ;按键程序
SETB  K1 ;增加键
SETB  K2 ;减少键
SETB  K3 ;选择键
;******************************************************
NOP
KEY01:   JB  K3,KEY02
LCALL  BEEP_BL
JMP  SET_TIME ;进入时间设定子程序
KEY02:   JB  K2,KEY03
LCALL  BEEP_BL
LCALL  SET_DAY;进入DAY设定程序
KEY03:   RET
;***************************************
;======================================
;实时时间设定子程序
;K1为加键、K2为减键、K3为选择键
;======================================
SET_TIME:
MOV  R1,#8EH ;写保护寄存器
MOV  R0,#00H ;允许写入
LCALL WRITE
SETB  TR0 ;中断启动
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
K00H: ACALL TIME_DELAY   ;校时
JNB K3,K00H  ;K3为位移键
K0H0:
LCALL GET_TIME
ACALL  CHULI
JNB  0AH,KH01
MOV  54H,7FH ;送入熄灭符
MOV  55H,7FH
JMP  KH02
KH01:   MOV  54H,74H ;送实时值
MOV  55H,75H ;送实时值
KH02:   MOV  R0,#TIME
ACALL  DISP
MOV  R0,#TIME
ACALL  DISPLAY
JNB  K1,K0H1A;+
JNB  K2,K0H1B;-
JNB  K3,K00F
JMP  K0H0

K0H1A:;加1
MOV  A,42H
ADD A,#01H
DA A
MOV 42H,A
XRL  A,#24H
JNZ K0H2A
MOV  42H,#00H
K0H2A:   MOV  R1,#84H  ;写时寄存器
MOV  R0,42H
LCALL WRITE
ACALL  TIME_DELAY
JMP  K0H0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
K0H1B:;减1
MOV  A,42H
XRL  A,#00H
JZ  K0H2B
SETB  C ;求补运算
CLR  A
ADDC  A,#99H ;加99
SUBB  A,#01H ;减去减数
ADD   A,42H ;加被减数
DA A ;十进制调整
MOV 42H,A   ;
XRL  A,#00H
JNZ K0H2C
K0H2B:   MOV  42H,#23H
K0H2C:   MOV  R1,#84H  ;写时寄存器
MOV  R0,42H
LCALL WRITE
ACALL  TIME_DELAY
JMP  K0H0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


K00F: ACALL TIME_DELAY   ;校分
JNB K3,K00F   ;K3为位移键
K0F0:
LCALL GET_TIME
ACALL  CHULI
JNB  0AH,KM01
MOV  52H,7FH ;送入熄灭符
MOV  53H,7FH
JMP  KM02
KM01:   MOV  52H,72H ;送实时值
MOV  53H,73H ;送实时值
KM02:   MOV  R0,#TIME
ACALL  DISP
MOV  R0,#TIME
ACALL  DISPLAY
JNB  K1,K0F1A
JNB  K2,K0F1B
JNB  K3,K002
JMP  K0F0
K0F1A:  ;加1
MOV  A,41H
ADD  A,#01H
DA A
MOV  41H,A
XRL  A,#60H
JNZ  K0F2A
MOV  41H,#00H
K0F2A:   MOV  R1,#82H  ;写分寄存器
MOV  R0,41H
LCALL WRITE
ACALL  TIME_DELAY
JMP  K0F0
;---------------------------------------------------
K0F1B:;减1
MOV  A,41H
XRL  A,#00H
JZ  K0F2B
SETB  C ;求补运算
CLR  A
ADDC  A,#99H ;加99
SUBB  A,#01H ;减去减数
ADD   A,41H ;加被减数
DA A ;十进制调整
MOV 41H,A   ;
XRL  A,#00H
JNZ K0F2C
K0F2B:   MOV  41H,#59H
K0F2C:   MOV  R1,#82H  ;写分寄存器
MOV  R0,41H
LCALL WRITE
ACALL  TIME_DELAY
JMP  K0F0
;---------------------------------------------------
K002: ACALL TIME_DELAY   ;校秒
JNB K3,K002   ;K3为位移键
K020:
LCALL GET_TIME
ACALL  CHULI
JNB  0AH,KS01
MOV  50H,7FH ;送入熄灭符
MOV  51H,7FH
JMP  KS02
KS01:   MOV  50H,70H ;送实时值
MOV  51H,71H ;送实时值
KS02:   MOV  R0,#TIME
ACALL  DISP
MOV  R0,#TIME
ACALL  DISPLAY
JNB  K1,K021A
JNB  K2,K021B
JNB  K3,END_SJ
JMP  K020
K021A: ;加1
MOV  A,40H
ADD  A,#01H
DA A
MOV  40H,A
XRL  A,#60H
JNZ  K022A
MOV  40H,#00H
K022A:   MOV  R1,#80H  ;写秒寄存器
MOV  R0,40H
LCALL WRITE
ACALL  TIME_DELAY
JMP  K020
;---------------------------------------------------
K021B: ;减1
MOV  A,40H
XRL  A,#00H
JZ  K022B
SETB  C ;求补运算
CLR  A
ADDC  A,#99H ;加99
SUBB  A,#01H ;减去减数
ADD   A,40H ;加被减数
DA A ;十进制调整
MOV 40H,A   ;
XRL  A,#00H
JNZ K022C
K022B:   MOV  40H,#59H
K022C:   MOV  R1,#80H  ;写秒寄存器
MOV  R0,40H
LCALL WRITE
ACALL  TIME_DELAY
JMP  K020
END_SJ: LCALL KXBH;写保护
CLR  0AH
CLR  TR0
ACALL  BEEP_BL
RET
;-------------------------------------------------

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SET_DAY:;进入DAY设定程序;;;;;;;;;;;;;;;;;;;;;
MOV  R1,#8EH ;写保护寄存器
MOV  R0,#00H ;允许写入
LCALL WRITE
SETB  TR0
K003: ACALL DATE_DELAY   ;校日
JNB K2,K003   ;K2为位移键
K030: ACALL  CHULI
JNB  0AH,KR01
MOV  56H,7FH ;送入熄灭符
MOV  57H,7FH
JMP  KR02
KR01:   MOV  56H,76H ;送实时值
MOV  57H,77H ;送实时值
KR02:   MOV  R0,#DATE
ACALL  DISP
MOV  R0,#DATE
ACALL  DISPLAY
JNB  K3,K031A
JNB  K1,K031B
JNB  K2,K004
JMP  K030
K031A:
MOV  A,43H
ADD  A,#01H
DA A
MOV  43H,A
XRL  A,#32H
JNZ  K032A
MOV  43H,#00H
K032A: MOV  R1,#86H  ;写日寄存器
MOV  R0,43H
LCALL WRITE
ACALL  DATE_DELAY
JMP  K030
K031B:
MOV  A,43H
XRL  A,#00H
JZ  K032B
SETB  C   ;求补运算
CLR  A
ADDC  A,#99H  ;加99
SUBB  A,#01H  ;减去减数
ADD   A,43H   ;加被减数
DA A ;十进制调整
MOV 43H,A
XRL  A,#00H
JNZ K032C
K032B:   MOV  43H,#31H
K032C:   MOV  R1,#86H  ;写日寄存器
MOV  R0,43H
LCALL WRITE
ACALL  DATE_DELAY
JMP  K030
;------------------------------------------------
K004: ACALL DATE_DELAY ;校月
JNB K2,K004   ;K3为位移键
K040: ACALL  CHULI
JNB  0AH,KC01
MOV  58H,7FH  ;送入熄灭符
MOV  59H,7FH
JMP  KC02
KC01:   MOV  58H,78H  ;送实时值
MOV  59H,79H  ;送实时值
KC02:   MOV  R0,#DATE
ACALL  DISP
MOV  R0,#DATE
ACALL  DISPLAY
JNB  K3,K041A
JNB  K1,K041B
JNB  K2,K005
JMP  K040
K041A:
MOV  A,44H
ADD  A,#01H
DA A
MOV  44H,A
XRL  A,#13H
JNZ  K042A
MOV  44H,#00H
K042A:   MOV  R1,#88H  ;写月寄存器
MOV  R0,44H
LCALL WRITE
ACALL  DATE_DELAY
JMP  K040
K041B:
MOV  A,44H
XRL  A,#00H
JZ  K042B
SETB  C ;求补运算
CLR  A
ADDC  A,#99H ;加99
SUBB  A,#01H ;减去减数
ADD   A,44H ;加被减数
DA A ;十进制调整
MOV 44H,A   ;
XRL  A,#00H
JNZ  K042C
K042B:   MOV  44H,#12H
K042C:   MOV  R1,#88H ;写月寄存器
MOV  R0,44H
LCALL WRITE
ACALL  DATE_DELAY
JMP  K040
;-----------------------------------------------
K005: ACALL DATE_DELAY   ;校年
JNB K2,K005   ;K3为位移键
K050: ACALL  CHULI
JNB  0AH,KY01
MOV  5AH,7FH ;送入熄灭符
MOV  5BH,7FH
JMP  KY02
KY01:   MOV  5AH,7AH ;送实时值
MOV  5BH,7BH ;送实时值
KY02:   MOV  R0,#DATE
ACALL  DISP
MOV  R0,#DATE
ACALL  DISPLAY
JNB  K3,K051A
JNB  K1,K051B
JNB  K2,K006
JMP  K050
K051A:
MOV  A,45H
ADD  A,#01H
DA A
MOV  45H,A
XRL  A,#9AH
JNZ  K052A
MOV  45H,#00H
K052A:   MOV  R1,#8CH ;写年寄存器
MOV  R0,45H
LCALL WRITE
ACALL  DATE_DELAY
JMP   K050
K051B:
MOV  A,45H
XRL  A,#00H
JZ  K052B
SETB  C ;求补运算
CLR  A
ADDC  A,#99H ;加99
SUBB  A,#01H ;减去减数
ADD   A,45H ;加被减数
DA A ;十进制调整
MOV  45H,A   ;
XRL  A,#00H
JNZ  K052C
K052B:   MOV  45H,#99H
K052C:   MOV  R1,#8CH ;写年寄存器
MOV  R0,45H
LCALL WRITE
ACALL  DATE_DELAY
JMP   K050
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
K006: ACALL DATE_DELAY   ;校误差
JNB K2,K006   ;K3为位移键
K060:
  MOV  A,#SSZZ
ACALL  DISP11
JNB  K3,K061A
JNB  K1,K061B
JNB  K2,END_RQ
JMP  K060
K061A:
MOV A,sszz
add a,#1
mov sszz,a
  jmp K060
K061B:
MOV A,sszz
subb a,#1
clr c
MOV sszz, A
  JMP   K060


END_RQ: LCALL KXBH ;写保护
CLR  0AH
CLR  TR0
ACALL  BEEP_BL
RET

;-------------------------------------------------

KXBH: JNB K3,KXBH;开写保护
MOV  R1,#8EH ;写保护寄存器
MOV  R0,#80H ;禁止写入
LCALL WRITE
SETB   SCLK
CLR    RST
ACALL  DATE_DELAY
RET
;===================================================

;====================================================
;====================================================
;键延时子程序
;多次调用显示程序做键延时
;====================================================
TIME_DELAY:  ;设定时间,键延时用
MOV  R6,#0AH
TIME_KK:
LCALL  CHULI
MOV  R0,#TIME
LCALL  DISP
MOV  R0,#TIME
ACALL  DISPLAY
DJNZ  R6,TIME_KK
RET
DATE_DELAY:  ;设定日期,键延时用
MOV  R6,#0AH
DATE_KK:
LCALL  CHULI
MOV  R0,#DATE
LCALL  DISP
MOV  R0,#DATE
ACALL  DISPLAY
DJNZ  R6,DATE_KK
RET
;====================================================
;蜂鸣器响一声子程序
;====================================================
BEEP_BL:
MOV  R6,#100
BL2: ACALL  DEX1
CPL  BEEP
DJNZ  R6,BL2
MOV  R5,#10
ACALL  DELAY_BL
RET
DEX1:   MOV  R7,#180
DE2: NOP
DJNZ  R7,DE2
RET
DELAY_BL:  ;(R5)*延时10MS
MOV  R6,#50
DL1: MOV  R7,#100
DJNZ  R7,$
DJNZ  R6,DL1
DJNZ  R5,DELAY_BL
RET
DELAY1ms:   ;误差 -0.651041666667us
    MOV R6,#66H
DL00:
    MOV R5,#03H
    DJNZ R5,$
    DJNZ R6,DL00
    RET

;*************************************************************
TAB_NU:  DB 81H,0BDH,49H,19H,35H,13H,03H,0B9H,01H,11H ;0-9
DB 0FFH ;灭
;《 共阳数码管 》
;*************************************************************
   ;自动校时子程序,用来修正时间误差
AUTOJS:
MOV A,41H;分钟放入A
CJNE A,BIJIAO,AU_1;比较分是否相同
JMP AU_2
AU_1:   MOV BIJIAO,A;不同则放入比较器
MOV A,JISHUQI;计数器加1
INC A
MOV JISHUQI,A
AU_2:   MOV A,JISHUQI;相同则比较计数器
CJNE  A,#2,OUT;计数是否到1?
MOV A,40H;到了
CJNE A,sszz,OUT;是否到了sz秒等于sz 校回到0秒
CLR RST
CLR SCLK
SETB   RST
MOV R1,#8EH  ;写控制命令字
MOV R0,#00H  ;允许写入
LCALL WRITE
MOV R1,#80H  ;写秒寄存器
MOV R0,#00H  ;设回0秒
LCALL WRITE
MOV R1,#8EH  ;写控制命令字
MOV R0,#80H  ;禁止写入
LCALL WRITE
SETB   SCLK
CLR RST
MOV  JISHUQI,#0 ;计数器清0
OUT: RET
end


[ 此帖被fang3在2010-03-24 16:35重新编辑 ]
图片:照片 002.jpg
图片:照片 003.jpg
图片:照片 004.jpg
图片:ww.jpg

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多