ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:16.12KB ,
资源ID:10597465      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10597465.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ds1302汇编语言的驱动程序.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

ds1302汇编语言的驱动程序.docx

1、ds1302汇编语言的驱动程序第一个汇编语言程序(DS1302的驱动程序)时钟芯片DS1302 的程序(汇编);时钟芯片DS1302 的程序(汇编);*; 模块名称:DS1302.a51; 功 能:实时时钟模块 时钟芯片型号:DS1302; 说 明:(修改版); 程序设计:;*/T_CLK Bit P3.2 ;实时时钟时钟线引脚T_IO Bit P3.3 ;实时时钟数据线引脚T_RST Bit P3.4 ;实时时钟复位线引脚;*SECOND EQU 50H ;秒寄存器MINUTE EQU 51H ;分寄存器HOUR EQU 52H ;时寄存器DAY EQU 53H ;号寄存器MONTH EQU

2、 54H ;月寄存器WEEK EQU 55H ;星期寄存器YEAR EQU 56H ;年寄存器 ORG 0000H SJMP START ORG 0040H ;*;功 能:给秒 分 时 日 月 星期 年赋初值;*START: MOV SECOND,#00H MOV MINUTE,#06H MOV HOUR,#17H MOV DAY,#00H MOV MONTH,#00H MOV WEEK,#00H MOV YEAR,#00H LCALL SET1302 LCALL GET1302 LCALL DISPLAYMAIN: MOV R5,#25 MOV TMOD,#01H MOV TH0,#63H

3、;置定时器初值(定时40ms) MOV TL0,#0C0H SETB TR0 ;启动定时器0LP1: JBC TF0,LP2 ;查询计数溢出 SJMP LP1 ;未到40 ms继续计数LP2: MOV TH0,#63H ;重新置定时器初值 MOV TL0,#0C0H LCALL DISPLAY ;显示 DJNZ R5,LP1 ;未到1 S继续循环 LCALL GET1302 ;每过1s从DS1302读取一次时间 MOV R5,#25 SJMP LP1DISPLAY: MOV R3,SECOND LCALL CHAG MOV P2,#0FFH MOV P0,R2 ;段码 SETB P2.0 ;位

4、码 NOP CLR P2.0 LCALL DELAY MOV P2,#0FFH MOV P0,R3 SETB P2.1 NOP CLR P2.1 LCALL DELAY MOV R3,MINUTE LCALL CHAG MOV P2,#0FFH MOV P0,R2 ;段码 SETB P2.2 ;位码 NOP CLR P2.2 LCALL DELAY MOV P2,#0FFH MOV P0,R3 SETB P2.3 NOP CLR P2.3 LCALL DELAY MOV R3,HOUR LCALL CHAG MOV P2,#0FFH MOV P0,R2 ;段码 SETB P2.4 ;位码 NO

5、P CLR P2.4 LCALL DELAY MOV P2,#0FFH MOV P0,R3 SETB P2.5 NOP CLR P2.5 LCALL DELAY RETDELAY: MOV R7,#50 D1: MOV R6,#10 D2: DJNZ R6,$ DJNZ R7,D1 RET CHAG: PUSH ACC ;低字节放入R2,高字节放入R3 MOV A,R3 ANL A,#0FH MOV R2,A MOV A,R3 SWAP A ANL A,#0FH MOV R3,A MOV DPTR,#DATATAB MOV A,R2 MOVC A,A+DPTR MOV R2,A MOV A,R

6、3 MOVC A,A+DPTR MOV R3,A POP ACC RETDATATAB: DB 0B7H,90H,3DH,0B9H,9AH,0ABH,0AFH,0B0H,0BFH,0BBH;*;子程序名:Set1302;功 能:设置DS1302 初始时间,并启动计时。;说 明:;调 用:RTInputByte;入口参数:初始时间在:Second,Minute,Hour,Day,Month,Week.YearL(地址连续);出口参数:无;影响资源:A B R0 R1 R4 R7;设 计:Reuben 日 期:2009-04-17;修 改: 日 期:;*SET1302: CLR T_RST CLR

7、 T_CLK SETB T_RST MOV B, #8EH ;控制寄存器 LCALL RTInputByte MOV B, #00H ;写操作前WP=0 LCALL RTInputByte SETB T_CLK CLR T_RST MOV R0, #Second; MOV R7, #7 ;秒 分 时 日 月 星期 年 MOV R1, #80H ;秒写地址S13021: CLR T_RST CLR T_CLK SETB T_RST MOV B, R1 ;写秒 分 时 日 月 星期 年 地址 LCALL RTInputByte MOV A, R0 ;写秒数据 MOV B, A LCALL RTIn

8、putByte INC R0 INC R1 INC R1 SETB T_CLK CLR T_RST DJNZ R7, S13021 CLR T_RST CLR T_CLK SETB T_RST MOV B, #8EH ;控制寄存器 LCALL RTInputByte MOV B, #80H ;控制,WP=1,写保护 LCALL RTInputByte SETB T_CLK CLR T_RST RET;*;子程序名:Get1302;功 能:从DS1302 读时间;说 明:;调 用:RTInputByte,RTOutputByte;入口参数:时间保存在:Second,Minute,Hour,Day

9、,Month,Week.YearL;出口参数:无;影响资源:A B R0 R1 R4 R7;设 计:Reuben 日 期:2009-04-17;修 改: 日 期:;*GET1302: MOV R0, #SECOND; MOV R7, #7 MOV R1, #81H ;秒地址G13021: CLR T_RST CLR T_CLK SETB T_RST MOV B, R1 ;秒 分 时 日 月 星期 年 地址 LCALL RTInputByte LCALL RTOutputByte MOV R0, A ;秒 INC R0 INC R1 INC R1 SETB T_CLK CLR T_RST DJN

10、Z R7, G13021 RET;*;功 能:写1302一字节 (内部子程序);*RTInputByte: MOV R4, #8 Inbit1: MOV A, B RRC A MOV B, A MOV T_IO, C SETB T_CLK CLR T_CLK DJNZ R4, Inbit1 RET;*;功 能:读1302一字节 (内部子程序);*RTOutputByte: MOV R4, #8 Outbit1: MOV C, T_IO RRC A SETB T_CLK CLR T_CLK DJNZ R4, Outbit1 RET END第二个ds1302驱动程序;* DS1302 端口位定义

11、* IO_DATA BIT P1.1 ; 数据传送总线 SCLK BIT P1.0 ; 时钟控制总线 RST BIT P1.2 ; 复位总线;-;DS1302 初始化子程序; (R0)=数据 (R1)=地址;-PROSET: CLR RST ;DS1302复位 CLR SCLK NOP NOP SETB RST MOV R1,#90H ;写充电寄存器 MOV R0,#0ABH LCALL WRITE RET;=;写 DS1302 子程序;=WRITE: CLR SCLK NOP NOP SETB RST NOP MOV A,R1 MOV R2,#08HWRI_01: RRC A ;传输地址到D

12、S1302 NOP NOP CLR SCLK NOP NOP MOV IO_DATA,C NOP NOP SETB SCLK NOP NOP DJNZ R2,WRI_01 CLR SCLK NOP NOP MOV A,R0 MOV R2,#08HWRI_02: RRC A ;传输数据到DS1302 NOP CLR SCLK NOP NOP MOV IO_DATA,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 NO

13、P SETB RST NOP NOP MOV A,R1 MOV R2,#08HREAD_01: RRC A NOP ;先传输地址到DS1302 MOV IO_DATA,C NOP NOP SETB SCLK NOP NOP CLR SCLK NOP NOP DJNZ R2,READ_01 NOP NOP SETB IO_DATA CLR A CLR C MOV R2,#08HREAD_02: CLR SCLK NOP NOP MOV C,IO_DATA NOP NOP RRC A ;再从DS1302接收数据 NOP NOP SETB SCLK NOP NOP DJNZ R2,READ_02 M

14、OV R0,A CLR RST 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

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1