导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→发表看法:[lmzhj]初学者:DS12C887与AT89C51



No.5800
作者:lmzhj
邮件:lmzhj@163.com
ID:2800
登陆:4次
文章数:6篇
最后登陆IP:61.191.23.100
最后登陆:2009/10/20 23:20:03
注册:2002/2/21 21:05:00
财富:30
发帖时间:2002/2/25 21:01:00
发贴者IP:61.132.208.254
标题:lmzhj:初学者:DS12C887与AT89C51
摘要:No.5800初学者:DS12C887与AT89C51 采用AT89C51与DS12C887做一时钟,段驱动用MC14511,位选用74LS154,先是采用总线形式
(P0)失败,后采用模拟DS12C887时序:(AS--ALE)改为(AS--P3.0),其它连线不变,依然失
败。请指点迷津,谢谢!程序如下:
SECOND EQU 00H ;秒暂存器
SECOND_ALARM EQU 01H ;秒闹铃暂存器
MINUTE EQU 02H ;分暂存器
MINUTE_ALARM EQU 03H ;分闹铃暂存器
HOUR EQU 04H ;时暂存器
HOUR_ALARM EQU 05H ;时闹铃暂存器
WEEK EQU 06H ;星期暂存器
DATE EQU 07H ;日暂存器
MONTH EQU 08H ;月暂存器
YEAR EQU 09H ;年暂存器
REG_A EQU 0AH ;暂存器 A
REG_B EQU 0BH ;暂存器 B
REG_C EQU 0CH ;暂存器 C
REG_D EQU 0DH ;暂存器 D
CENTURY EQU 32H ;世纪暂存器

SECOND_BUFFER EQU 50H ;秒缓冲器
MINUTE_BUFFER EQU 51H ;分缓冲器
HOUR_BUFFER EQU 52H ;时缓冲器
WEEK_BUFFER EQU 53H ;星期缓冲器
DATE_BUFFER EQU 54H ;日缓冲器
MONTH_BUFFER EQU 55H ;月缓冲器
YEAR_BUFFER EQU 56H ;年缓冲器
CENTURY_BUFFER EQU 57H ;世纪缓冲器

ORG 0H
START: JMP MAIN
ORG 13H
JMP RTC_INT
ORG 30H
MAIN: MOV SP,#60H
MOV IE,#10000100B ;致能外部中断1
MOV SECOND_BUFFER,#55H ;秒缓冲器,作调试用
MOV MINUTE_BUFFER,#11H ;分缓冲器
MOV HOUR_BUFFER,#15H ;时缓冲器
MOV WEEK_BUFFER,#04H ;星期缓冲器
MOV DATE_BUFFER,#20H ;日缓冲器
MOV MONTH_BUFFER,#02H ;月缓冲器
MOV YEAR_BUFFER,#02H ;年缓冲器
MOV CENTURY_BUFFER,#20H ;世纪缓冲器
;延时-----------------------------------------------------
CALL DELAY3
;设定DS12C887-------------------------------------------------
;------------REG_A=00101111B ;开启振荡器和允许计时,输出方波2Hz
MOV B,#REG_A
MOV A,#00101111B;
CALL WRITE
;------------REG_B=10000000B ;设定SET=1,禁止更新资料
MOV B,#REG_B
MOV A,#80H
CALL WRITE
;------------SECOND=55 ;设定 55 秒
MOV B,#SECOND
MOV A,#55H
CALL WRITE
;------------SECOND_ALARM=10H ;设定闹铃在 10 秒
MOV B,#SECOND_ALARM
MOV A,#10H
CALL WRITE
;------------MINUTE=00 ;设定 00 分
MOV B,#MINUTE
MOV A,#25H
CALL WRITE
;------------MINUTE_ALARM,#0C0H ;设定闹铃在随意码
MOV A,#MINUTE_ALARM
MOV A,#0C0H
CALL WRITE
;------------HOUR,#17H ;设定 17 时
MOV A,#HOUR
MOV A,#15H
CALL WRITE
;------------HOUR_ALARM,#0C0H ;设定闹铃在随意码
MOV A,#HOUR_ALARM
MOV A,#0C0H
CALL WRITE
;------------WEEK,#02H ;设定星期一
MOV B,#WEEK
MOV A,#04H
CALL WRITE
;------------DATE,#18H ;设定 18 日
MOV B,#DATE
MOV A,#20H
CALL WRITE
;------------MONTH,#02H ;设定 02 月
MOV B,#MONTH
MOV A,#02H
CALL WRITE
;------------YEAR,#02H ;设定 02 年
MOV B,#YEAR
MOV A,#02H
CALL WRITE
;------------CENTURY,#19H ;设定 19 世纪
MOV B,#CENTURY
MOV A,#20H
CALL WRITE
;------------REG_B,#00011010B ;设定SET=0,AIE=1,SQWE=1,BCD模式,24小时制
MOV B,#REG_B
MOV A,#00010010B
CALL WRITE
;-显示世纪两位资料------------------------
DISPLAY: MOV A,CENTURY_BUFFER;暂存器中的数值送A
ANL A,#0F0H ;截取高4位
MOV P1,#0FFH ;先关闭LED,以免视觉干扰
CALL DELAY1
ADD A,#00H ;调整显示位(高位)LED
MOV P1,A ;显示高位
CALL DELAY2 ;延时
MOV A,CENTURY_BUFFER;暂存器的数值送A
SWAP A ;低4位送高4位
ANL A,#0F0H ;去掉低4位
ADD A,#01H ;调整显示位(低位)LED
MOV P1,#0FFH ;先关闭LED,以免视觉干扰
CALL DELAY1
MOV P1,A ;显示低位
CALL DELAY2 ;延时
;-显示年份两位资料------------------------
MOV A,YEAR_BUFFER ;暂存器中的数值送A
ANL A,#0F0H ;截取高4位
MOV P1,#0FFH ;先关闭LED,以免视觉干扰
CALL DELAY1
ADD A,#02H ;调整显示位(高位)LED
MOV P1,A ;显示高位
CALL DELAY2 ;延时
MOV A,YEAR_BUFFER ;暂存器的数值送A
SWAP A ;低4位送高4位
ANL A,#0F0H ;去掉低4位
ADD A,#03H ;调整显示位(低位)LED
MOV P1,#0FFH ;先关闭LED,以免视觉干扰
CALL DELAY1
MOV P1,A ;显示低位
CALL DELAY2 ;延时
;-显示月份两位资料------------------------
MOV A,MONTH_BUFFER ;暂存器中的数值送A
ANL A,#0F0H ;截取高4位
MOV P1,#0FFH ;先关闭LED,以免视觉干扰
CALL DELAY1
ADD A,#04H ;调整显示位(高位)LED
MOV P1,A ;显示高位
CALL DELAY2 ;延时
MOV A,MONTH_BUFFER ;暂存器的数值送A
SWAP A ;低4位送高4位
ANL A,#0F0H ;去掉低4位
ADD A,#05H ;调整显示位(低位)LED
MOV P1,#0FFH ;先关闭LED,以免视觉干扰
CALL DELAY1
MOV P1,A ;显示低位
CALL DELAY2 ;延时
;-显示日两位资料------------------------
MOV A,DATE_BU ......

>>返回讨论的主题



  发表回复
用户名   *您没有注册?
密码   *
验证码   * .
标题   *
心情
随便说说    我回答你    最新发现    得意的笑   
气死我了    真是没劲    坚决同意    表示反对   
大家过来    好奇怪哟    懒得理它    大家小心   
文件上传
内容


字体:      字体大小:    颜色:
粗体 斜体 下划线 居中 超级连接 Email连接 图片 Flash图片 Shockwave文件 realplay视频文件 Media Player视频文件 QuickTime视频文件 引用 飞行字 移动字 发光字 阴影字 查看更多的心情图标 背景音乐
点击加入表情
                         
选项
有回复时用短消息通知您?

   




老古网执行:78毫秒 最大:5047毫秒 查询6次